Toon posts:

[MySQL] mysql_fetch_array vanaf specifieke row

Pagina: 1
Acties:

Verwijderd

Topicstarter
Oké, nog een makkelijke vraag voor jullie ;-)

Bestaat er een aanroep zoals mysql_fetch_array die mij een array terug geeft vanaf een bepaalde row?

Voorbeeldje:

code:
1
2
3
4
while(($row = mysql_fetch_array($msg)) && ($count<=$max_aantal_ber)){
.. code waarin iets gebeurd met de array ...
                                
}


Deze lus loopt alle records door van een SELECT * query maar nu wil ik vanaf een bepaalde row gaan itereren. Ik kan helaas niet de primary key (id) gebruiken omdat ik hier en daar records heb verwijderd. Kom dus aub niet met een reactie "waarom gebruik je niet gewoon SELECT * FROM <tabel> WHERE ID=<waarde>"

De quick and dirty manier (while lus het aantal keren laten lopen totdat je bij de juiste row bent en vanaf daar de pagina opbouwen) ben ik nu aan het inbouwen maar het moet toch ook mooier kunnen?

[ Voor 17% gewijzigd door Verwijderd op 17-04-2004 15:39 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Nee, fix je select zodat je alleen de goede records terugkrijgt. Dat je die reactie niet wil snap ik niet, da's namelijk het enige correcte antwoord: als je dat niet kan klopt je datamodel niet.

Professionele website nodig?


  • UltimateB
  • Registratie: April 2003
  • Niet online

UltimateB

Pomdiedom

Voeg een teller toe in de while lus met dan een if statement die checked hoever de teller is.

Iets in de geest van:

code:
1
2
3
4
5
6
7
8
$teller = 0;

while(($row = mysql_fetch_array($msg)) && ($count<=$max_aantal_ber)){
   if ( $teller > $testGetal ) {
.. code waarin iets gebeurd met de array ...
   }
   $teller++;                                
}


Dit is een oplossing, maar zoals hierboven al aangegeven, niet helemaal zoals het hoort ;)

[ Voor 18% gewijzigd door UltimateB op 17-04-2004 15:41 ]

"True skill is when luck becomes a habit"
SWIS


  • simon
  • Registratie: Maart 2002
  • Laatst online: 14:14
Kun je niet alles in een array proppen, en dan via een while 't er vanaf de goede positie uitpoepen? Volgens moet je eigenlijk gewoon doen wat curry684 zegt... maja... :P

|>


Verwijderd

Topicstarter
Curry die Select statement is inderdaad een goede oplossing maar op het id (auto increment) kan ik die select niet laten lopen want er zijn records tussenuit gehaald. Ik zou wel kunnen controleren of ik op de query een array terug krijg en zo niet proberen met een opvolgend nummer maar is er echt geen andere oplossing?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Verwijderd schreef op 17 april 2004 @ 15:45:
Curry die Select statement is inderdaad een goede oplossing maar op het id (auto increment) kan ik die select niet laten lopen want er zijn records tussenuit gehaald. Ik zou wel kunnen controleren of ik op de query een array terug krijg en zo niet proberen met een opvolgend nummer maar is er echt geen andere oplossing?
Je mag sowieso nooit ranged selects doen op je primary key, dan heb je namelijk een soort van natural key. Wat probeer je nu eigenlijk te selecten op wat voor dataset? :?

Professionele website nodig?


Verwijderd

Topicstarter
Ik wil graag records terug krijgen VANAF een bepaalde row. Dus bijvoorbeeld record 10 tot en met de 20e. Moet alleen even zoeken hoe dat met die ranged select statements werkt dan want die heb ik zelf nog nooit gebruikt. Het is verder een hele simpele tabel met id als primary key (auto increment) en verder een aantal velden zoals naam, email, wwwadres enzovoorts. Het zou het mooiste zijn als ik dat door de database kon laten afhandelen want ik vind het eigenlijk smerig om elke keer alle records te selecteren en vanaf een bepaalde row in te springen.

[ Voor 46% gewijzigd door Verwijderd op 17-04-2004 15:51 ]


Verwijderd

SELECT * FROM tablename ORDER BY date DESC LIMIT 10,20 :?

[ Voor 6% gewijzigd door Verwijderd op 17-04-2004 15:53 ]


  • __fred__
  • Registratie: November 2001
  • Laatst online: 24-05 22:44
Kijk eens naar LIMIT in de select syntax van MySQL

edit:
te laat

[ Voor 20% gewijzigd door __fred__ op 17-04-2004 15:55 ]


  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 01-03 18:17
Al eens gedacht aan LIMIT :?

Spuit 11 :z

[ Voor 14% gewijzigd door ludo op 17-04-2004 15:55 ]


Verwijderd

Topicstarter
Haha, jaja ik weet het: limit is het toverwoord. Bedankt voor de reacties.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Het lezen van de php-manual is ook altijd weer zo moeilijk he?
http://www.php.net/mysql_data_seek

Voor als je nog steeds denkt dat Limit niks is.
Pagina: 1