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

  • 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
    Eine Programmiersprache kann man nicht perfekt beherrschen,
    nur gut.
    Ansonsten hätte man sie erfunden!

    www.bazubi.com/forum --> allgem. IT-Forum

  • #2
    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...
    Tutorials zum Thema Technik:
    https://pilabor.com
    https://www.fynder.de

    Kommentar


    • #3
      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.
      Eine Programmiersprache kann man nicht perfekt beherrschen,
      nur gut.
      Ansonsten hätte man sie erfunden!

      www.bazubi.com/forum --> allgem. IT-Forum

      Kommentar


      • #4
        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.
        Tutorials zum Thema Technik:
        https://pilabor.com
        https://www.fynder.de

        Kommentar


        • #5
          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
          Eine Programmiersprache kann man nicht perfekt beherrschen,
          nur gut.
          Ansonsten hätte man sie erfunden!

          www.bazubi.com/forum --> allgem. IT-Forum

          Kommentar


          • #6
            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.
            Tutorials zum Thema Technik:
            https://pilabor.com
            https://www.fynder.de

            Kommentar

            Lädt...
            X