IDs automatisch in der Datenbank übergeben PART2

madirfan

Erfahrenes Mitglied
hallo leute..

ich hab eine Datenbank und kann die IDs für einzelnen Produkte automatisch hinzufügen.

Fall:
a)ich habe 4 IDs.
b)ich lösche id2.
c)ich füge ein artikel in der datenbank und die Datenbank erstellet eine ID..id5
ich wollt aber dass die id2 genommen wird.. statt id5
und ich möchte das es nummerarisch aufgelistet wird,wenn ich alle daten anzeigen möchte--

koennt ihr helfen?
 
Hallo @madirfan

Warum willst du das machen ?
Die ID ist doch nur für die Datenbank essenziell, damit sie weiß was wo liegt.
Ein ändern wäre hier sinnlos, denn stell dir mal vor jemand bookmarked einen bestimmten Artikel und möchte ihn später wieder abrufen.
(Der Artikel wurde gelöscht) und er wird ganz wo anderst hin geführt, da die ID vergeben wurde.
Gib doch einfach beim ausgeben mit for den Wert von $i mit.

Ok aber als Lösung würde ich sonst einfach die IDs automatisch ändern.
also mit einem Update die IDs setzen.
Da kommt halt dann sehr viel Arbeit auf dein Script zu, wenn etwas gelöscht wird, denn es müssen alle verschoben werden.

Den autoincrement Wert (Position des Indexzählers) kannst du mit

PHP:
ALTER TABLE `table` AUTO_INCREMENT = '1'

zurück bzw. auf die Anzahl deiner Datensätze setzen


Grüße SimonErich
 
Wenn du den auto_increment Wert manipulierst (ich nenn das mal so), dann hast du neben dem Problem, das SimonErich angesprochen hat auch noch das Problem, wenn früher gelöschte Datensätze aus einem älteren Backup wieder eingelesen werden.

Also ich rate dir dazu, lass die auto_increment-Werte wie sie sind.
 
achso.. ok.. dann las ich das.. hier noch ne frage wegen löschen..
PHP:
<?php

$host = "+++"; // Adresse des Datenbankservers, meistens localhost
$user = "++++"; // Ihr MySQL Benutzername
$pass = "++++"; // Ihr MySQL Passwort
$db = "+++"; // Name der Datenbank
$urlaubsid = $_GET['urlaubsid'];
$link = mysql_connect($host, $user, $pass) or die("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("irfan") or die("Auswahl der Datenbank fehlgeschlagen");

$query = "DELETE FROM urlaubsantrag WHERE urlaubsid = '$urlaubsid' "; 
$result = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());

mysql_free_result($result);
mysql_close($link);

?>

der datensatz wird zwar gelöscht aber es wird eine fehlermeldunh anzeiegt.
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /srv/www/vhosts/sysworkit.de/subdomains/irfan/httpdocs/delete_it.php on line 14
 
mysql_free_result() gibt, wie im Manual beschreiben, den Speicher wieder frei.
Das ist nur nach (Select-)Abfragen nötig. Lass also diese Zeile:
PHP:
mysql_free_result($result);
weg.

(Korrigiert mich wenn ich Blödsinn schreibe *g*)
 
wie koente ich ein befehl einbauen, wnn ich eine bestätigung haben will das es gelöscht worden ist... ;)
 
@Loomes Nein du hast schon recht. ;)

@madirfan dieser Befehl bereinigt nur den Bufferspeicher und den brauchst du nur bei sehr sehr großen Datenmengen. Ich denke nicht, dass dieser hier gebraucht wird.
 
wie koente ich ein befehl einbauen, wnn ich eine bestätigung haben will das es gelöscht worden ist... ;)

Ersetzte diese Zeile:
PHP:
$result = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());
Durch dieses Zeilen:
PHP:
if( !mysql_query( $query ) )
{
    echo 'Anfrage fehlgeschlagen: ' .mysql_error();
}
else
{
    echo 'Erfolgreich!';
}
 
Parse error: parse error, unexpected '{' in /srv/www/vhosts/sysworkit.de/subdomains/irfan/httpdocs/delete_it.php on line 13


bekom ich diese fehlermeldung
 
Zurück