Ankündigung

Einklappen
Keine Ankündigung bisher.

geziehltes löschen mit DELETE befehl

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • LA-Finest
    hat ein Thema erstellt geziehltes löschen mit DELETE befehl.

    geziehltes löschen mit DELETE befehl

    Hi,

    hab folgendes Problem:

    hab eine Tabelle die News beinhaltet, nun möchte ich noch eine Löschfunktion einbauen, inder der Benutzer durch selektieren (checkboxen) der News, diese aus dem System löschen kann.

    hab dies folgend umgesetzt:
    PHP-Code:
    <?php

    // DB verbindung herstellen
    $db mysql_connect($_config['host'], $_config['user'], $_config['password'])
            or die(
    '<pre>'mysql_error().'</pre>' );

            
    mysql_select_db($_config['database']);
            
            
            
    $sql "SELECT news_titel, zeit, ID, news_art
                    FROM newssystem
                    ORDER BY zeit"
    ;
                    
            
    $result mysql_query($sql)
                                 or die(
    mysql_error().'
    Query: '
    .$sql);

    echo 
    "<form action='news_loeschen.php' method='post'>
        <table width='500' border='1' style='table-layout:fixed'>
          <tr>
            <th></th><th>Titel</th><th>Kategorie</th><th>Löschen</th><th>ID</th>
          </tr>"
    ;
    while(
    $row mysql_fetch_row($result))
    {
      
    $_SESSION['obj_id'] = $row[2];
    echo
    "<tr width='500'>
          <td><input type='checkbox' name='check_del' value="
    .$_SESSION['obj_id']."></td><td width='400'>[b]$row[0][/b]</td><td width='125'>$row[3]</td><td><a href=\"news_loeschen.php?id=".$_SESSION['obj_id']."\">Löschen</a></td><td width='50'>ID: ".$_SESSION['obj_id']."</td>
          </tr>"
    ;
    ?>
    das einzeln löschen mit dem link funzt bereits was mir aber zu billig ist ^^

    nun habe ich dann das problem, wie ich mehrere einträge auf einmal lösch:

    hab dies so mal probiert im verarbeitungs script:

    PHP-Code:
    <?php

    $id 
    $_SESSION['obj_id'];

    if (
    $_POST['del_check'] == true)
    {
        
    reset($id);
        foreach(
    $id AS $arr_id)
        {

      
    $sql_löschen "DELETE FROM newssystem
                      WHERE ID = '
    $arr_id'";
      
    $result_löschen mysql_query($sql_löschen)
      OR die(
    mysql_error()."  ".mysql_errno());
      
      
    header"Location: http://p31276:1080/~d043622/php/bazubi.com/news/news_uebersicht.php");
      exit();
      
      
    $_SESSION['popup'] = '8';
      
      
    mysql_close($db);
      }
    }
    else
    {
      echo
    "fehler";
    }

    ?>
    aber es funktioniert so nicht.

    habt ihr ne Idee??

    Danke im vorraus.

    gruß la-finest

  • Andreas
    antwortet
    Gern geschehen.
    Das geht natürlich auch...
    Nachteil an deiner Variante ist, du sendest unter Umständen 100 Querys an die Datenbank. Das verursacht unnötig Datenbanklast.

    Einen Kommentar schreiben:


  • LA-Finest
    antwortet
    habs jetzt *voll freu*

    habs nun mit ner foreach schleife gelöst:

    PHP-Code:
    <?php
    foreach($_REQUEST['check_del'] AS $var)
     {
       
    $sql "DELETE FROM newssystem
                  WHERE ID = '
    $var'";

       
    $result mysql_query($sql)
       OR die(
    mysql_error()."  ".mysql_errno());
     }
    ?>
    danke andreas für deine hilfestellung

    have a nice day

    gruß la-finest

    Einen Kommentar schreiben:


  • Andreas
    antwortet
    Erstmal bitte beachten:
    Man nimmt in keinen Variablennamen Umlaute...
    $sql_löschen fällt somit aus. Nimm $query oder sowas.


    You have an error in your SQL syntax near '45)' at line 2 1064 => Das bedeutet, dass der Query nicht ausgeführt werden kann.

    Warum gibst du den Query der entsteht nicht mal aus, dann kann man auch sehen was falsch gelaufen ist.
    PHP-Code:
    <?php
    echo $query
    // in deinem fall:
    // echo $sql_löschen
    // *schauder* Wenn ich das schreibe läufts mir eiskalt den Rücken runter:)
    ?>
    Meine Antwort war auch mehr ein Anstoß zum selber überlegen, kein fertiges Script, welches nur noch kopiert werden soll. Das ist denke ich bei fast allen Antworten, die du hier bekommst so. Doktor erst selber mal n bisschen rum. Wenns dann noch nicht funktioniert, dann nochmal fragen. Aber mehr als 10 Minuten solltest du mit selbst probieren eigentlich nicht brauchen.

    Einen Kommentar schreiben:


  • LA-Finest
    antwortet
    Also nun sind die werte in dem array drin, hab ich anhand von error_reporting(E_ALL); gesehen.

    Aber nun bringt er mir den fehler bei dem implode:

    array(2) {
    ["check_del"]=>
    array(2) {
    [0]=>
    string(2) "42" //1. selectierte checkbox
    [1]=>
    string(2) "45" //2. selectierte checkbox
    }
    ["del_check"]=>
    string(13) " löschen "
    }

    You have an error in your SQL syntax near '45)' at line 2 1064
    hier der code:

    PHP-Code:
    <?php
    $sql_löschen 
    "DELETE FROM newssystem
                      WHERE ID = ("
    .implode(",",$_REQUEST['check_del']).")";
    ?>
    sowie ich jetzt den fehler interpretier, löscht er nur den 1. datensatz.

    Einen Kommentar schreiben:


  • Andreas
    antwortet
    Mach ein Formular-Array...
    Code:
    <input type="checkbox" name="del_check[]" value="<?=$_SESSION['obj_id']?>">
    und dann
    Code:
    $sQuery = "DELETE FROM newssystem WHERE ID IN (".implode(",",$_REQUEST["del_check"]).")";
    Bitte beim nächsten mal die Suchfunktion und/oder Google benutzen...

    Einen Kommentar schreiben:

Lädt...
X