Mysql auto_increment
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
auto
befehl
benutzer
bestimmte zeilen
code
eigentliche aktion
eintrag
einzel
ergebnis
jemand
machen
obersten datensatz
ordern
sinn
tabelle
test
url
verbindung
zeile
-
Moin
Ich wollte wissen wie man das auto_increment in mysql löscht bzw.
au 1 setzt also wieder aufzählen z.B.
Tabelle:
Test:
Id Name
1 test
2 test 2
Wenn man jetzt beide löscht das es dann bei den nächsten 2 so aussieht:
1 test3
2 test4
so das, dass immer sich um 1 verschiebt
wen ich das oberste lösche.
Das alles soll in PHP statt finden.
Lg sms -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Du kannst dir mal folgenden SQL-Befehl anschauen:
TRUNCATE TABLE
http://dev.mysql.com/doc/refman/5.0/en/truncate-table.html -
Wie wärs damit:
ALTER TABLE tabellenname AUTO_INCREMENT = 42;
swissminecraftserver schrieb:
Ich vermute stark du meinst damit: "das umgebende Programm soll in PHP sein".
Das alles soll in PHP statt finden.
Das kannst du aus PHP oder sonst jeder erdenklichen Programmiersprache aus ausführen solange es einen MySQL-Connector für diese Sprache gibt
Beitrag zuletzt geändert: 24.7.2012 22:28:15 von hackyourlife -
Das habe ich auch schon gefunden:
¨¨
ALTER TABLE tabellenname AUTO_INCREMENT = 42;
Nur weiss ich nicht wo ich das einfügen muss,
die eigentliche Aktion wo ich machen will ist, dass ich bestimmte Zeilen einer Tabelle ausgebe
und dann (neben dran) ein Löscht Bottom ist und dann jeden Eintrag einzel löschen kann.
Da hat jemand geschrieben das man das am Besten mit einer ID macht die immer sich um 1 erhöht,
kann man das auch anders machen?
Meine script in der einfachen Version:
<div class="box"> <form action="/(in dieser Datei)" method="post"> <input type="hidden" name="loeschen" value="1"> <input type="submit" value="Löschen"><br><br> ^ | Hier, also wenn ich den Bottom drücke sollte der erste Betrag gelöscht werden <?php include("mysql.php"); $verbindung = mysql_connect("$host", "$benutzername","$passwort") or die ("Keine Verbindung moeglich"); mysql_select_db("$db1") or die ("Die Datenbank existiert nicht."); $abfrage = "SELECT * FROM add_mail"; $ergebnis = mysql_query($abfrage); while ($row = mysql_fetch_object ($ergebnis)){ echo "$row->mail<br>_____________________________<br>"; } mysql_close($verbindung); ?> </div>
Ich hoffe ihr könnt mich verstehen
Beitrag zuletzt geändert: 24.7.2012 23:47:19 von swissminecraftserver -
swissminecraftserver schrieb:
Dann weißt du schon mal wie du das auto inrement auf einen beliebigen Wert setzten kannst...
Das habe ich auch schon gefunden:
¨¨
ALTER TABLE tabellenname AUTO_INCREMENT = 42;
swissminecraftserver schrieb:
In ein
Nur weiss ich nicht wo ich das einfügen muss
?mysql_query()
swissminecraftserver schrieb:
Und da glaubst du ist das auto increment zurücksetzen gut? Es ist doch bei IDs völlig egal ob da "Lücken" drin sind, es müssen damit nur die Einträge eindeutig identifiziert werden können... und für den Benutzer wird die ID normalerweise sowieso nicht sichtbar. Vergiss das doch einfach mit dem zurücksetzen weil es keinen Sinn hat...
die eigentliche Aktion wo ich machen will ist, dass ich bestimmte Zeilen einer Tabelle ausgebe
und dann (neben dran) ein Löscht Bottom ist und dann jeden Eintrag einzel löschen kann.
Da hat jemand geschrieben das man das am Besten mit einer ID macht die immer sich um 1 erhöht,
kann man das auch anders machen? -
swissminecraftserver schrieb:
Das habe ich auch schon gefunden:
¨¨
ALTER TABLE tabellenname AUTO_INCREMENT = 42;
Nur weiss ich nicht wo ich das einfügen muss,
Wie wäre es mit mysql_query("ALTER TABLE tabellenname AUTO_INCREMENT = 1337"); wie hackyourlife schon erwähnt hat?
ich bestimmte Zeilen einer Tabelle ausgebe
und dann (neben dran) ein Löscht Bottom ist und dann jeden Eintrag einzel löschen kann.
Bestimme Zeilen ausgeben wäre so:
Wenn du weißt welche ID die Zeile hat einfach "SELECT spaltenname FROM tabellennamen WHERE id = '$Id'"
Löschen mache ich mit nem UPDATE tabellenname SET spaltenname = "" WHERE id = '$ID', damit die Zelle selber in der DB bleibt und man in der DB nicht aufeinmal nicht vorhandene IDs vorfindet. -
Und da glaubst du ist das auto increment zurücksetzen gut? Es ist doch bei IDs völlig egal ob da "Lücken" drin sind, es müssen damit nur die Einträge eindeutig identifiziert werden können... und für den Benutzer wird die ID normalerweise sowieso nicht sichtbar. Vergiss das doch einfach mit dem zurücksetzen weil es keinen Sinn hat...
Der Benutzer soll diese Seite gar nicht sehen, sie ist nur für mich, und ich will ja das wenn man auf den Löschen Bottom klickt
das dann der Oberste Eintrag gelöscht wird, aber nur den Obersten.
Wie kann ich dann den Zweiten aus wählen wenn der die ID 2 hat und das geht dann endlos so weiter... -
Hui, da ist ja ja abenteuerlich was du da vor hast!
Und du merkst auch, dass hier keiner den Sinn in dieser Aktion versteht, mich eingeschlossen.
Eine ID als Autoincrement gesetzt, hat einzig den Sinn, dass eine eindeutige Zuordnung zu den Daten gewährleistet ist.
Durch das Entfernen des Autoincrement kommst du in Teufelsküche, wenn du in deiner Programmierung nicht alles überprüfst.
Lass die ID auf Autoincrement stehen. Dein Problem lässt sich ganz anders lösen, wenn du nochmal in Ruhe daran gehst. Mir scheint es so, als du dich daran festgebissen hast.
Vorschlag:
Den ersten Datensatz zeigst du wie folgt an:
SELECT * FROM add_mail ORDER BY id ASC
Den letzten Datensatz zeigst du wie folgt an:
SELECT * FROM add_mail ORDER BY id DESC
Und je nach dem löscht du in deiner Ausgabe immer den obersten Datensatz mit der Übergabe der ID an eine PHP-Funktion, die den Eintrag aus der DB löscht.
Zum Beispiel:
... hier steht deine Abfrage von weiter unten ...
while ($row = mysql_fetch_object ($ergebnis)){
echo '<p>$row->mail - <a href="' . $_SERVER['PHP_SELF'] . '?delete=' . $row->id . '">löschen?</a></p>';
}
Und in demselben PHP-Skript, schreibst du oberhalb des Aufrufs der Liste eine Bedingung, die prüft ob "delete" abgeschickt wurde.
Prüfen mit z.B.
if ($_POST['delete']) {
// lösche den Eintrag mit der ID, die in $_POST['delete'] übergeben wurde
} -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage