ID's in goede volgorde?

Status
Niet open voor verdere reacties.

LarsL

Gebruiker
Lid geworden
19 sep 2008
Berichten
155
Hallo allemaal,
Ik wil graag weten hoe je als je het 'id'-veld op AUTO_INCREMENT hebt staan je alles in een nette volgorde krijgt. Wat ik nu krijg is als ik een record toevoeg is id 1, en bij het tweede record id 2 enzovoort, als ik echter dan de 2de verwijder en ik voeg weer een nieuwe record toe krijgt die id 3 i.p.v. id 2 (wat ik wil), dus hoe zorg ik dat ze weer gelijk lopen?
De tabel opschonen lijkt me daarvoor geen goed plan :p

Alvast bedankt,
Lars L.

EDIT: Probleem is ook als ik al 5 entry's heb en ik verwijder de 4de en dan voeg ik een 6e toe dan krijg ik 1 lege id (4). Misschien is het handiger om alvast het doel te vertellen, ik wil een XML op laten stellen adhv die database records, maar als ik er dan een lege tussen heb zitten dan word die ook gegenereerd en krijg ik dus een leeg stuk in het uiteindelijke document dat dat XML-document gebruikt en dat wil ik voorkomen.
Het genereren gebeurt namelijk zo:
PHP:
Vraag opgelost, uiteindelijke code:
function writeXML($charLengthIntro = 100)
{
    $file = fopen('../content.xml', 'w');
    $sqlQuery = mysql_query("SELECT * FROM catalogue") or die(showErr('mysql'));
    fwrite($file, '<?xml version="1.0" encoding="utf-8" standalone="yes" ?><content>');
    while ($resData = mysql_fetch_object($sqlQuery)) {
        fwrite($file, '
<article Thumb ="images/' . $resData->pthumb . '" Large ="images/' . $resData->
            plarge . '">
<headline>' . $resData->pname . '</headline>
<date>' . $resData->pdate . '</date>
<copy_intro><![CDATA[' . substr($resData->pdescr, 0, $charLengthIntro) .
            '...]]>' . '</copy_intro>
<copy_full><![CDATA[' . $resData->pdescr . ']]></copy_full>
<copy_pic>' . $resData->pimgtext . '</copy_pic>
</article>
');
    }
    fwrite($file, '</content>');
    fclose($file);
}
 
Laatst bewerkt:
Hallo Lars.

Je moet de id's niet aanpassen. Dit zijn suggoraat sleutels die alleen betekenis zouden moeten hebben voor het identificeren van rijen in de database.

De fout in je PHP script is het feit dat je met een teller werkt om de items uit het resultaat op te halen. Er zijn in PHP andere manieren om door een resultset te bladeren:

PHP:
$result = mysql_query("SELECT * FROM catalogue")
if ($result) {
  while ($row = mysql_fetch_object($result)) {
    //hier je item opbouwen in xml
  }
}

http://www.php.net/manual/en/function.mysql-fetch-object.php
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan