DELETE Schleife mit $_REQUEST und Checkboxen

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

  • DELETE Schleife mit $_REQUEST und Checkboxen

    Ich hoffe Ihr könnt mir helfen:

    Ich habe eine Liste von Headlines aus der Datenbank generiert und dazugehörige Checkboxen. Wenn man diese Checkboxen anwählt und das Formular abschickt, sollen die markierten aus der Datenbank gelöscht werden. Jede Checkbox ist mit der dazugehörigen Headline Id gekennzeichnet. Funktionierte ganz toll, bis der WebAuftritt auf den neuen Server geschaufelt wurde. Klare Sache: register_globals=off... Doch wie krieg ich mein Array wieder hin:


    Checkbox:

    PHP-Code:
    if ($_REQUEST["action"]=='delete') { 
    mein Delete Script:

    PHP-Code:
    if ($_REQUEST["action"]=='delete') {
        
    $countDelete=count($_REQUEST["deleteBox"]);
        
    $whereClause="WHERE news_id='".$_REQUEST["deleteBox"][0]."'";
        
        for(
    $i=1;$i<$countDelete;$i++){
            
    $whereClause.=" OR news_id=".$_REQUEST["deleteBox"][$i].";";
        }

        
    $query="DELETE FROM News ".$whereClause;
        
        
    $query=mysql_query($query)
        or die (
    mysql_error());

    Wie krieg ich das zum Laufen?

    HILFE!!!
    Zuletzt geändert von surf_tiki; 09.07.2003, 14:20.

  • #2
    so sollte es optimal laufen.
    bin auch von headline_id als id-feld ausgegangen.
    ( müsstest du evtl. anpassen. )


    Checkbox im html in einer ausgabeschleife. ist ja klar...:
    PHP-Code:
    ... name="deleteBox[]" value="<? echo $news_id?>" ....
    das formular wird via post übergeben.

    $_REQUEST nehmen wir mal nicht...

    Dein Delete Script:

    PHP-Code:
    <?php

        
    if (isset($_POST['action']) && $_POST['action']=='delete' && isset($_POST['deleteBox']))
        {
            if (
    count($_POST['deleteBox']) > 0)
            {
                
    $sql 'DELETE FROM News WHERE headline_id IN ('.implode(','$_POST['deleteBox']).')';
                
    $res mysql_query($sql) or die (mysql_error());
            }
        }

    ?>
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Re: DELETE Schleife mit $_REQUEST und Checkboxen

      $_REQUEST[] ist veraltet, bei einer neueren php-version benutzt du stattdessen $_GET[] oder $_POST[] (je nachdem, welche übertragungsmethode dein formular nutzt).
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        SQL ERROR

        Ihr seid ja wahnsinnig schnell! Danke erstmal!

        Das Script scheint mir einwandfrei zu sein, doch bekomme ich einen

        You have an error in your SQL syntax near ')' at line 1

        ???

        Kommentar


        • #5
          $_REQUEST ist NICHT veraltet, im gegenteil, gehört zu den neueren superglobals

          es vereint einfach get, post, session, cookie (noch was ? *g*)

          ich zb verwende $_REQUEST dann, wenn ich getrost davon ausgehen kann dass nix passiert ..

          domain.tld/?logout=1

          PHP-Code:
          <?php
          if (isset($_REQUEST['logout']) { /* etc */ }
          ?>
          mfg,
          [color=#0080c0]Coragon[/color]

          Kommentar


          • #6
            Re: SQL ERROR

            Original geschrieben von surf_tiki
            You have an error in your SQL syntax near ')' at line 1
            ich habs nicht getestet....

            PHP-Code:
            // gib mal nach
            $sql "DELETE FROM..... ";

            // das hier aus
            echo '<pre>'.$sql.'</pre>'
            ausgabe?
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              PHP-Code:
              DELETE FROM News WHERE news_id IN () 

              Kommentar


              • #8
                hast du mein script 1:1 übernommen , oder änderungen gemacht?

                eigentlich prüft das script alles ab, um diesen fehler nicht zu produzieren.
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  ich hab das script 1:1 übernommen.
                  Hab nur die headline_id in news_id umbenannt. ...

                  Kommentar


                  • #10
                    wie sieht das html-formular aus?
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      danke dass du dir die zeit nimmst


                      PHP-Code:
                      <form action="left.php" method="post" name="newsform"  enctype="multipart/form-data">
                      <input type="hidden" name="action" value="delete">

                      <table cellpadding="0" cellspacing="0" border="0">
                          <tr>
                              <td valign="top">
                                  <table width="330" cellpadding="0" cellspacing="0" border="0">
                      <?
                      /*/////////////////////////////////
                      // News Liste                    //
                      *//////////////////////////////////

                      $query_news=mysql_query("SELECT * FROM News ORDER BY erstell_datum DESC")
                      or die (mysql_error());
                      $num_rows=mysql_num_rows($query_news);
                      if ($num_rows!=0) {
                          while ($news=mysql_fetch_array($query_news)) {
                              $erstell_datum=ts2datum($news["erstell_datum"]);
                              $news_id_liste=$news["news_id"];
                              $headline_liste=$news["headline"];
                      ?>
                                      <tr>
                                          <td><input type="checkbox" class="check" value="<? echo $news_id?>" name="deleteBox[]"></td>
                                          <td><img src="../../grafik/pixel.gif" width="5" height="1" border="0"></td>
                                          <td><strong><? echo $headline_liste?></strong> / <? echo $erstell_datum ?> / <a href="middle.php?action=edit&news_id=<?echo $news_id_liste?>" target="middle">editieren</a></td>
                                      </tr>
                      <?
                          }
                      }
                      ?>
                      <tr>
                                          <td>&nbsp;</td>
                                          <td><img src="../../grafik/quader2.gif" border="0"></td>
                                          <td><a href="javascript:deleteNews()">Auswahl l&ouml;schen</a></td>
                                      </tr>
                      </table>
                      </form>

                      Kommentar


                      • #12
                        mhm.... mache mal das am anfang der datei left.php rein.
                        PHP-Code:
                        echo '<pre>';
                        print_r($_POST['deleteBox']);
                        echo 
                        '</pre>'
                        ausgabe?
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #13
                          PHP-Code:
                          Array
                          (
                              [
                          0] => 
                              [
                          1] => 

                          Kommentar


                          • #14
                            aaarg.

                            ich habe noch einen fehler in deinem form-generier-script bei der checkbox gesehen.

                            dort gibt du ja kein value aus....


                            <? echo $news_id?>
                            $news_id gibt es nicht.

                            entweder $news_id_liste oder lieber direkt $news["news_id"] verwenden.

                            bitte tauschen und neue infos posten...
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              Ich bin ein idiot

                              Danke dir..jetzt geht´s. Hatte gestern beim rumprobieren schonmal die id geändert aber dann wohl zu oft <strg>+z und nicht mehr dran gedacht---ich danke dir.

                              Kommentar

                              Lädt...
                              X