Ankündigung

Einklappen
Keine Ankündigung bisher.

DELETE Befehl für mehrere Checkboxen

Einklappen

Neue Werbung 2019

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

  • DELETE Befehl für mehrere Checkboxen

    Ich habe eine Frage bezüglich Formular mit PHP und mehreren Checkboxen , die Texte aus einer Datenbank..

    Ich sollte Kategorien die aus einer Datenbank kommen mittels einer Checkbox anhacken können und dann sollten diese aus der Tabelle gelöscht werden...

    mein code:

    PHP-Code:
    <?php
    <center><form name="entfernen" method="post" action'<?php echo $PHP_SELF; ?>'>
                <?
    php
                        $abfrage 
    "select ctc.customers_id, ctc.categories_id, cd.categories_id, cd.categories_name FROM customer_to_categories ctc,  categories_description cd  where cd.categories_id = ctc.categories_id and customers_id = $customer_id";
                        
    $ergebnis mysql_query($abfrage);
                        echo 
    "<table border='0'><tr><td class='main'>[b]Ihre Drucker:[/b]</td></tr>";
                        while (
    $row mysql_fetch_array($ergebnis))
                            {
                            echo 
    "<tr><td class='main'><input type='checkbox' name='".$row[categories_id]."' value=' echo $checkbox; '>"  $row['categories_name'] . "</td></tr>";
                            
                        }
                        echo 
    "</table>
    "
    ;
                        
                
    ?>
                
                <input type=hidden name=flag value=1>
                <?php echo tep_draw_input_field('abschicken''Drucker entfernen'$parameters 'class="button"''submit'); ?>
                
                </form></center>
                <?php
                $ent1 
    $_REQUEST['".$row[categories_id]."'];
                
                if (
    $flag==1) {                            
                                
    $ent "DELETE FROM customer_to_categories WHERE categories_id = ".$ent1;
                                
    $entfern mysql_query ($ent$db);
                                echo 
    mysql_error();
                                while (
    $zeile mysql_fetch_array($ergebnis)) {
                                    echo 
    "Die Datensätze" .$zeile[categories_name]. " wurden herausgelöscht!";                            
                                }
                }
                
    ?>
    ?>
    Wie ermittle ich jetzt ganau diese categories_name die angehackt wurden und wie lösche ich diese wenn es mehrere sind aus der Tabelle von der Datenbank heraus??

    Kann mir da irgend jemand weiterhelfen?? wäre echt nett!!

    gruß


  • #2
    Hi
    Mal schaun'....

    Wenn ich mich nicht täusche befindet sich in $ent1 ein Array.

    Stichwort: foreach
    Innerhalb dann die delete Anweisung.
    Musst du noch anpassen.

    Kommentar


    • #3
      Leider kenne ich die foreach funktion so gut wie gar nicht..

      könntest du mir ein bisschen auf die sprünge helfen, wie und wo ich diese einbaue und vor allem wie ich sie definiere usw...

      Kommentar


      • #4
        www.php.net/foreach

        ein bisschen MUSST du schon lesen !

        lass dir mit print_r($ent1); mal das Array
        anzeigen. Befinden sich die gewünschten id's
        aus den Checkboxen darin, dann bist du schon
        auf einem guten Weg !

        Wenn du gar nicht klar kommst schau ich nochmal

        Kommentar


        • #5
          Ok, ich habs mir jetzt einmal durchgelesen, mich informiert und gleich ausprobiert!!

          Irgend wie geht noch gar nichts, als erstes zeigt er mir eine Fehlermeldung an:
          PHP-Code:
          <?php
          Parse error
          parse error in C:\Programme\xampp\htdocs\php\oscommerce\oscommerce-2.2ms2\catalog\printer_ent.php on line 109

          ?>
          Das ist mein Quelltext:
          PHP-Code:
          <?php
          <center><form name="entfernen" method="post" action'<?php echo $PHP_SELF; ?>'
                   <?
          php 
                         $abfrage 
          "select ctc.customers_id, ctc.categories_id, cd.categories_id, cd.categories_name FROM customer_to_categories ctc,  categories_description cd  where cd.categories_id = ctc.categories_id and customers_id = $customer_id"
                         
          $ergebnis mysql_query($abfrage); 
                         echo 
          "<table border='0'><tr><td class='main'>[b]Ihre Drucker:[/b]</td></tr>"
                         while (
          $row mysql_fetch_array($ergebnis)) 
                            { 
                            echo 
          "<tr><td class='main'><input type='checkbox' name='".$row[categories_id]."' value=' echo $checkbox; '>"  $row['categories_name'] . "</td></tr>"
                             
                         } 
                         echo 
          "</table>
          "

                          
                   
          ?> 
                    
                   <input type=hidden name=flag value=1> 
                   <?php echo tep_draw_input_field('abschicken''Drucker entfernen'$parameters 'class="button"''submit'); ?> 
                    
                   </form></center> 
                   <?php 
                   $ent1 
          $_REQUEST['".$row[categories_id]."']; 
                     
                   if (
          $flag==1) { 
                               foreach(
          $ent1) { 
                                  
          $ent "DELETE FROM customer_to_categories WHERE categories_id = ".$ent1
                                   
          $entfern mysql_query ($ent$db); 
                                   echo 
          mysql_error(); 
                               
          print_r($ent1);    
                               } 
                   } 
                   
                   
          ?> 
          ?>
          Hab ich mit dem foreach etwas falsch gemacht, weil ich bin mir nicht ganz sicher, weil ich einiges durch probieren wieder herumgeändert habe!!

          Kommentar


          • #6
            jo fehler.
            Bist du sicher das du dir die Syntax durchgelesen hast ???

            foreach (array_expression as $value) Anweisung
            foreach (array_expression as $key => $value) Anweisung
            Unten auf der php.net Seite stehen sogar Beispiele.
            Lesen... ...LESEN... ... WIRKLICH LESEN...

            Ich weiß, aller anfang ist schwer, aber nur so LERNST du was

            Mal so am Rande wenn du einen Parse Error in Zeile 109 hast,
            dann währe es toll (besser zwingend erforderlich) diese Zeile
            mal zu makieren. Du hast nun schon ü 40 Beiträge, da sollte
            man so etwas wissen. Ist aber nicht bös gemeint.

            foreach($ent1 as $hilfsvar1)
            Danach benutzt du einfach $hilfsvar1 anstatt $ent1 in der Schleife.

            Und $hilfsvar1 sollte in der Query dann auch innerhalb der "" stehen
            wenn ich mich nicht irre.

            Und mach das print_r aus der Schleife raus, da steht eh immer das
            selbe drin.

            So starte nochmal nen Versuch... bin gespannt

            Kommentar


            • #7
              Sorry, das war die alte (Probier)Datei, habe es selber erst jetzt mitbekommen, aber irgendwie funktioniert es ja so auch nicht...
              den einen fehler on line 109 habe ich schon gefunden und ausgebessert...

              mein jetziger code:

              PHP-Code:
              <?php
              <center><form name="entfernen" method="post" action'<?php echo $PHP_SELF; ?>'
                       <?
              php 
                             $abfrage 
              "select ctc.customers_id, ctc.categories_id, cd.categories_id, cd.categories_name FROM customer_to_categories ctc,  categories_description cd  where cd.categories_id = ctc.categories_id and customers_id = $customer_id"
                             
              $ergebnis mysql_query($abfrage); 
                             echo 
              "<table border='0'><tr><td class='main'>[b]Ihre Drucker:[/b]</td></tr>"
                             while (
              $row mysql_fetch_array($ergebnis)) 
                                { 
                                echo 
              "<tr><td class='main'><input type='checkbox' name='".$row[categories_id]."' value=' echo $checkbox; '>"  $row['categories_name'] . "</td></tr>"
                                 
                             } 
                             echo 
              "</table>
              "

                       
              ?> 
                       <input type=hidden name=flag value=1> 
                       <?php echo tep_draw_input_field('abschicken''Drucker entfernen'$parameters 'class="button"''submit'); ?> 
                        
                       </form></center> 
                       <?php 
                       $ent1 
              $_REQUEST['".$row[categories_id]."']; 
                       if (
              $flag==1) {
                                while (
              $a mysql_fetch_array($entfern)) {
                                   foreach(
              $ent1 as $entfernenvar)  { 
                                      
              $ent "DELETE FROM customer_to_categories WHERE categories_id = ".$entfernvar
                                       
              $entfern mysql_query ($ent$db); 
                                       echo 
              mysql_error(); 
                                          
                                       }
                                   } 
                       } 
                       
              ?> 
              ?>
              Ja tut mir nochmals leid, bin heut noch nicht ganz bei der Sache...

              Kommentar


              • #8
                Die while schleife ist müll. löschen.
                und lese in meinem letzten post nochmal
                den 3. letzten Satz.


                ansonsten näherst du dich der Lösung. (vielleicht) :P

                Kommentar


                • #9
                  PHP-Code:
                  <?php
                  Warning
                  Invalid argument supplied for foreach() in C:\Programme\xampp\htdocs\php\oscommerce\oscommerce-2.2ms2\catalog\printer_ent.php on line 106

                  ?>
                  Fehlermeldung zu diesem Code:

                  PHP-Code:
                  <?php
                  <?php 
                           $ent1 
                  $_REQUEST['".$row[categories_id]."']; 
                           if (
                  $flag==1) {
                                    foreach(
                  $ent1 as $entfernenvar)  { 
                                          
                  $ent "DELETE FROM customer_to_categories WHERE categories_id = ".$entfernvar
                                           
                  $entfern mysql_query ($entfernenvar$db); 
                                           echo 
                  mysql_error(); 
                                              
                                           
                                  } 
                           } 
                           
                  ?> 
                  ?>

                  Kommentar


                  • #10
                    line 106 is die Zeile mit dem foreach!!!

                    Kommentar


                    • #11
                      dann ist $ent1 kein array.
                      Muss ich nochmal genauer lesen
                      hab gerade keine Zeit veilleicht
                      heut abend.

                      Kommentar


                      • #12
                        Ich habe jetzt so überprüft ob $ent1 ein Array ist:
                        PHP-Code:
                        <?php
                        $ent1 
                        $_REQUEST[' . $row[categories_id]. ']; 
                              
                              if (
                        is_array($ent1)) 
                                { 
                                    echo 
                        "/$ent1 ist ein Array"
                                } else { 
                                 echo 
                        "/$ent1 ist kein Array"
                              }

                        ?>
                        Er liefert mir:

                        PHP-Code:
                        <?php
                        ist kein Array 
                        ?>
                        Wie kann ich bezwecken dass es ein Array wird, so dass ich mehrere Datensätze herauslöschen kann, kommt halt drauf an wieviele dass der user anhackt!!

                        mein jetziger aktueller code:
                        PHP-Code:
                        <?php
                        if (!$flag) {
                          
                        ?>
                          <center><form name="entfernen" method="post" action'<?php echo $PHP_SELF?>'> 
                                <?php 
                                      $abfrage 
                        "select ctc.customers_id, ctc.categories_id, cd.categories_id, cd.categories_name FROM customer_to_categories ctc,  categories_description cd  where cd.categories_id = ctc.categories_id and customers_id =" .$customer_id
                                      
                        $ergebnis mysql_query($abfrage); 
                                      echo 
                        "<table border='0'><tr><td class='main'>[b]Ihre Drucker:[/b]</td></tr>"
                                      while (
                        $row mysql_fetch_array($ergebnis)) 
                                         { 
                              echo 
                        "<tr><td class='main'>
                              <input type='checkbox' name='" 
                        $row[categories_id] . "' value=' echo $checkbox; ' value='1'>"  $row['categories_name'] . "</td></tr>"
                                      } 
                                      echo 
                        "</table>
                        "

                                
                        ?> 
                                <input type=hidden name=flag value=1> 
                                <?php echo tep_draw_input_field('abschicken''Drucker entfernen'$parameters 'class="button"''submit'); ?> 
                                 
                                </form></center> 
                                <?php
                          

                                    
                        $ent1 $_REQUEST[' . $row[categories_id]. ']; 
                              
                             
                        /* if (is_array($ent1)) 
                                { 
                                    echo "/$ent1 ist ein Array"; 
                                } else { 
                                 echo "/$ent1 ist kein Array"; 
                              } */
                            
                        if ($flag==1) {
                              if (
                        $ent1 == 1) {
                               foreach(
                        $ent1 as $entfernenvar)  { 
                               
                        $ent "DELETE FROM customer_to_categories WHERE categories_id = ".$entfernenvar
                                               
                        $entfern mysql_query ($entfernenvar$db); 
                                               echo 
                        mysql_error(); 
                             } 
                              }
                                  } 
                        ?>

                        Kommentar


                        • #13
                          PHP-Code:
                          <?php
                          echo "<tr><td class='main'> 
                                <input type='checkbox' name='" 
                          $row[categories_id] . "' value=' echo $checkbox; ' value='1'>"  $row['categories_name'] . "</td></tr>";  
                          ?>
                          PHP-Code:
                          <?php
                          echo "<tr><td class='main'> 
                                <input type='checkbox' name='chkbx_array[]' value='
                          $row[categories_id]'>  $row['categories_name'] </td></tr>";  
                          ?>
                          und dann

                          PHP-Code:
                          <?php
                          $ent1
                          =$_REQUEST['chkbx_array'];
                          print_r($ent1);
                          ?>

                          Dann sollte das auch ein Array sein.
                          Ist dir klar das du 2x value in der checkbox verwendet hast ?

                          Du musst echt auf sauberen Code achten.
                          Bin selber schon schlampig. Aber du bist, mit verlaub,
                          der Burner

                          Hab's oben nicht getestet, aber so sollte es gehen

                          Kommentar


                          • #14
                            Danke für deine Tipps, habe die Fehler gleich mal ausgebessert!!!

                            So jetzt ist es ein Array, nur kommt diese Fehlermeldung wenn ich die Kategoire mit der id 33 auswähle:

                            PHP-Code:
                            <?php
                            You have an error in your SQL syntax
                            check the manual that corresponds to your MySQL server version for the right syntax to use near '33' at line 1
                            ?>
                            Und diese Fehlermeldung wenn ich die Kategorie mit der ID 34 auswähle:

                            PHP-Code:
                            <?php
                            You have an error in your SQL syntax
                            check the manual that corresponds to your MySQL server version for the right syntax to use near '34' at line 1 
                            ?>
                            Also ich seh schon, es dauert nicht mehr lange, dann muss es funktionieren*gg*

                            Kommentar


                            • #15
                              [edit]:
                              Uuuups ich bin auch schon müde !

                              Sorry !

                              Kommentar

                              Lädt...
                              X