• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

IDs in der Reihenfolge beibehalten

webber979

Neues Mitglied
Hallo Leute,

ich lege eine Datenbanktabelle in, die die Spalten ID, name und content enthalten soll.
Jetzt möchte ich die ID per Auto_increment hochzählen lassen jedoch wenn eine Zeile gelöscht wird in deer gleichen reihen folge( 1,2,3,4,5,6,7,8,9...) beibehalten.
Wie kann ich dies erreichen?
Ich dachte an ein verfahren wie
1)SELECT ID von der zeile die gelöscht wird

2)DELETE die Zeile die gelöscht werden soll

3)UPDATE * ID //alle IDs in der Tabelle WHERE ID > $selectedID -1 //die größer sind um eins vermindern

Hab aber keine genaue vorstellung für einen Code der die 3) ausführen kann. Könnt ihr mir helfen?
(Ich weiß das der Code nocht ganz richtig ist, sollte auch nur eine Skizze werden.)

Danke im Vorraus

webber979
 
Werbung:
Jetzt möchte ich die ID per Auto_increment hochzählen lassen jedoch wenn eine Zeile gelöscht wird in deer gleichen reihen folge( 1,2,3,4,5,6,7,8,9...) beibehalten.

Das kann aber ein großes Problem mit sich bringen!

Wenn du die ID eines Datensatzes dieser Tabelle als Referenz in einer anderen Tabelle nutzt, kann es beim Neuzuweisen der ID als fortlaufende Zahl in der ersten Tabelle, zu falschen Datensatzabfragen in der zweiten Tabelle kommen, wenn dort noch die alte ID eines Datensatzes drin ist, statt der neuen ID!
 
Werbung:
In meinem Fall bringt das RESET des AutoIncrements nichts, weil die id's in der Tabelle zu jeder Zeit die Reihenfolge sein müssen und nicht erst wenn ein neuer datensatz eingefügt wird.
Diese id reihenfolge wird nämlich in etlichen for-schleifen benötigt.
 
Da es hier um das Automatisch hochzählen geht habe ich auch gleich mal eine Frage bevor ich dafür einen neuen Thread aufmache.

Wenn ich eine INSERT Abfrage habe, zum Beispiel:

Code:
$sql_nutzer_anlegen = "
            INSERT INTO $db.nutzer 
            (ID, NR, NAME)
            VALUES 
            ('$post_id' '$post_nummer', '$post_name)
            ;
        ";

Wie bekomme ich es dann hin dass er automatisch die ID hochzählt ? (ist in der DB bereits auf AUTO_INCREMENT gesetzt)

Die Daten werden über eine Suchmaske eingegeben außer eben die ID, die soll er automatisch hochzählen lassen.

Müsste es nicht einfach gehen indem man die ID ganz weglässt in der Abfrage ?
 
Da es hier um das Automatisch hochzählen geht habe ich auch gleich mal eine Frage bevor ich dafür einen neuen Thread aufmache.

Wenn ich eine INSERT Abfrage habe, zum Beispiel:

Code:
$sql_nutzer_anlegen = "
            INSERT INTO $db.nutzer 
            (ID, NR, NAME)
            VALUES 
            ('$post_id' '$post_nummer', '$post_name)
            ;
        ";

Wie bekomme ich es dann hin dass er automatisch die ID hochzählt ? (ist in der DB bereits auf AUTO_INCREMENT gesetzt)

Die Daten werden über eine Suchmaske eingegeben außer eben die ID, die soll er automatisch hochzählen lassen.

Müsste es nicht einfach gehen indem man die ID ganz weglässt in der Abfrage ?
Passiert automatisch lass beim einfügen die ID einfach weg.
 
Werbung:
Ok, da ich sehe, dass id's in der reihenfolge zu behalten ist werde ich meine for-schleifen anders beitreiben müssen.
@threadi: Erinnerst du dich bezüglich meines Problemes mit dem Array: http://www.html.de/php/44875-content-aus-einem-wert-einem-array-heraussplitten.html ?

Code:
array(3) { //DIE HIER 1 => array(   "id" => 1,   "Content" => "Hallo",   "name" => "Hallodiv"  ),  2 => array(   "id" => 2,   "Content" => "Hallöchen",   "name" => "Hallöchendiv"  ),  3 => array(   "id" => 3,   "Content" => "Super",   "name" => "Superdiv"  ), }

Ich muss bezüglich einer for-schleife array element nummer zugreifen, ich hab sie mal mit "DIE HIER" makiert.
Wie kann ich darauf zugreifen.
Da letztenendes die nummer bei einer ausgabe wie dieser
Code:
[COLOR=#000000][COLOR=#006600]echo [/COLOR][COLOR=#0000CC]$newarray[/COLOR][COLOR=#006600][[/COLOR][COLOR=#0000CC]0[/COLOR][COLOR=#006600]][[/COLOR][COLOR=#CC0000]"name"[/COLOR][COLOR=#006600]];  [/COLOR][/COLOR]

durch eine variable ersetzt wird
Code:
[COLOR=#000000][COLOR=#006600]echo [/COLOR][COLOR=#0000CC]$newarray[/COLOR][COLOR=#006600][[/COLOR][COLOR=#0000CC]$i[/COLOR][COLOR=#006600]][[/COLOR][COLOR=#CC0000]"name"[/COLOR][COLOR=#006600]];  [/COLOR][/COLOR]

Vielen Dank im Vorraus
 
$id entspricht aber nicht dem numerischen Array sondern der id.
Kann ich auch ganz einfach den teil
Code:
[COLOR=#000000][COLOR=#0000CC]newarray [/COLOR][COLOR=#006600]= array();
while( [/COLOR][COLOR=#0000CC]$row [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000CC]mysql_fetch_array [/COLOR][COLOR=#006600]([/COLOR][COLOR=#0000CC]$result[/COLOR][COLOR=#006600]) ) {
 [/COLOR][COLOR=#0000CC]$newarray[/COLOR][COLOR=#006600][[/COLOR][COLOR=#0000CC]$row[/COLOR][COLOR=#006600][[/COLOR][COLOR=#CC0000]"id"[/COLOR][COLOR=#006600]]] = [/COLOR][COLOR=#0000CC]$row[/COLOR][COLOR=#006600];
}
weglassen und auf den array element contetn zugreifen über
Code:
$row[$i]['content']
und $i ist die nummer array elements?
[/COLOR][/COLOR]
 
Werbung:
Zurück
Oben