auto_increment, opnieuw ordenen
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?
maar een mogelijkheid is een select al...en auto increment op 1 zetten en alles in een loopje 1 voor 1 terug poepen
Eric:
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?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?
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?
Edit: Eeeey wat ziet ik nu toch? een aanhalingsteken+n word plots een ń haha
Gewijzigd op 01/01/1970 01:00:00 door arie
Een auto-increment veld moet je nooit aankomen. Laat het aan de DB over.
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.
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!
Gewijzigd op 01/01/1970 01:00:00 door Eric
Eric:
Turmin, ik zie dat het een slecht idee is inderdaad...
Waar het knelpunt in zit is dat ik het inmiddels met 'while' wel werkend heb
Waar het knelpunt in zit is dat ik het inmiddels met 'while' wel werkend heb
Ohja, dan is het natuurlijk wel zo netjes de oplossing ook even te melden voor degene die na mij komt ;-)
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?
$query = mysql_query("select * from slides") or die(mysql_error());
while (list($filename,$slidename,$bdate,$edate) = mysql_fetch_row($query)){
<input name="filename" type="text" size="35" maxlength="40" value="<?= $filename ?>" >
?>
$query = mysql_query("select * from slides") or die(mysql_error());
while (list($filename,$slidename,$bdate,$edate) = mysql_fetch_row($query)){
<input name="filename" type="text" size="35" maxlength="40" value="<?= $filename ?>" >
?>
enzovoorts voor de andere velden.
Gewijzigd op 01/01/1970 01:00:00 door Eric
Quote:
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!!! Het is essentieel voor de werking van mijn php-programma...
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.
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
Eric:
Je gebruikt nu een sterretje. opzich niet erg, maar als je nu later met phpmyadmin nu velden toevoegd of zelfs eenveld tussen in invoegd, klop dit script niet meer. Dus ff een punt van aandacht.
$query = "SELECT `veld1`, `veld2`, `veld3`, `veld4` FROM `slides`";
$result = mysql_query($query) or die(mysql_error());
while (list($filename, $slidename, $bdate,$edate) = mysql_fetch_row($result)) {
? >
<input name="filename" type="text" size="35" maxlength="40" value="< ?=$filename? >">
< ?php
}
Gewijzigd op 01/01/1970 01:00:00 door arie
arie:
$query = "SELECT `veld1`, `veld2`, `veld3`, `veld4` FROM `slides`";
Géén quotes en/of backtics om de veldnamen gebruiken.
Edit: Typo.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -