Ik ben bezig met een script voor een competitie. Ik heb dus een kolom in mijn database met punten (PT). Eigenlijk is alles gelukt, behalve dan dat ik in die tabel ook de positie neerzet. Ik wil dus kijken wie het hoogst aantal punten heeft en dan in de kolom positie (PT) neerzetten. Dus degene met het hoogst aantal punten moet positie=1 krijgen, degene die daarna het hoogst aantal punten heeft positie=2 enz. Iemand enig idee?
Dat is niet handig. Waarom zou je de positie opslaan, wanneer je op basis van het aantal punten kunt vaststellen wat de positie van iemand is? Berekende gegevens sla je in een goed genormaliseerde database zelden of nooit op.

Kortom, bereken de positie wanneer je deze nodig hebt en sla deze nooit op.
Oké en hoe bereken ik 'm dan?
Edit: Ik kan natuurlijk wel gewoon ORDER BY `PT` DESC doen, maar ik wil dus eigenlijk dat er ook ergens die 1,2,3,4,5 enz. staat!
gooi de punkten in een array met userid als key.. (die is als het goed is toch uniek.. anders is het geen id) gebruik dan sort of natsort om het te sorteren..
Uhm... er staat 'newbie' onder mijn naam, ik heb echt geen idéé hoe ik dat moet doen! Misschien een beetje hulp...?
Edit:
$sql = "SELECT * FROM `stand` ORDER BY `PT` DESC";
$resultaat = mysql_query($sql) or die ("query mislukt");
while ($rij = mysql_fetch_object($resultaat)) {
$teamnaam = ($rij->teamnaam);
$GS = ($rij->GS);
$GW = ($rij->GW);
$GL = ($rij->GL);
$VL = ($rij->VL);
$V = ($rij->V);
$T = ($rij->T);
$PIM = ($rij->PIM);
$PT = ($rij->PT);
Zo haal ik ze uit de DB.
Stap 1: Gooi die gore backtics ` uit je query! En gebruik ze helemaal nooit meer, leveren meer problemen dan oplossingen op.

Stap 2: De kolom PT bestaat niet, je hebt geen positie in de tabel staan, dus ORDER BY punten DESC.

Stap 3: Laat een tellertje meelopen wanneer je de boel gaat echoen of zet de boel in een ordered list. Dan zorgt de browser voor een nummer.

Voorbeeldje met een table:
<?php
// uitvoeren en controleren query, en dan:
$i = 1;
echo '<table>';
while($row = mysql_fetch_assoc($result)){ // In $result staat het resultaat van de query
echo '<tr><td>'.$i.'</td><td>'.$row['punten'].'</td></tr>';
}
echo '</table>';
?>
Frank schreef op 22.11.2006 14:12
Stap 1: Gooi die gore backtics ` uit je query! En gebruik ze helemaal nooit meer, leveren meer problemen dan oplossingen op.

Stap 2: De kolom PT bestaat niet, je hebt geen positie in de tabel staan, dus ORDER BY punten DESC.

Stap 3: Laat een tellertje meelopen wanneer je de boel gaat echoen of zet de boel in een ordered list. Dan zorgt de browser voor een nummer.

Voorbeeldje met een table:
<?php
// uitvoeren en controleren query, en dan:
$i = 1;
echo '<table>';
while($row = mysql_fetch_assoc($result)){ // In $result staat het resultaat van de query
echo '<tr><td>'.$i.'</td><td>'.$row['punten'].'</td></tr>';
$i++;
}
echo '</table>';
?>


je vergeet de teller.. hij staat er in de quote bij..
;)

Was iets te enthousiast, kan gebeuren!
Frank schreef op 22.11.2006 14:30
;)

Was iets te enthousiast, kan gebeuren!


ach ja.. je hebt vast al genoeg domme fouten van mij gezien.. al is dit niet bepaald een fout maar goed.. boeit ook niet zo denk ik

Reageren