Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: Kód funguje len 1x

PHP PHP Kód funguje len 1x American English version English version

Aktivity (1)
Avatar
Marek Burda
Člen
Avatar
Marek Burda:21. dubna 12:49

Zdravím :) Pracujem na maličkom projekte kde aktuálne potrebujem vypísať zopár vecí. Prečo mi prvý riadok echa funguje ale ak znovu zavolám echo tak už nefunguje ?
<?php
mysql_connect("xxxx","xx­xxx","xxxxx") or die("Unable to connect");
mysql_select_db("xxxxxx­") or die("Unable to choose database");

$select = mysql_query("SELECT * FROM xxxx WHERE id='".$_SESSI­ON["id"]."' ;");
while( $row = mysql_fetch_as­soc($select))

echo "".$row["name"]­."  ";
echo "".$row["name"]­."  ";

?>

Poprípade existuje jednoduchší spôsob ako vypísať veci zo sessionu ?
Skúsil som použiť toto :
echo "".$_SESSION["na­me"]."  ";
No tam je problém že ak zmením napr to name v databáze tak už ho na stránke neaktualizuje. Pomôže len odhlásenie a znovu prihlásenie (pri prihlásení mám identifikovanú premenu čo znamená to name a kde ho má kód hľadať takto tu :)
$sql_dotaz = "SELECT * FROM xaxax WHERE name = '".$name."' AND password = '".$password."';";
mysql_select_db("xa­xaxa") or die("Unable to choose database");
$vysledok = mysql_query($sql_do­taz) or die(mysql_error());
echo mysql_num_row­s($vysledok);
if(mysql_num_row­s($vysledok) == 1){
$name = mysql_fetch_a­rray($vysledok);
$_SESSION["name"] = $name["name"];

Príjde mi to takto moc zložité aby som musel každú vec identifikovať pri logine ved predsa by mal php vedieť že ak ťahá zo sessionu tak vie odkiaľ ťahá. Ano viem že to mám určite zle tak preto potrebujem poradiť. ďakujem veľmi pekne

 
Odpovědět 21. dubna 12:49
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Marek Burda
Matúš Petrofčík:21. dubna 12:56

Marečku, tam hore nad tým poľom kde si písal ten text je taká značka </>, pomocou ktorej sa vkladajú kódy do komentárov, aby sa dali lepšie čítať.

Nahoru Odpovědět  +1 21. dubna 12:56
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Marek Burda
Člen
Avatar
Marek Burda:21. dubna 13:00

Jaj prepáčte :) Zabudol sam nato úplne pretože som su späť po roku a pol :D Upraviť to už asi nejde čo ?

 
Nahoru Odpovědět 21. dubna 13:00
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Marek Burda
Matúš Petrofčík:21. dubna 13:02
<?php
mysql_connect("xxxx","xxxxx","xxxxx") or die("Unable to connect");
mysql_select_db("xxxxxx") or die("Unable to choose database");

$select = mysql_query("SELECT * FROM xxxx WHERE id='".$_SESSION["id"]."' ;");
while( $row = mysql_fetch_assoc($select))

echo "".$row["name"]."  ";
echo "".$row["name"]."  ";

?>

by som napísal takto:

<?php
mysql_connect("xxxx","xxxxx","xxxxx") or die("Unable to connect");
mysql_select_db("xxxxxx") or die("Unable to choose database");

$select = mysql_query("SELECT * FROM xxxx WHERE id='" . $_SESSION["id"] . "'");

while( $row = mysql_fetch_assoc($select)) { // dal som to do kučeravých zátvoriek
        echo $row["name"];
        echo $row["name"];
}

?>

Keď si to nemal v tých kučeravých zátvorkách, tak sa while cyklus vzťahoval iba na to prvé echo. Teda aspoň to si myslím. Skús to takto v tých zátvorkách.

Btw. nemal by si používať mysql_* funkcie, už sú zastarané. Namiesto nich sa používa mysqli_* (všimni si to i) alebo PDO (v tutoriáloch sa používa).

Taktiež nemusíš zbytočne pridávať prázdne reťazce k tomu čo vypisuješ :)

echo "".$row["name"]."  "; // ee, načo?
echo $row["name"]; // stačí nie?
Editováno 21. dubna 13:03
Nahoru Odpovědět 21. dubna 13:02
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Marek Burda
Člen
Avatar
Marek Burda:21. dubna 13:09

Super už to vypíše aj druhýkrát. Problém ale nastane znovu ak sa budem snažiť vypísať to name mimo kučeravých zátvoriek napríklad niekde úplne inde na tej istej stránke.... čo potom ? ..

 
Nahoru Odpovědět 21. dubna 13:09
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Marek Burda
Matúš Petrofčík:21. dubna 13:11

Poprípade existuje jednoduchší spôsob ako vypísať veci zo sessionu ?
Skúsil som použiť toto :

echo "".$_SESSION["name"]."  ";

No tam je problém že ak zmením napr to name v databáze tak už ho na stránke neaktualizuje. Pomôže len odhlásenie a znovu prihlásenie (pri prihlásení mám identifikovanú premenu čo znamená to name a kde ho má kód hľadať takto tu :)

No ja by som do session ukladal iba identifikátor prihláseného užívateľa: id. Ak chceš potom vypísať meno užívateľa, tak je dobré si ho z databázy za každým vybrať (samozrejme pri jednom zobrazení stránky len raz :) ).

Keď to chceš takto v session, tak si to meno v session pri tej zmene mena aktualizuj.

Nahoru Odpovědět 21. dubna 13:11
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Marek Burda
Matúš Petrofčík:21. dubna 13:14

Tak to nerob cez cyklus while :) Ten až skončí, zanikne aj premenná $row.

$row = mysqli_fetch_row($result);

Jo a všimni si tlačíko "Odpovědět", inak mi neprídu upozornenia že si mi odpovedal :)

Editováno 21. dubna 13:17
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 21. dubna 13:14
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Marek Burda
Člen
Avatar
Marek Burda:21. dubna 13:19

Teraz klape už všetko :) A pritom stačilo ,,zmazať jedno slovíčko´´ a to while :D Ďakujem veľmi pekne som rád že táto komunita mi tu vždy pomôže ak je nejaký problém :D Ešte raz ďakujem :) Keby niečo ozvem sa

 
Nahoru Odpovědět 21. dubna 13:19
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Marek Burda
Matúš Petrofčík:21. dubna 13:20

Nz, skús sa pozrieť na http://www.itnetwork.cz/php/databaze, je tam pekne vysvetlená práca s DB pomocou PDO :)

Nahoru Odpovědět 21. dubna 13:20
obsah kocky = r^2 ... a preto vlak drnká
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.