[PHP] mit checkbox meherer Datensätze aus DB löschen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von master2005, 13. Oktober 2006 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 13. Oktober 2006
    mit checkbox meherer Datensätze aus DB löschen

    Guten tag @ all

    ich habe mal eine frage und twar wolle ich etwas coden das man bestimmte datensätze aufeinmal löschen kann ..

    man sollte mehrer dinge per checkbox auswählen können und dann mit einen button alles aus der DB löschen können..halt so wie bei emails...web.de ect...bisher habe ich es nur hinbekommen das ich ein datensatz aus der Db nur damit löschen kann...

    es sollte so sein das mann alle datensätze ausgibt und dann daneben man ein häckschen machen kann ob es gelöscht werden soll oder nicht....


    wenn mir hierbei irgendeienr tipps geben könnte wäre dies echt nett.....


    gruß master2005
     
  2. 13. Oktober 2006
    AW: mit checkbox meherer Datensätze aus DB löschen

    Am einfachsten funktioniert das, wenn du deinen DB-Einträgen (Zeilen) IDs gibst, die niemals doppelt vorkommen, sodass man immer genau eine Zahl einem Eintrag zugewiesen hat!

    Dann liest du alle Einträge aus, gibst sie per Schleife aus und setzt vor jeden Eintrag eine Checkbox! Wichtig dabei ist, dass alle Checkboxen, denselben namen haben und dahinter eckige Klammern, z.B.:

    Code:
    <input type="checkbox" name="delete[]" value="1">Eintrag mit der ID 1<br />
    <input type="checkbox" name="delete[]" value="2">Eintrag mit der ID 2<br />
    ... usw...
    Die Value der Checkboxen, ist dabei immer die ID des Eintrags, der beschreibende Text kann natürlich auch was anderes sein!

    Auswerten kann man das ganze dann ganz einfach, da durch die gleiche Namensgebung und die Klammern ein Array erzeugt wird, dass man dann per Schleife auslesen kann und alle darin gespeicherten IDs per "DELETE FROM ... WHERE id= ..." löschen kann!

    Beispiel:

    Code:
    <?PHP
    $delete = $_POST['delete'];
    
    for($i=0;$i<length($delete);$i++)
    {
     $id = $delete[$i];
     mysql_query("DELETE FROM ... WHERE id=$id");
    }
    ?>
    
    Hab's nicht getestet aber rein theoretisch müsste das so klappen, wenn nicht, versuch ich's nochmal besser zu beschreiben ;-)

    Viel Erfolg!
    ______________
    MrX
     
  3. 13. Oktober 2006
    AW: mit checkbox meherer Datensätze aus DB löschen

    erstmal vielen dank für deine hilfe...es kommt jetzt immer eine fehlermeldung

    und zwar


    Fatal error: Call to undefined function length()

    woran kann dies liegen??

    gruß master2005
     
  4. 13. Oktober 2006
    AW: mit checkbox meherer Datensätze aus DB löschen

    Poste mal deinen Quellcode.. PHP scheint length() nicht zu kennen. Meines Wissens nach muss das auch nicht length sondern count heißen.

    Zum vorherigen Post hätte ich aber noch ne Frage.
    Wenn ich ein Formularelement habe und diesem den Namen mit eckigen Klammern dahinter gebe, wird dann der Wert des jeweiligen Elements als Array gespeichert? Habe ich so zuvor noch nicht gesehen.
     
  5. 13. Oktober 2006
    AW: mit checkbox meherer Datensätze aus DB löschen

    habe ihn dir per PN geschickt.....thx
     
  6. 13. Oktober 2006
    AW: mit checkbox meherer Datensätze aus DB löschen

    wenn es so nicht geht...hmm

    wie kann man es den dann realisieren das man zb mehrer news mit checkboxen anklickt und aufeinmal aus der DB löscht???
     
  7. 13. Oktober 2006
    AW: mit checkbox meherer Datensätze aus DB löschen

    PHP:
    $delete  $_POST [ 'delete' ];

    for(
    $i = 0 ; $i < sizeof ( $delete ); $i ++)
    {
              
    $id  $delete [ $i ];
              
    mysql_query ( "DELETE FROM ... WHERE id= $id " );
    }

    so sollts gehen
     
  8. 13. Oktober 2006
    AW: mit checkbox meherer Datensätze aus DB löschen

    perfekt xPliCt




    vielen vielen dank an dir xPliCt



    gruß master2005
     
  9. 13. Oktober 2006
    AW: mit checkbox meherer Datensätze aus DB löschen

    Hi

    Wieso denn so kompliziert mit einer Schleife?

    Mit join geht das viel performanter, da man ja MySQL-Queries in Schleifen vermeiden sollte (manchmal gehts nicht anders ^^).

    PHP:
    $sqladd  join ( " OR id = " $_POST [ 'delete' ]);

    $sql  "DELETE FROM ... WHERE id = " . $sqladd . ";" ;
    $result  mysql_query ( $sql ) OR die( mysql_error ());

    Eine Abfrage und alle Probleme sind gelöst

    Mfg Bl0bb
     
  10. 13. Oktober 2006
    AW: mit checkbox meherer Datensätze aus DB löschen

    Die funktion um die Länge eines Strings auszugeben lautet strlen()
    Die funktion um die elemente eines Array zu zählen lautet count()

    Für sowas ist php.net immer hilfreich .. einfach http://php.net/<funktionsname> eingeben und php.net gibt direkt den Manual-Eintrag oder - fals die funktion nicht existiert - ähnliche funktionsnamen

    Google hilft ..
    Heddesheimer Blog - Eintrag-Details: Arrays in PHP und HTML
     
  11. 13. Oktober 2006
    AW: mit checkbox meherer Datensätze aus DB löschen

    Hi!!

    Oh, das tut mir Leid, da ist mir wohl etwas Delphi mit reingerutscht ^^ da kann man nämlich mit length die Länge eines Arrays auslesen!

    Sorry...

    Schau mal HIER, sollte deine Fragen eigentlich beantwortetn

    ______________
    MrX
     
  12. 14. Oktober 2006
    AW: mit checkbox meherer Datensätze aus DB löschen

    bin jetzt nicht zu hause aber wenn ich zu hause bin dann werde ich die andere variante mal ausprobieren....danke...
     
  13. 15. Oktober 2006
    AW: mit checkbox meherer Datensätze aus DB löschen

    Ich bin gerade in der Situation auch soetwas zu gebrauchen und mir ist gerade aufgefallen, dass das mit der for Schleife gar nicht gehen kann. Wenn ich jetzt eine SQL Tabelle mit 200 Einträgen habe und davon die ersten 150 lösche, habe ich noch 50 Stück. Somit ist die Bedingung in der for Schleife TRUE, bis $i bei 50 angekommen ist. Die IDs der SQL Einträge haben allerdings die IDs 151 - 200. Sprich er versucht nur irgendwelche zu löschen. Sollte ich aber genau 50 Einträge haben, werden nicht nur angeklickte gelöscht. Habe ich z.B. von 200 Einträgen die letzten 3 mit Anklicken der CHeckbox markiert, so ist die for Schleife TRUe, bis $i bei 3 angekommen ist. Also wird versucht, die Einträge mit der ID $i zu löschen. $i ist in dem Falle aber dann ausschließlich 0-3. Die EInträge mit den IDs 198-200 bleiben aber bestehen. Sprich es werden so viele Einträge gelöscht wie angeklickt, aber es wird versucht, die ersten Einträge zu löschen, oder irre ich mich?


    //EDIT:
    Ach.. ich sollte mal lesen lernen hab nicht gerafft dass die Variablen ja die jeweilige ID als zugewiesenen Wert haben
     
  14. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.