Ik heb een tabel met een kolom 'nummer' welke automatisch incrementeert.
Maar, zo nu en dan moeten er records verwijderd worden uit de tabel.
Deze kolom ordent de getallen dan niet netjes weer zo dat alles is genummer van 1 tot het einde, maar bijv. 1,2,4,6,7,8,10
Hoe krijg ik het nou zo dat dat wel weer geordend wordt, dus in dit voorbeeld met 7 records dat de getallen weer netjes 1,2,3,4,5,6,7 worden...
Het is essentieel voor de werking van mijn php-programma...
als het essentieel is voor de werking van je programma, dan steekt je programma niet goed in elkaar...
maar een mogelijkheid is een select al...en auto increment op 1 zetten en alles in een loopje 1 voor 1 terug poepen
Ik heb een tabel met een kolom 'nummer' welke automatisch incrementeert.
Maar, zo nu en dan moeten er records verwijderd worden uit de tabel.
Deze kolom ordent de getallen dan niet netjes weer zo dat alles is genummer van 1 tot het einde, maar bijv. 1,2,4,6,7,8,10
Hoe krijg ik het nou zo dat dat wel weer geordend wordt, dus in dit voorbeeld met 7 records dat de getallen weer netjes 1,2,3,4,5,6,7 worden...
Het is essentieel voor de werking van mijn php-programma...
Wie kan me helpen?
Tja deze vraag ben ik al verschillende keren op verschillende forums tegen gekomen. Het antwoord is: wat jij wil kan niet. :grijnz: Het kan wel, dan moet je een scriptje maken dat alle regels ophaald geselecteerd op id of in jou geval ńummer' en dan hernummeren. Een aan het einde van de hernummering de auto_incredment op het laatste nummer + 1 zetten. Maar er is geen standaard sql commando voor. Je kunt je ook afvragen waarom zou je dat willen?
Edit: Eeeey wat ziet ik nu toch? een aanhalingsteken+n word plots een ń haha
Ik zou ook nooit een volgorde laten afhangen van een id (dus autoincrement)
Zoals Frank vanmiddag al in een topic zei: Dit is alleen om een bepaald record aan te duiden. Voor een volgorde kan je dus beter een nieuw veld aanmaken.
Dan maakt het uiteindelijk ook niet uit of er nou een getal mist, hij knalt 't wel in volgorde achter elkaar.
Ow...heb ik weer :-(
Is er dan ook niet zo iets als "while" in php icm Mysql, op zo'n manier dat ik toch in een lus elke regel apart kan wijzigen?
Ik heb nu dit:
for ($j=0;$j<=$totalfields;$j++){
$query1 = mysql_query("SELECT filename,slidename,bdate,edate FROM slides WHERE nummer=$j");
$gegevens= mysql_fetch_array($query1);
en dan de rest. $totalfields is uiteraard een var uit een query waa het aantal velden worden geteld.
Er moet dus op elke regel iets uitgevoerd worden.
Heb even gezocht net op " while" maar kom helaas niet tegen wat ik zoek,a lthans, niet werkend...
Eric: Waarom zou je auto_increment willen ordenen, dit is niet het doel van auto_increment. Ik denk dat je een andere manier moet gebruiken. Wat wil je precies? En als je alles uit de DB haalt wordt dit automatisch geordert op auto_increment, als je dan alles via php een nummer geeft, heb je het toch ook? Maar dan laat je auto_increment tenminste met rust.
Turmin, ik zie dat het een slecht idee is inderdaad...
Waar het knelpunt in zat zo dacht ik, is dat ik dan geen velden kon updaten. Dit is ook niet nodig realiseer ik me nu. Inmiddels heb ik het deels werkend met 'while' , maaaaaar....
Ik krijg nu keurig netjes in een invoer veld de waarde te zien van in mijn geval een bestandsnaam. Nu wil ik deze bestandsnaam wijzigen in dat tekstveld, en weer opslaan.
Dat opslaan leek mij in eerste instantie een probleem, omdat ik te gefocussed was om de waarde te updaten. Wat er dus eigenlijk moet gebeuren is dat ik een regel moet kunnen verwijderen, en daarna weer toevoegen.
Ik denk dat me dat wel gaat lukken nu...
Dank voor jullie reacties en vooral ook de snelheid.
Super!
Tja, eigenlijk is alles al gezegd, maar ik voeg er toch nog maar even iets aan toe (zegt spuit 11...):
Het is essentieel voor de werking van mijn php-programma...
Het enige dat essentieel is voor jouw programma is een betrouwbare database. En wanneer jij met je vingertjes aan de auto_increment komt, kun je dat onderdeel wel vergeten. DOE DIT DUS HELEMAAL NOOIT!!!
Haal het zelfs niet meer in je hoofd om aan deze optie te denken, het is echt de grootste fout die je kunt maken.
In een kolom van het type INT kun je een paar miljard records kwijt, jij kunt dus nooit problemen krijgen zolang je van de auto_increment afblijft. Er is helemaal niemand geinteresseerd in de waarde van het getal, uitsluitend de database doet daar wat mee. Verder heeft het geen enkele betekenis, dat moet je ook zo houden. Blijf er dus vanaf.
Zeker in combinatie met mysql_insert_id() en een relationele DB is het verschrikkelijk belangrijk dat de nummering blijft zoals de DB dat bedacht heeft. Ben je het daar niet mee eens gebruik dan geen auto_increment