NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: cykly

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Tomas Novotny Dis:4.2.2017 19:16

Ahoj, již delší dobu řeším problém - potřeboval bych pošťouchnout...
mám v db 2 tabulky (seznam hráčů,hry)
potřeboval bych z tama vytáhnout každého hráče a postupně do pole hodit body, které získal během zápasů.

<?php
$con=mysqli_con­nect("localhos­t", "tom", "tomdb", "tom");

$sql1 = "SELECT name FROM hraci";
$result1 = mysqli_query($con, $sql1);

$sql2 = "SELECT body FROM hry WHERE winner = '$row1[0]' ";
$result2 = mysqli_query($con, $sql2);

while ($row1 = mysqli_fetch_row($re­sult1))
while ($row2 = mysqli_fetch_row($re­sult2))
echo "$row1[0] <br>";
?>

---čekal bych že první while($row1.....) mi postupně vybere každého hráče a druhý while($row2... projde hry, které odehrál nejdřív 1. hráč, poté 2. hráč...atd.
Problém je, že mi nějak nefunguje WHERE winner...
Díky za cokolv :-)

 
Odpovědět
4.2.2017 19:16
Avatar
Tomas Novotny Dis:4.2.2017 19:24

ještě doplním - pokud za where zadám jméno, třeba 'tom', tak mi to funguje
echo "'$row1[0]' "; //mi vyhodí taky správny jméno...

 
Nahoru Odpovědět
4.2.2017 19:24
Avatar
Odpovídá na Tomas Novotny Dis
Neaktivní uživatel:4.2.2017 19:57

Ahoj, čeho se vlastně snažíš docílit?

Nahoru Odpovědět
4.2.2017 19:57
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Tomas Novotny Dis:4.2.2017 20:01

aby mi to fungovalo :-D
ideálně po pár úpravách pole ve formátu jméno[body za hry]
tom[1,2,0,2,2,1 ...]
david[1.0.2.0.0.1 ...]

 
Nahoru Odpovědět
4.2.2017 20:01
Avatar
Pavel Jelínek:6.2.2017 16:52

To je proto, že pole $row1 čteš dříve, než jej naplníš. Pokud druhý select voláš před jakýmkoli while, pak se provede jen jednou. Ty jej ale chceš volat tolikrát, kolik najdeš hráčů, že?

Můžeš:

  1. Druhý select volat zvlášť pro každého hráče, pak ale ten select musí být uvnitř vnějšího cyklu:
$result1 = ....
while( $row1 = mysqli_fetch_row($result1))
{
   $result2 = ....  ($row1).
   while( $row2 = mysqli_fetch_row($result2))
   {
     echo ...
   }
}
  1. Anebo udělat JOIN select, to bude běžet rychleji, ale vyžaduje to mnohem přesnější porozumění, než možnost a) .

Pokud mně odpovíš, odpověz prosím přímo na můj post, jinak nevím, jak se o odpovědi dozvím. Existuje tady nějaká funkce jako "sledovat toto vlákno fóra"?

Pavel

 
Nahoru Odpovědět
6.2.2017 16:52
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 5 zpráv z 5.