<table> + 2 x while functies

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ed

Ed

30/10/2007 19:10:00
Quote Anchor link
Hey,

Ik heb een stukje code gekopieerd die overeenkomt met het einde van deze pagina (groep3 & 6):
http://www.bl00d.eu/funtournament/tournamentv3.php

Mijn doel is om de gegevens die ik uit de database krijg via 2 while functies netjes naast elkaar te zetten (1ste while in groep 3 en 2de while in groep 6), ik krijg de juiste resultaat, maar in groep 3 wordt die verdubbeld en in groep 6 wordt het met 4 vermenigvuldigd, ik kan gewoon niet inzien waardoor ik die while functies vervangen kan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<tr>
  <td colspan=6><big><i><center>Group 3:</center></i></big></td>
  <td colspan=6><big><i><center>Group 6:</center></i></big></td>
 </tr>

<?php

 echo'<tr>';

 echo'<td>#</td>';
 echo'<td>Team</td>';
 echo'<td>Won</td>';
 echo'<td>Lost</td>';
 echo'<td>Tie</td>';
 echo'<td>Total</td>';

 echo'<td>#</td>';
 echo'<td>Team</td>';
 echo'<td>Won</td>';
 echo'<td>Lost</td>';
 echo'<td>Tie</td>';
 echo'<td>Total</td>';

 echo'</tr>';

$k3_r3 = "SELECT nickname, won, lost, tie, totalpoints FROM gebruikers WHERE `group`=3 ORDER BY `totalpoints` DESC LIMIT 0,4";
$r_k3_r3 = mysql_query($k3_r3);

while($rij_k3_r3 = mysql_fetch_array($r_k3_r3)){

 $k6_r6 = "SELECT nickname, won, lost, tie, totalpoints FROM gebruikers WHERE `group`=6 ORDER BY `totalpoints` DESC LIMIT 0,2";
 $r_k6_r6 = mysql_query($k6_r6);
 
while($rij_k6_r6 = mysql_fetch_array($r_k6_r6)){

 echo'<tr>';

 echo'<td>#</td>';
 echo'<td>'.$rij_k3_r3[0].'</td>';
 echo'<td>'.$rij_k3_r3[1].'</td>';
 echo'<td>'.$rij_k3_r3[2].'</td>';
 echo'<td>'.$rij_k3_r3[3].'</td>';
 echo'<td>'.$rij_k3_r3[4].'</td>';

 echo'<td>#</td>';
 echo'<td>'.$rij_k6_r6[0].'</td>';
 echo'<td>'.$rij_k6_r6[1].'</td>';
 echo'<td>'.$rij_k6_r6[2].'</td>';
 echo'<td>'.$rij_k6_r6[3].'</td>';
 echo'<td>'.$rij_k6_r6[4].'</td>';
 
 echo'</tr>';
 }
}


?>


</table>


Mocht er iemand weten wat er mis zit, alvast bedankt,

MvG,
Eduard
Gewijzigd op 01/01/1970 01:00:00 door Ed
 
PHP hulp

PHP hulp

28/01/2025 21:18:05
 
Frank -

Frank -

30/10/2007 19:14:00
Quote Anchor link
Offtopic: Zodra jij jouw query wijzigt, loopt jouw output in het honderd. $rij_k3_r3[2] kan dan zomaar ineens een andere waarde hebben dan de lost die jij in gedachten had.

Gebruik $rij_k3_r3['lost'] en mysql_fetch_assoc(), dat voorkomt dit soort zinloze problemen.
 
Joren de Wit

Joren de Wit

30/10/2007 19:14:00
Quote Anchor link
Je onverwachte output komt omdat je een while loop in een while loop hebt staan. Je zult die loops uit elkaar moeten halen en de inhoud los van elkaar moeten tonen...
 
Ed

Ed

30/10/2007 19:26:00
Quote Anchor link
ok, bedankt Frank, heb ik net aangepast;

en daarboven heb ik ook de while in a while van elkaar afgescheiden Blanche, ik had het al eens geprobeerd, maar het bleef/blijft nog steeds een probleem, mijn lay-out is nog steeds niet helemaal zoals het moet zijn,

eerste resultaat staaat wel bij groep 6 maar helemaal onderaan en 2de resultaat is nu overgesprongen naar group 3 onderste rij :s


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$k3_r3 = "SELECT nickname, won, lost, tie, totalpoints FROM gebruikers WHERE `group`=3 ORDER BY `totalpoints` DESC LIMIT 0,4";
$r_k3_r3 = mysql_query($k3_r3);

while($rij_k3_r3 = mysql_fetch_assoc($r_k3_r3)){

 echo'<tr><td>#</td>';

 echo'<td>'.$rij_k3_r3['nickname'].'</td>';
 echo'<td>'.$rij_k3_r3['won'].'</td>';
 echo'<td>'.$rij_k3_r3['lost'].'</td>';
 echo'<td>'.$rij_k3_r3['tie'].'</td>';
 echo'<td>'.$rij_k3_r3['totalpoints'].'</td>';
}

 $k6_r6 = "SELECT nickname, won, lost, tie, totalpoints FROM gebruikers WHERE `group`=6 ORDER BY `totalpoints` DESC LIMIT 0,2";
 $r_k6_r6 = mysql_query($k6_r6);
 
 while($rij_k6_r6 = mysql_fetch_assoc($r_k6_r6)){

 echo'<td>#</td>';
 echo'<td>'.$rij_k6_r6['nickname'].'</td>';
 echo'<td>'.$rij_k6_r6['won'].'</td>';
 echo'<td>'.$rij_k6_r6['lost'].'</td>';
 echo'<td>'.$rij_k6_r6['tie'].'</td>';
 echo'<td>'.$rij_k6_r6['totalpoints'].'</td>';
 
 echo'</tr>';
 }
Gewijzigd op 01/01/1970 01:00:00 door Ed
 
Joren de Wit

Joren de Wit

30/10/2007 19:36:00
Quote Anchor link
Wat jij wilt binnen 1 tabel met twee verschillende sets resultaten, is niet direct mogelijk bij het uitlezen van de data.

Ofwel je maakt er twee verschillende tabellen van die je na elkaar genereert. Ofwel plaats je de gegevens uit de database eerst in 2 array's die je gelijktijdig met een for-loop doorloopt.

ps. Dat laatste zou zoiets worden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
// Gegevens van groep3 in een array stoppen
while($rij = mysql_fetch_assoc($r_k3_r3))
{

    $groep3[] = $rij;
}


// Gegevens van groep6 in een array stoppen
// ...

// Grootste aantal items bepalen

$aantal = count($groep3) > count($groep6) ? count($groep3) : count($groep6);

// Tabelrijen genereren...
for($i = 0; $i < $aantal; $i++)
{

    echo '<tr>';
    // Toon hier de verschillende velden in 1 rij van de tabel
    // dus zowel van groep3 als groep6

    echo '</tr>';
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Martijn B

Martijn B

30/10/2007 19:36:00
Quote Anchor link
Je moet je gewoon 2 tabellen maken voor de gegevens van groep 3 en 6.

Deze tabellen zitten dan weer in een hoofdtabel die 2 kolommen heeft.
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
 
Ed

Ed

30/10/2007 19:44:00
Quote Anchor link
hartelijk bedankt blanche!
 
Ed

Ed

30/10/2007 20:05:00
Quote Anchor link
zo te zien heb ik het toch nog verkeerd begrepen aangezien volgende code, 1 resultaat vermenigvuldigd met 5 bij beide groepen, terwijl er maar 4 verschillende resultaten in groep3 en maar 2 in groep 6 kunnen zijn.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// Gegevens van groep3 in een array stoppen
 $k3_r3 = "SELECT nickname, won, lost, tie, totalpoints FROM gebruikers WHERE `group`=3 ORDER BY `totalpoints` DESC LIMIT 0,4";
 $r_k3_r3 = mysql_query($k3_r3);

  while($rij = mysql_fetch_assoc($r_k3_r3))
  {
    $groep3[0] = $rij['nickname'];
    $groep3[1] = $rij['won'];
    $groep3[2] = $rij['lost'];
    $groep3[3] = $rij['tie'];
    $groep3[4] = $rij['totalpoints'];

  }

 // Gegevens van groep6 in een array stoppen
 $k6_r6 = "SELECT nickname, won, lost, tie, totalpoints FROM gebruikers WHERE `group`=6 ORDER BY `totalpoints` DESC LIMIT 0,2";
 $r_k6_r6 = mysql_query($k6_r6);

  while($rij = mysql_fetch_assoc($r_k6_r6))
  {
    $groep6[0] = $rij['nickname'];
    $groep6[1] = $rij['won'];
    $groep6[2] = $rij['lost'];
    $groep6[3] = $rij['tie'];
    $groep6[4] = $rij['totalpoints'];

  }

 // Grootste aantal items bepalen
 $aantal = count($groep3) > count($groep6) ? count($groep3) : count($groep6);

// Tabelrijen genereren...
for($i = 0; $i < $aantal; $i++)
{
    echo '<tr>';
    echo'<td>#</td>';
    echo'<td>'.$groep3[0].'</td>';
    echo'<td>'.$groep3[1].'</td>';
    echo'<td>'.$groep3[2].'</td>';
    echo'<td>'.$groep3[3].'</td>';
    echo'<td>'.$groep3[4].'</td>';
    echo'<td>#</td>';
    echo'<td>'.$groep6[0].'</td>';
    echo'<td>'.$groep6[1].'</td>';
    echo'<td>'.$groep6[2].'</td>';
    echo'<td>'.$groep6[3].'</td>';
    echo'<td>'.$groep6[4].'</td>';

    // Toon hier de verschillende velden in 1 rij van de tabel
    // dus zowel van groep3 als groep6
    echo '</tr>';
}

echo'</table>';

?>
Gewijzigd op 01/01/1970 01:00:00 door Ed
 
Ed

Ed

31/10/2007 19:36:00
Quote Anchor link
het enigste oplossing dat voor me nu werkt is while te gebruiken per rij/per team, maar dan eindig ik uiteraard met ca 29 whiles tov 8 als ik die methode van jou doorheb
 
Joren de Wit

Joren de Wit

31/10/2007 21:53:00
Quote Anchor link
Het makkelijkste is denk ik om 2 tabellen te genereren die je naast elkaar zet...
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.