Avatar billede thewizard Nybegynder
22. december 2007 - 00:51 Der er 23 kommentarer og
1 løsning

Ang. loop i loop

mysql_connect("localhost", $username, $password) or die(mysql_error());
    mysql_select_db($database) or die(mysql_error());



// Finder brugerne
    $f = mysql_query("SELECT * FROM game") or die(mysql_error());
    while($d = mysql_fetch_assoc($f)){

$playerID = $d[ID];
$name = $d[name];




// Finder units som brugeren ejer.


   
    $f = mysql_query("SELECT * FROM units WHERE owner='$playerID'") or die(mysql_error());
    while($d = mysql_fetch_assoc($f)){

$amount = $d[amount];



//Spytter alt data ud om den individuelle bruger:
echo "$playerID ";
echo "$name ";   
echo "$amount";
echo "<br>";

      }

      }

    ?>
Avatar billede thewizard Nybegynder
22. december 2007 - 00:51 #1
For helved? Jeg fik trykket opdater. Okay spørgsmålet kommet her:
Avatar billede thewizard Nybegynder
22. december 2007 - 00:54 #2
Jeg har 2 tabeller: game og units.

Game indenholder: ID og name
Units indenholder: Owner (hvem ejer disse units), ID, amount og unit

Min php skal først liste én bruger (første bruger i game-tabellen). Lave loop i units-tabellen for at checke om brugeren har nogen units. Hvis han har det, så list dem - og så tag næste bruger.

Desværre smider den kun én bruger ud, den eneste bruger som har nogen enheder. Den skal naturligvis også liste dem som IKKE har units.
Avatar billede thewizard Nybegynder
22. december 2007 - 00:58 #3
Nogen der er vågne? :).
Avatar billede erikjacobsen Ekspert
22. december 2007 - 01:03 #4
Når du bruger det samme navn, $f, til begge forespørgsler, så er du li'så sikker på at få problemer, som en sushi-spisende blondine der vil gå over storebæltsbroen i tæt tåge en søndag morgen.
Avatar billede thewizard Nybegynder
22. december 2007 - 01:04 #5
Ååh du er genial, erik... Jeg prøver lige.
Avatar billede thewizard Nybegynder
22. december 2007 - 01:06 #6
mysql_connect("localhost", $username, $password) or die(mysql_error());
    mysql_select_db($database) or die(mysql_error());



// Finder brugerne
    $f = mysql_query("SELECT * FROM game") or die(mysql_error());
    while($d = mysql_fetch_assoc($f)){

$playerID = $d[ID];
$name = $d[name];




// Finder units som brugeren ejer.


   
    $ff = mysql_query("SELECT * FROM units WHERE owner='$playerID'") or die(mysql_error());
    while($dd = mysql_fetch_assoc($ff)){

$amount = $dd[amount];



//Spytter alt data ud om den individuelle bruger:
echo "$playerID ";
echo "$name ";   
echo "$amount";
echo "<br>";

      }

      }



Samme resultat :/.
Avatar billede erikjacobsen Ekspert
22. december 2007 - 01:10 #7
(glemte at hun også havde højhælede sko på). Det vil virke fint, som du skriver det her.
Avatar billede j4k0b Nybegynder
22. december 2007 - 01:10 #8
Du kan gøre dit script lidt "lettere" ved kun at lave ét udtræk fra databasen, f.eks.:

SELECT g.ID, g.name, u.amount
FROM game AS g
LEFT JOIN units AS u
ON g.ID = u.owner

Ovenstående giver dig samtlige rækker fra "game" med NULL værdier for rækker, som ikke har en tilsvarende owner i tabellen "units".
Avatar billede thewizard Nybegynder
22. december 2007 - 01:11 #9
Avatar billede erikjacobsen Ekspert
22. december 2007 - 01:11 #10
Jo, det vil virke, hvis du husker at uploade dit script.
Avatar billede thewizard Nybegynder
22. december 2007 - 01:18 #11
Har jeg skam :). Addet "asd" . :)
Avatar billede thewizard Nybegynder
22. december 2007 - 01:19 #12
j4k0b :) er ikke haj til det - så tager den "simple" metode :) Den forstår jeg bedre.
Avatar billede erikjacobsen Ekspert
22. december 2007 - 01:19 #13
Ok, så har du kun "jon" i databasen, der passer i de to tabeller.
Avatar billede thewizard Nybegynder
22. december 2007 - 01:21 #14
ja præcis erikjacobsen - men den skal jo liste alle brugerne - også selvom de ikke har nogen units. :)
Avatar billede thewizard Nybegynder
22. december 2007 - 01:21 #15
Skal lige sige jeg er meget taknemmelig for hjælpen :).
Avatar billede erikjacobsen Ekspert
22. december 2007 - 01:23 #16
Så skal du jo be' den om det. Fx:

    $f = mysql_query("SELECT * FROM game") or die(mysql_error());
    while($d = mysql_fetch_assoc($f)){

    $playerID = $d[ID];
    $name = $d[name];
    echo "$playerID $name<br>";

    $ff = mysql_query("SELECT * FROM units WHERE owner='$playerID'") or die(mysql_error());
    while($dd = mysql_fetch_assoc($ff)){
      $amount = $dd[amount];

      echo " $amount";
      echo "<br>";

      }

      }
Avatar billede thewizard Nybegynder
22. december 2007 - 01:23 #17
Hvis det hjælper, så er dataene i mine tabeller:
Game:
ID     name
1     jon
2     tina
3     kim

Units:
ID     name     amount     owner
1     soldater     54     1
Avatar billede erikjacobsen Ekspert
22. december 2007 - 01:25 #18
Se, det var bedre ;)
Avatar billede thewizard Nybegynder
22. december 2007 - 01:26 #19
Virker, erikjacobsen :)

Men hvordan? Kan ikk se forskellen på dit og mit :).
Avatar billede erikjacobsen Ekspert
22. december 2007 - 01:26 #20
Altså:

1 jon
54
2 tina
3 kim
Avatar billede erikjacobsen Ekspert
22. december 2007 - 01:26 #21
Så må du kigge lidt mere på det. g'nat ;)
Avatar billede thewizard Nybegynder
22. december 2007 - 01:28 #22
Hmmm, sikker på jeg har prøver det du skrev. Men der havde jeg blondine-på-en-bro-fejlen med, naturligvis. Hmm :). Man skal lære hver dag! Tak for hjælpen erikjacobsen, jeg har en milliard spørgsmål de kommende dage, er ved at lære php fra asp :).

Lægger du et svar?
Avatar billede erikjacobsen Ekspert
22. december 2007 - 09:04 #23
Jeg samler slet ikke på point, tak.
Avatar billede thewizard Nybegynder
22. december 2007 - 11:23 #24
:) aha.. okay så, tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester