Ik zou mijn god niet weten hoe ik dit moet maken maar heb toch een poging gedaan!
Als aller eerst wat ik graag zou willen: een lijst van 3 kolommen uit 1 database, deze bevat een username, totaal behaalde punten en totaal level.
Dit moet per user allemaal naast elkaar staan en dan het liefst 30 op 1 pagina.
Ook moet dit in de volgorde van beste naar de slechte gebruiker.
Het lijkt allemaal veel maar ik kom er dus NIET uit.. mijn tabel heet hs_users
De volgende code heb ik ergens op internet gevonden en aangepast maar het lukt me maar niet!
<?php
include ('config.php');
$sql = mysql_query("SELECT overall_xp,username FROM hs_users ORDER BY ID DESC LIMIT 10")or die(mysql_error());
WHILE ($rows = mysql_fetch_assoc($sql))
{
echo '
Id: '.$rows['overall_xp'].' <br />
Game: '.$rows['username'].' <br />
Genre: '.$rows['Genre'].' <br />
';
}
?>
Als je 3 zaken wilt weergeven vanuit de database, moet je deze 3 kolommen dus ook opvragen bij de database.
Dus SELECT overall_xp, username, genre
Daarnaast als je 30 resultaten wil, is het niet slim om te stellen 'LIMIT 10'. 'LIMIT 30' is dan logischer.
Ditzelfde geldt voor je vraag om het te sorteren van beste naar slechte gebruiker. Ik neem aan dat je dat bepaalt dmv overall_xp, dus doe je dan ook:
$sql = mysql_query("SELECT overall_xp,username FROM hs_users ORDER BY ID DESC LIMIT 10")or die(mysql_error());
'or die' zou ik eruit halen, in het normale leven verwens je iemand namelijk ook niet gelijk dood als iets niet lukt. Al is het voor het debuggen inderdaad handig, later niet meer.
Wat is er niet duidelijk aan Ger? Ik heb mijn uiterste best gedaan om het te beschrijven..
[size=xsmall]Toevoeging op 14/08/2013 18:19:48:[/size]
Hey Ramon,
De code heb ik een klein beetje aangepast en er het volgende van gemaakt:
<?php
include ('config.php');
$query = "SELECT overall_xp, username, FROM hs_users ORDER BY overall_xp LIMIT 30";
if($sql= mysql_query($query)){
if(mysql_num_rows($sql) > 0){
echo '<table>';
while($result = mysql_fetch_assoc($sql)){
echo '<tr>
<td>'.$result['overall_xp'].'</td>
<td>'.$result['username'].'</td>
</tr>';
}
echo '</table>';
}
}
else{
echo mysql_error();
}
Maar nu krijg ik de volgende error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM hs_users ORDER BY overall_xp LIMIT 30' at line 1
Kijk dit is nu duidelijk ;-). "Het lukt niet" zegt niet zoveel, wat lukt er niet is veel beter.
Hier heb je dus in de query een komma achter username staan die daar niet thuis hoort.
Ah bedankt Ger het is me geluk en hij displayed nu een mooie lijst!
Alleen is het nu zo dat hij de mensen met het laagste getal boven aan zet en het hoogste getal onderaan.
En hoe kan ik dit met meerdere paginas maken? Ook zodat als er mee bij komen er meer paginas bij komen.
ORDER BY is in SQL standaars ASC (oplopend) als je niets opgeeft. Dus ORDER BY ... DESC als je het aflopend wilt.
Even een snel pagination voorbeeldje:
Bedankt Ger, door het toevoegen van DESC is gelukt!
Met het paginatie script krijg ik echter wel een error..
Notice: Undefined variable: link in /home/luukwa/domains/freedomx.biz/public_html/high/lijst2.php on line 4 Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /home/luukwa/domains/freedomx.biz/public_html/high/lijst2.php on line 4 Warning: mysqli_fetch_row() expects parameter 1 to be mysqli_result, null given in /home/luukwa/domains/freedomx.biz/public_html/high/lijst2.php on line 5
Ja, ik heb mezelf voor genomen geen mysql_* functies meer te gebruiken in codes die ik hier op het forum plaats, die gaan vervallen, en kan je dus beter bij nieuwe scripts nu al overschakelen naar mysqli en/of PDO.