kostenloser Webspace werbefrei: lima-city


Mysql auto_increment

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    swissminecraftserver

    Kostenloser Webspace von swissminecraftserver

    swissminecraftserver hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. thomasba

    Co-Admin Kostenloser Webspace von thomasba

    thomasba hat kostenlosen Webspace.

    Du kannst dir mal folgenden SQL-Befehl anschauen:
    TRUNCATE TABLE

    http://dev.mysql.com/doc/refman/5.0/en/truncate-table.html
  4. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Wie wärs damit:
    ALTER TABLE tabellenname AUTO_INCREMENT = 42;


    swissminecraftserver schrieb:
    Das alles soll in PHP statt finden.
    Ich vermute stark du meinst damit: "das umgebende Programm soll in PHP sein".
    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
  5. Autor dieses Themas

    swissminecraftserver

    Kostenloser Webspace von swissminecraftserver

    swissminecraftserver hat kostenlosen Webspace.

    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&ouml;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
  6. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    swissminecraftserver schrieb:
    Das habe ich auch schon gefunden:
    ¨¨
    ALTER TABLE tabellenname AUTO_INCREMENT = 42;
    Dann weißt du schon mal wie du das auto inrement auf einen beliebigen Wert setzten kannst...


    swissminecraftserver schrieb:
    Nur weiss ich nicht wo ich das einfügen muss
    In ein
    mysql_query()
    ?

    swissminecraftserver schrieb:
    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?
    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...
  7. m****r

    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.
  8. Autor dieses Themas

    swissminecraftserver

    Kostenloser Webspace von swissminecraftserver

    swissminecraftserver hat kostenlosen Webspace.

    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...
  9. Hui, da ist ja ja abenteuerlich was du da vor hast! :confused:
    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
    }
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!