tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
13
ZUGRIFFE
467
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    stonk stonk ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Beiträge
    104
    Tach zusammen!!

    Ich mache gerade ein kleines Nachrichtensystem. Dort sollte man mit checkboxen mehrere Nachrichten auswählen können und dann alle ausgewählen mit einem Knopfdruck löschen...
    Habe hierzu folgendes gemacht:

    Checkboxen (sind in einer Schleife):
    PHP-Code:
    ...
    <
    input type=\"checkbox\" name=\"delbox[$i]\">
    ... 
    Delete Script:
    PHP-Code:
    mysql_connect("localhost","xx","xx"); 
    mysql_select_db("usr_web640_3"); 

    for (
    $i 1$i <= count($_POST['delbox']); $i += 1)
    {
         
    $sql="DELETE FROM nachrichten WHERE ID = ".$_POST[delbox] [$i];
         
    mysql_query($sql);


    Irgendwie funktioniert es aber nicht... es kommt keine Fehlermeldung, es löscht einfach keine Datensätze...
    Kann mir jemand helfen?

    Besten Dank im Voraus
    Gruss stonk
     

  2. #2
    Registriert seit
    May 2002
    Ort
    50.59° Nord 11.21° Ost
    Beiträge
    1.837
    PHP-Code:
    echo '<input type="checkbox" name="delbox['.$i.']">'
    PHP-Code:
    mysql_connect("localhost","xx","xx"); 
    mysql_select_db("usr_web640_3"); 

    for (
    $i 1$i <= count($_POST['delbox']); $i += 1)
    {
         
    $sql "DELETE FROM `nachrichten` WHERE `ID` = '".$_POST['delbox'][$i]."'";
         
    mysql_query($sql);

    Leerzeichen zwischen ['delbox'] und [$i] halte ich für sinnlos.
     
    »

  3. #3
    Avatar von xErY
    xErY xErY ist offline Mitglied Gold
    Registriert seit
    Jul 2005
    Beiträge
    161
    Ich halte das $i für sinnlos. Es sollte da lieber die Id des Datensatzes stehen.
    also nach dem Beispiel
    Code :
    1
    2
    3
    4
    5
    
    $sql = "SELECT * FROM news_table LIMIT 0,20"; //20 einträge
    while($row = mysql_fetch_array($sql){
      //ausgaben
      echo '<input type="checkbox" name="delbox['.$i.']" value="'.$row['id'].'">'; 
    }

    weil so stimmen dann auch die ids die er löscht...
    Geändert von xErY (12.07.05 um 10:37 Uhr)
     

  4. #4
    stonk stonk ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Beiträge
    104
    danke für deine Antwort!!
    aber irgendwie funktioniert es immer noch nicht....
     

  5. #5
    stonk stonk ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Beiträge
    104
    Danke auch für deine Antwort!!

    wie müsste dann die DELETE schleife aussehen?
     

  6. #6
    Avatar von xErY
    xErY xErY ist offline Mitglied Gold
    Registriert seit
    Jul 2005
    Beiträge
    161
    so ungefähr musst ihn auf deine bedürfnisse anpassen
    PHP-Code:
      foreach($_POST['delbox'] as $box){
        
    $sql "DELETE FROM nachrichten WHERE ID= ' " .$box" ' " 
        if(
    mysql_query($sql)){
          echo 
    'Datensatz mit der ID :"'.$box.'" wurde gelöscht<br>';
       } else {
          echo 
    'Datensatz konnte nicht gelöscht werden';
       } 
      } 
     

  7. #7
    stonk stonk ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Beiträge
    104
    suuppii!!
    funktioniert!!
    danke viel mal!!
     

  8. #8
    Avatar von xErY
    xErY xErY ist offline Mitglied Gold
    Registriert seit
    Jul 2005
    Beiträge
    161
    immer wieder gerne freut mich wenn ich helfen kann
     

  9. #9
    stonk stonk ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Beiträge
    104
    Hallo nochmals...

    ist irgendwie schon komisch... gestern hat es funktioniert und als ich es vorhin wieder mal ausprobiert hatte, löschte es immer nur einen Datensatz, auch wenn ich mehrere ausgewählt hatte...

    Hier mein code:

    delete script:
    PHP-Code:
    mysql_connect("localhost","xxxx","xxxx"); 
    mysql_select_db("nachrichten"); 

    foreach(
    $_POST['delbox'] as $box){ 
        
    $sql "DELETE FROM nachrichten WHERE nachricht_id = ' " .$box" ' " 
        if(
    mysql_query($sql)){ 
            
    header('Location: index.php?id=nachrichten&status=okdelete');
            exit();
       } else { 
            
    header('Location: index.php?id=nachrichten&status=nokdelete');
            exit();
       } 
      } 
    die inputbox:
    PHP-Code:
    $i $anzeige['nachricht_id'];
    echo 
    "<input type=\"checkbox\" name=\"delbox['.$i.']\" value=\"$i\">"
    Weiss jetz wirklich nicht weiter...
    Besten dank an alle
    gruss stonk
    Geändert von stonk (13.07.05 um 10:58 Uhr)
     

  10. #10
    Avatar von xErY
    xErY xErY ist offline Mitglied Gold
    Registriert seit
    Jul 2005
    Beiträge
    161
    PHP-Code:
    mysql_connect("localhost","xxxx","xxxx"); 
    mysql_select_db("nachrichten"); 

    foreach(
    $_POST['delbox'] as $box){ 
        
    $sql "DELETE FROM nachrichten WHERE nachricht_id = ' " .$box" ' " 
        if(
    mysql_query($sql)){ 
            
    header('Location: index.php?id=nachrichten&status=okdelete'); 
            exit(); 
       } else { 
            
    header('Location: index.php?id=nachrichten&status=nokdelete'); 
            exit(); 
       } 
      } 
    also für jedes element von $_POST['delbox' als $box legste dein SQL-Statement fest.
    Wenn das SQL-Statement gequeried werden kann, also der Datensatz gelöscht werden kann. Geht er auf die seite "index.php?id=nachrichten&status=okdelete'"
    Das heisst doch laut meiner Logik, dass wenn einmal der Datensatz gelöscht werden konnte, er das script verlässt und sogar den restlichen code aufgrund des EXIT(); abbricht.

    also

    PHP-Code:
    mysql_connect("localhost","xxxx","xxxx"); 
    mysql_select_db("nachrichten"); 
    $true 1;
    foreach(
    $_POST['delbox'] as $box){ 
        
    $sql "DELETE FROM nachrichten WHERE nachricht_id = ' " .$box" ' " 
       if(!
    mysql_query($sql)){
         
    $true 0;
       }
       if(
    $true){ 
            
    header('Location: index.php?id=nachrichten&status=okdelete'); 
            exit(); 
       } else { 
            
    header('Location: index.php?id=nachrichten&status=nokdelete'); 
            exit(); 
       } 
      } 
    so müsste das gehen
     

  11. #11
    stonk stonk ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Beiträge
    104
    geht leider immer noch nicht... es löscht immer noch nur einen Datensatz und nicht mehrere....
     

  12. #12
    Avatar von xErY
    xErY xErY ist offline Mitglied Gold
    Registriert seit
    Jul 2005
    Beiträge
    161
    jo ich bin ja auch was dämlich sorry hatte noch fast gepennt

    PHP-Code:
    mysql_connect("localhost","xxxx","xxxx"); 
    mysql_select_db("nachrichten"); 
    $true 1
    foreach(
    $_POST['delbox'] as $box){ 
        
    $sql "DELETE FROM nachrichten WHERE nachricht_id = ' " .$box" ' " 
       if(!
    mysql_query($sql)){ 
         
    $true 0;
         break; 
       } else {
         
    $true 1;
       } 
    }
    if(
    $true){ 
            
    header('Location: index.php?id=nachrichten&status=okdelete'); 
            exit(); 
       } else { 
            
    header('Location: index.php?id=nachrichten&status=nokdelete'); 
            exit(); 
       } 
    Geändert von xErY (13.07.05 um 14:37 Uhr)
     

  13. #13
    stonk stonk ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Beiträge
    104
    danke viel mals, jetzt funktionierts
    perfekt!!
     

  14. #14
    Avatar von xErY
    xErY xErY ist offline Mitglied Gold
    Registriert seit
    Jul 2005
    Beiträge
    161
    jo sorry nochmal war verplant D:
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 21.05.10, 09:53
  2. Antworten: 3
    Letzter Beitrag: 18.11.08, 12:04
  3. mit Checkboxen Datensätze speichern
    Von schlimbim im Forum PHP
    Antworten: 6
    Letzter Beitrag: 29.06.06, 16:05
  4. Datensätze mittels Checkboxen löschen
    Von butrov im Forum PHP
    Antworten: 2
    Letzter Beitrag: 02.10.03, 17:37
  5. Mit checkboxen löschen
    Von Slater im Forum PHP
    Antworten: 3
    Letzter Beitrag: 10.09.02, 00:02