selecteer tweede row in db?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Groovez acid

groovez acid

16/04/2012 21:37:41
Quote Anchor link
hallo,

met dit regeltje haal ik de speler uit de database met de meeste punten


$cupchecker = mysql_fetch_array(mysql_query("SELECT id FROM members order by ffapoints desc"));
$cupholder = $cupchecker[id];

maar kan ik ook het twee record op die manier opvragen?

bedankt !
 
PHP hulp

PHP hulp

28/03/2024 15:03:51
 
Frank WD

Frank WD

16/04/2012 21:45:01
Quote Anchor link
LIMIT 2 toevoegen aan je Query moet dan volstaan.
 
Sjoerd Rosdorff

Sjoerd Rosdorff

16/04/2012 22:44:30
Quote Anchor link
Met een while loop, kan je meerdere records ophalen die uit je query komen.
Het is overigens netter om je code als volgt neer te zetten:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
$sql="SELECT id FROM members order by ffapoints desc";
$result = mysql_query($sql);

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
$cupholder = $row[0];
}
 
Jeroen VD

Jeroen VD

16/04/2012 22:49:46
Quote Anchor link
Hoezo netter? Ik zie kleine letters in je sql commandos, en alles achter elkaar. Niet fout, maar ook niet net.

Verder ontbreekt foutafhandeling
 
Groovez acid

groovez acid

17/04/2012 16:03:58
Quote Anchor link
ik vind mijn manier ook overzichtelijker, op het moment :)

maar euh, met LIMIT heb ik dadelijk het tweede record dan? zonder een loop te moeten maken? want dat is waar ik achter zocht ...
 
Wouter J

Wouter J

17/04/2012 16:06:03
Quote Anchor link
@Groovez, waarom wil je geen while loop? Je wilt alleen het 2e resultaat krijgen? Want als je het 1e en het 2e resultaat wilt moet je LIMIT 2 gebruiken (dat zegt, krijg de eerste 2) en als je alleen het 2e resultaat wilt moet je LIMIT 1,2 (dat zegt, krijg alle resultaten vanaf het 1e tot en met de 2e en dus krijg je alleen de 2e).
 
Sjoerd Rosdorff

Sjoerd Rosdorff

17/04/2012 19:33:28
Quote Anchor link
Jeroen vd op 16/04/2012 22:49:46:
Hoezo netter? Ik zie kleine letters in je sql commandos, en alles achter elkaar. Niet fout, maar ook niet net.

Verder ontbreekt foutafhandeling


Ik heb geleerd van een zeer ervaren programmeur, dat je de query en daadwerkelijke uitvoering er van dient te scheiden, omdat dit veiliger is.
Netter was daarbij inderdaad een onjuiste omschrijving.
 
Wouter J

Wouter J

17/04/2012 19:41:49
Quote Anchor link
Quote:
Ik heb geleerd van een zeer ervaren programmeur, dat je de query en daadwerkelijke uitvoering er van dient te scheiden, omdat dit veiliger is.

Je hebt wel het juiste geleerd, alleen niet waarom. Er is voor PHP namelijk totaal geen verschil of je nou de query direct in de functie typt of doormiddel van een variabele in de functie stopt.
Het verschil is wel dat mocht er iets fout gaan en je wilt debuggen dat je dan de query makkelijker kunt echoën om te zien of die wel is zoals het lijkt.
Tevens mis je elke form van foutafhandeling, dus zal deze 'goede gewoonte' totaal onzinnig zijn omdat je op deze manier toch niet kunt debuggen.
 
Sjoerd Rosdorff

Sjoerd Rosdorff

17/04/2012 19:52:21
Quote Anchor link
Aha, weer iets geleerd dan.
Ben zelf nog niet lang bezig met MySql, dus heb nog heel veel te leren.
Heb overigens met de beperkte kennis al wel een volledig toernooi systeem weten te bouwen :D

Zie hier: KLIK
 
Wouter J

Wouter J

17/04/2012 19:53:51
Quote Anchor link
Als je wilt weten hoe je goede foutafhandeling maakt moet je eens hier kijken, daar heb ik per query en voor de connectie een script gemaakt die naar mijn mening de correcte manier is: http://github.com/WouterJ/SQL-boilerplate/tree/mysql/
Gewijzigd op 17/04/2012 19:54:22 door Wouter J
 
Obelix Idefix

Obelix Idefix

17/04/2012 22:46:07
Quote Anchor link
@Sjoerd: Een site met frames. Dat is uit de vorige eeuw....
Gewijzigd op 17/04/2012 22:46:57 door Obelix Idefix
 
Groovez acid

groovez acid

17/04/2012 23:06:39
Quote Anchor link
hey wouter
dat is inderdaad wat ik zoek

het rare is het werkt maar half ...

kijk,

op deze manier vraag ik de eerste tweede en derde plaats op in de ranking


$cup1checker = mysql_fetch_array(mysql_query("SELECT id FROM members order by ffapoints desc"));
$cup1holder = $cup1checker[id];

$cup2checker = mysql_fetch_array(mysql_query("SELECT id FROM members order by ffapoints desc LIMIT 1,2"));
$cup2holder = $cup2checker[id];

$cup3checker = mysql_fetch_array(mysql_query("SELECT id FROM members order by ffapoints desc LIMIT 1,3"));
$cup3holder = $cup3checker[id];

en dan achter hun naam dit

if ($mem[id] == $cup1holder)
{
$out[body].="&nbsp;<img src='./images/icons/cup1.png' title='Leader Global FFA Ranking'>";
}
if ($mem[id] == $cup2holder)
{
$out[body].="&nbsp;<img src='./images/icons/cup2.png' title='2nd Pos Global FFA Ranking'>";
}
if ($mem[id] == $cup3holder)
{
$out[body].="&nbsp;<img src='./images/icons/cup3.png' title='3th Pos Global FFA Ranking'>";
}

en het rare is, het geeft dit als resultaat ...
http://www.acidleague.com/League/ffarankings.php
nr 2 heeft de beker van nr3 ook! :s
 
Erwin H

Erwin H

17/04/2012 23:16:56
Quote Anchor link
Dat is niet zo gek....

LIMIT 1,2
haalt 2 records op vanaf nummer 1 (en bedenk dat het eerste record record 0 is)

LIMIT 1,3
haalt 3 records op vanaf nummer 1

Wat je wilt als je het zo doet is LIMIT 1,1 en LIMIT 2,1

Maar wat mij betreft is dat een erg, uhm, hoe zeg ik het netjes.... domme manier. Waarom drie keer een query draaien als het in een keer kan? Gewoon
SELECT id FROM members order by ffapoints desc LIMIT 3
Dan haal je de eerste 3 op, ben je in een keer klaar.
 
Groovez acid

groovez acid

18/04/2012 00:11:29
Quote Anchor link
maar hoe slaag ik meedere vars op dan om later op te vergelijken?
 
Erwin H

Erwin H

18/04/2012 00:27:54
Quote Anchor link
Wel eens van arrays gehoord?
 
Groovez acid

groovez acid

18/04/2012 01:22:30
Quote Anchor link
ja ik heb het ontdenkt ! :)
maar nu probeer ik arrays te kopieren en een andere naam te geven, maar zonder resultaat
check men andere post aub, die kwam ook terecht op het gebruik van arrays .

bedankt !
 
Erwin H

Erwin H

18/04/2012 08:51:55
Quote Anchor link
Dan sluit ik me aan bij het antwoord van Obelix in die post. Ga alsjeblieft eerst serieus tijd steken in het leren van de taal. Waarom zouden wij anders moeite erin steken, als jij het schijnbaar niet de moeite waard vindt?
 



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.