Aantal rijen tellen, en dan weer opnieuw vooraan tellen!

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Davy Jansen

Davy Jansen

24/11/2006 19:41:00
Quote Anchor link
Hallo allemaal,

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
if($aantal >= "25"){
 $totaall = "1";
}else{
 $totaall = $row['totaalnu'] + "1";
}

Ik krijg hiermee wel 1tm/25, en daarna ook weer 1.
Maar daarna telt ie niet meer door, naar weer 25 en zo verder?
Gewijzigd op 01/01/1970 01:00:00 door Davy Jansen
 
PHP hulp

PHP hulp

19/11/2024 03:30:35
 
Frank -

Frank -

24/11/2006 20:04:00
Quote Anchor link
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
 
Davy Jansen

Davy Jansen

24/11/2006 20:07:00
Quote Anchor link
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?
 
Frank -

Frank -

24/11/2006 20:18:00
Quote Anchor link
Wat is de 25e en 100ste rij? Wanneer je records gaat verwijderen, verandert dit.
 
Joren de Wit

Joren de Wit

24/11/2006 20:19:00
Quote Anchor link
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.
 
Davy Jansen

Davy Jansen

24/11/2006 20:40:00
Quote Anchor link
@Frank, wat bedoel je precies. Ik laat de gegevens gewoon in het database staan, ik ga ze niet verwijderen.

@Blanche, dus ik moet na dat ik ze geselecteerd heb, ze gaan sorteren?
Maar hoe kan ik dat dan doen? Of begrijp ik je nu verkeerd?
 
Frank -

Frank -

24/11/2006 20:48:00
Quote Anchor link
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...

Dus nogmaals, wat is nu de bedoeling?
 
Joren de Wit

Joren de Wit

24/11/2006 20:51:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
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.
 
Davy Jansen

Davy Jansen

25/11/2006 10:57:00
Quote Anchor link
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!
 
Frank -

Frank -

25/11/2006 11:06:00
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
$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
 
Davy Jansen

Davy Jansen

25/11/2006 11:21:00
Quote Anchor link
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?

Kan dit ook?
 
Niek s

niek s

25/11/2006 11:39:00
Quote Anchor link
Nee k denk het niet..
PHP stuurt namelijk de data pas naar de browser als alles gedaan is. dus je kan nooit zien wat php doet...
 
Davy Jansen

Davy Jansen

25/11/2006 11:55:00
Quote Anchor link
En kan het ook niet, dat stel dat we bij de 300ste rij zitten in het database.
Dat er dan een update query komt bij, if( $row['dit'] == "300")){ hier dan de update query..
En dat dan update query de telling weer op 1 zet in de volgende rij?
Of 2de manier, dat er dan bijvoorbeeld -300 komt, en dat hij dan ook weer bij 1 begint?

Kan het niet op 1 van deze 2manieren? (dan is het misschien wel slim, om bij elke rij +1 in ander kolom mee te tellen? of niet?
 
Joren de Wit

Joren de Wit

25/11/2006 14:33:00
Quote Anchor link
Ik snap nou niet precies wat je wilt, je verhaal is erg onduidelijk. Maar wat Frank ook al zegt: de extra kolom met een tellertje in je database is overbodig en kan direct de prullenbak in. Als je bij elke 5e rij een bericht wilt geven kun je dat als volgt doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?
$i
= 0;
while($row = mysql_fetch_assoc($result)){
  if($i%5 == 0){
    echo 'Jij bent de gelukkige rij: '.$row['naam'];
  }

  else {
    echo $row['naam'];
  }

  $i++;
}

?>


Quote:
dat stel dat we bij de 300ste rij zitten in het database.
Zoals dus ook al eerder gezegd, kun je niet spreken van een 300ste rij in een database. Je zou alleen kunnen spreken over een 300ste rij in de resultaat-set van een query die je op je database hebt uitgevoerd.
 



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.