mysql_query select laatste 10
mysql_query("SELECT * FROM `[users]` ORDER BY signup DESC LIMIT 0,10");
alleen dan laat hij de 10 spelers zien met de hoogste signup, kan je ook maken dat hij alleen de laatste 10 laat zien?
zo ja, hoe?
Laatste 10 gebruikers die zich hebben aangemeld ofzo?
ik zal het waarschijnlijk wel weer verkeerd doen, maar ik heb dit en dat werkt niet:
SELECT * FROM `[users]` ORDER BY signup ASC 10
SELECT * FROM `[users]` ORDER BY signup ASC 0,10
bijde werken niet
Gewijzigd op 08/05/2011 11:00:03 door Tom aan t Goor
Geen backtics en geen [ ] gebruiken in de query. Geef fatsoenlijke kolom- en veldnamen.
if($_GET['x'] == "signup")
{
echo "<table width=75% align=\"center\"><td class=subTitle colspan=2><b>Nieuwste leden</b></tr></td>";
$bselect = mysql_query("SELECT * FROM `[users]` ORDER BY signup ASC 10");
while($blist = mysql_fetch_assoc($bselect))
{
$brpower = ($blist[signup]);
echo "<tr><td width=70% align=left class=Maintxt><p align=left><b><a href=profile.php?x=$blist[login]>$blist[login]</a></b> <td class=maintxt width=30% align=right> <p align=right><b>$bpower</b></p></tr></td>";
}
}
moet worden
$bselect = mysql_query("SELECT * FROM `[users]` ORDER BY signup ASC LIMIT 0,10");
(Volgens mij is dat wat je bedoeld).
Er staan foute tekens in de query.
ASC 10 kan niet.
Foutafhandeling ontbreekt.
Enkele quotes om de key van een array ontbreken.
Nutteloos copiëren van vars.
Vars horen buiten de quotes.
Ik heb je code opgeschoond voor je en hieronder staan de dingen die ik heb veranderd.
- Ik heb na de <table> tag een <tr> tag ingevoegd omdat je een nieuwe kolom maakt deze kolom moet in een rij staan.
- Ik heb je query opgeschoond. [] weggehaald etc.
- Ik heb je code ge-indent zodat er overzicht in zit.
- Ik heb de value's van je attributes tussen "" gezet.
- Ik heb je "" vervangen door '' en de variabelen buiten de quotes gehaald. Dit is betrouwbaarder/sneller.
- Ik heb in de while lus de <tr> tag en de <td> tag omgedraaid.
- Ik heb in de while lus de eerste <td> tag afgesloten voordat de volgende <td> tag geopend werd.
- Ik heb de <table> afgesloten na de while lus.
Ik ga hieronder de uiteindelijke code zetten, maar ik zou als ik jou was eerst je even verdiepen in (X)HTML voordat je begint met PHP.(Sowieso zal ik niet iets met databases gaan doen aangezien je code daaromheen sterk moet zijn i.v.m. SQL injections)
Nou de code dan maar :D
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
if($_GET['x'] == 'signup'){
echo '<table width="75%" align="center"><tr><td class="subTitle" colspan="2"><b>Nieuwste leden</b></td></tr>';
$bselect = mysql_query("SELECT * FROM `users` ORDER BY signup ASC 0,10");
while($blist = mysql_fetch_assoc($bselect)){
$brpower = ($blist['signup']);
echo '<tr><td width="70%" align="left" class="Maintxt"><p align="left"><a href="profile.php?x=', $blist['login'], '"><b>', $blist['login'], '</b></a></td><td class="maintxt" width="30%" align="right"><p align="right"><b>', $bpower, '</b></p></td></tr>';
}
echo '</table>';
}
?>
if($_GET['x'] == 'signup'){
echo '<table width="75%" align="center"><tr><td class="subTitle" colspan="2"><b>Nieuwste leden</b></td></tr>';
$bselect = mysql_query("SELECT * FROM `users` ORDER BY signup ASC 0,10");
while($blist = mysql_fetch_assoc($bselect)){
$brpower = ($blist['signup']);
echo '<tr><td width="70%" align="left" class="Maintxt"><p align="left"><a href="profile.php?x=', $blist['login'], '"><b>', $blist['login'], '</b></a></td><td class="maintxt" width="30%" align="right"><p align="right"><b>', $bpower, '</b></p></td></tr>';
}
echo '</table>';
}
?>
Gewijzigd op 08/05/2011 11:59:19 door John Doe
gebruik geen wildcard (*), gebruik geen backticks (`), foutafhandeling ontbreekt
PHP Jasper op 08/05/2011 12:02:23:
gebruik geen wildcard (*), gebruik geen backticks (`), foutafhandeling ontbreekt
Als je het tegen mij had ik weet niet echt welke velden hij precies wil gaan gebruiken en ik heb de backticks ook maar laten staan omdat ik niet weet wat hij precies van plan is met de query.
@PHP Japser: Ga je nu zo in elk topic reageren zonder ook maar enigszins aandacht te steken in de vraag van de topicstarter?
Kees Schepers op 08/05/2011 13:03:15:
Maar als je de nieuwste 10 leden wilt, dan moet je volgens mij DESC gebruiken als 'signup' een datetime veld is of timestamp (MySQL).
@PHP Japser: Ga je nu zo in elk topic reageren zonder ook maar enigszins aandacht te steken in de vraag van de topicstarter?
@PHP Japser: Ga je nu zo in elk topic reageren zonder ook maar enigszins aandacht te steken in de vraag van de topicstarter?
Dat dacht ik eerst ook maar hij zegt dat bij DESC de eerste 10 worden weergegeven dus is ASC de laatste.
de vraag is toch al beantwoord? Ik zeg wat er nog aangepast moet worden.
PHP Jasper op 08/05/2011 13:19:04:
de vraag is toch al beantwoord? Ik zeg wat er nog aangepast moet worden.
In principe werkt dit prima wildcards kunnen gewoon gebruikt worden en backticks is al genoemd dus in principe zeg je niets nieuws.
Wildcards zijn niet aangeraden, ze werken trager.
PHP Jasper op 08/05/2011 13:25:57:
Wildcards zijn niet aangeraden, ze werken trager.
Dat weet ik maar gezien zijn ervaringen met HTML, PHP en MySQL lijkt me dat niet echt het grootste probleem. En ikzelf gebruik altijd wildcards totdat ik me hele script af heb daarna kijk ik wat ik nodig heb en pas ik het aan.