Ik lees zo "$aantal = mysql_num_rows($results);" het aantal uit het database. Nu heb ik een extra kolom 'totaalnu' toegevoegd. Hier wordt bij elke nieuwe rij +1 bij opgeteld.
Nu wil ik dat bij een bepaald aantal, de telling weer opnieuw begint.
Dus in de kolom totaalnu, staat dadelijk 1 t/m 25 ofzo, en als je bij 25 bent, begint de volgende rij weer bij 1 te tellen?
Hoe kan ik dit nu zo aanpassen? Ik heb het al zo geprobeerd:
Waarom zou je een UPDATE-query uitvoeren? Er valt niets te updaten, het aantal rijen dat je hebt, sla je bv. al nooit op in de database, de database berekent dit op het moment dat je het nodig hebt.
Waarom wil je dit trouwens gaan doen? Het doel is mij nu niet duidelijk
Ik wil bijv elk 25 en elk 100ste rij hebben.
En dan weer opnieuw? Het is misschien niet zo slim nee, om een losse kolom te gebruiken, maar ik wist niet of het slim was om hiervoor gewoon de id's te gebruiken?
Heb je een idee, hoe ik alleen de 25 en de 100ste rij eruit kan halen (bijv)
En dan elke keer opnieuw, dus bijv dan weer bij 125 en 200, en zo door?
Chupskie, in een database hoeft data niet gesorteert te staan. Het is dan ook moeilijk om te spreken van de '25e' of '100e' rij aangezien dat natuurlijk relatief is. Bij het selecteren van gegevens uit de database kun je de resultaat-set natuurlijk wel sorteren.
Er bestaat geen 25e of 100e rij in de database. Er kan wel een rij zijn met id 25 en een andere met id 100, maar dit betekent helemaal niets. Het ligt maar net aan de sortering wat de nu het 25e record is. Ga je bv. op naam sorteren of op geboortedatum? Dit zal totaal verschillende resultaten opleveren m.b.t. wat nu het 25e record is.
De begrippen 25e en 100e zijn dus pas van toepassing nadat je de juiste records hebt opgevraagd en deze op de gewenste volgorde hebt gezet. Het kan dus best zijn dat van de 23.456.287 records, er slechts 3 records aan jouw voorwaarde voldoen. En daar sta je dan met jouw plan om het 25e record weer te geven...
Ik bedoel precies hetzelfde als wat Frank zegt. Hoezo wil je per se de 25e en 100e rij hebben? Het hangt maar net van je select query af welk record op de plaats van rij 25 en rij 100 in de resultaat-set komt te zitten.
Het sorteren kun je gewoon doen tijdens het selecteren:
SELECT kolom1, kolom2
FROM tabel
ORDER BY kolom 1 ASC
Nu worden alle gegevens records met gegevens uit kolom1 en kolom2 geselecteerd en oplopend gesorteerd aan de hand van kolom1. Maar stel nu dat je had gesorteerd op kolom2, dan had de 25e rij uit je resultaat-set hoogstwaarschijnlijk een ander record bevat.
Nou ik heb bijvoorbeeld deze query (totaalnu was de kolom die constant bij elke rij +1 erbij kreeg.)
SELECT totaalnu FROM kopers ORDER BY totaalnu DESC
Nou wou ik eigenlijk gewoon dat elke:
25 en 100
125 en 200
225 en 300
325 en 400
enz..
Bijvoorbeeld een bericht krijgen.
Ik dacht dat los ik gewoon op met een if else..
if($row['totaalnu'] == "25"){
echo "Jij bent de gelukkige rij";
}else{
echo "de rest van de rijen hebben pech :P";
}
Maarjah, als we dan bij id 125 zitten, dan pakt ie dit niet meer..
Daarom dacht ik, in een bepaalde kolom getallen 1 opslaan en bij elke nieuwe rij +1 erbij optellen in die kolom. En dan zo tot 100, en dan dat die rij weer opnieuw begint bij 1.
Kan dit? Ik hoop dat jullie nu snappen wat ik wil bereiken!
De kolom 'totaalnu' kun je weggooien, de inhoud van deze kolom heeft namelijk geen enkele waarde.
Wanneer jij om de 25 rijen een berichtje wilt weergeven, dan laat je in de while-loop gewoon een tellertje meelopen.
<?
$i = 0;
while($row = mysql_fetch_assoc($result)){
if($i == 25){
echo 'Jij bent de gelukkige rij: '.$row['naam'];
$i = 0;
}
else {
echo $row['naam'];
$i++;
}
}
?>
Niet getest
Stel dat, dat ik nu bij 5 de rij, jij bent de gelukkig wil laten zien.
Dan pakt hij dit pas als de 8ste rij wordt toegevoegd.
En daarna blijft bij elke nieuwe rij, dit bericht staan?
Terwijl dat bericht dan weer weg moet gaan, en pas weer te voorschijn moet komen bij 5 rijen daarna bijvoorbeeld?