Gästebuch Problem...

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

  • Gästebuch Problem...

    Hallo,
    ich habe ein normales Gästebuch programmiert, nur wenn man sich da einträgt, wird der Eintrag in die Mysql Tabelle "gbuch2" eingetragen (das Gästebuch selbst liest "gbuch" aus). Über ein Admin Formular soll man die Einträge bestätigen/löschen können.
    Da habe ich jetzt folgendes gemacht:

    PHP-Code:
    <form method="post" action="gbuch_edit.php">
    <?php
    include("dbconnect.php");
    include(
    "config.php");

    echo 
    "<table border=\"0\" width=\"90%\" class=\"content\">";
    echo 
    "<tr>
            <td>
            bestätigen
              </td>
            <td>
            löschen
              </td>
            <td>"
    ;
    echo 
    "Name";
    echo     
    "</td>
             <td>"
    ;
    echo 
    "Datum";
    echo     
    "</td>
             <td>"
    ;
    echo 
    "Text";
    echo     
    "</td>
            </tr>"
    ;
    $result mysql_query("SELECT
     id, name, datum, email, homepage, text FROM 
    $gbuch2 ORDER BY id desc");
    while(
    $row mysql_fetch_array($result))
        {
    echo 
    "<tr>
            <td>
            <input name=\"bestaetigen\" type=\"checkbox\" value=\"bestaetigen\">
              </td>
            <td>
            <input name=\"loeschen\" type=\"checkbox\" value=\"loeschen\">
              </td>
            <td>"
    ;
    echo 
    $row['name'];
    echo     
    "</td>
             <td>"
    ;
    echo 
    $row['datum'];
    echo     
    "</td>
             <td>"
    ;
    echo 
    $row['text'];
    echo     
    "</td>
            </tr><input name=\"name\" type=\"hidden\" value=\""
    ;
    echo 
    $row['name'];
    echo     
    "\"><input name=\"datum\" type=\"hidden\" value=\"";
    echo 
    $row['datum'];
    echo     
    "\"><input name=\"email\" type=\"hidden\" value=\"";
    echo 
    $row['email'];
    echo     
    "\"><input name=\"homepage\" type=\"hidden\" value=\"";
    echo 
    $row['homepage'];
    echo     
    "\"><input name=\"text\" type=\"hidden\" value=\"";
    echo 
    $row['text'];
    echo 
    "\">";
        }
    echo 
    "</table>";
    ?>
    <br>
    <INPUT TYPE="submit" class="formfeld" VALUE="Senden">
    </form>
    in der gbuch_edit.php ist das Problem, da weis ich nicht genau ob ich da auch mit einer while Schleife arbeiten muss oder wie ich das anstellen soll, da habe ich momentan folgendes drin stehen:

    PHP-Code:
    <?php
    include("dbconnect.php");
    include(
    "config.php");
    mysql_query("INSERT INTO $gbuch WHERE 
    '
    $bestaetigen'='bestaetigen'(datum, name, email, homepage, text) 
    VALUES ('
    $datum',  '$name', '$email', '$homepage', '$text')");

    mysql_query("DELETE FROM $gbuch2 
    WHERE '
    $loeschen'='loeschen' OR '$bestaetigen'='bestaetigen'");
    ?>
    Zuletzt geändert von manuelone; 10.01.2005, 19:03.

  • #2
    Re: Gästebuch Problem...

    Original geschrieben von manuelone
    ich habe ein normales Gästebuch programmiert, nur wenn man sich da einträgt, wird der Eintrag in die Mysql Tabelle "gbuch2" eingetragen (das Gästebuch selbst liest "gbuch" aus). Über ein Admin Formular soll man die Einträge bestätigen/löschen können.
    zu diesem zweck zwei tabellen zu benutzen, ist absoluter unfug.

    nutze eine tabelle mit einer zusätzlichen kennzeichen-spalte für den status, ob der beitrag zur anzeige freigegeben ist oder nicht, und update vom admin-menü aus lediglich diese spalte.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Ok, das stimmt, hab das gerade mal umgebaut, das klappt jetzt auchso halb!

      Nur das folgende stimmt noch nicht ganz:

      PHP-Code:
      <?php
      include("dbconnect.php");
      include(
      "config.php");
      mysql_query("UPDATE $gbuch SET status='aktiv' WHERE 
      '
      $bestaetigen'='bestaetigen'");
      mysql_query("DELETE FROM $gbuch WHERE '$loeschen'='loeschen'");
      ?>
      Wenn ich zwei unbestätigte Einträge in der while Schleife habe und nur einen z.b. davon bestätige ( status = aktiv setzte), bestätigt er den anderen Eintrag auch gleich. Irgendwie brauch ich bei dem oben stehenden noch ne while Schleife oder so... weis aber net genau... kann mir da jemand helfen??

      Danke aber schonmal an dich, wahsaga.
      Zuletzt geändert von manuelone; 10.01.2005, 19:04.

      Kommentar


      • #4
        http://www.php-resource.de/forum/sho...threadid=47906 lesen

        Kommentar


        • #5
          Original geschrieben von TobiaZ
          http://www.php-resource.de/forum/sho...threadid=47906 lesen
          Sorry, hab ziemlich hohe Auflösung, so besser/ok?

          Kommentar


          • #6
            Original geschrieben von manuelone
            Sorry, hab ziemlich hohe Auflösung, so besser/ok?
            jo, so gehts...


            Wenn du mehrere Einträge auf einmal validieren willst, musst du die Checkboxen als Array markieren, d.h.
            PHP-Code:
            echo '<input name="ids[]" type="checkbox" value="' $row['id'] . '">'
            in der While-Schleife und dann irgendwo am Ende nen Submit-Button, das machst du mal rein, dann schreibst du auf der Seite, wo die Verarbeitung stattfinden soll mal
            PHP-Code:
            echo '<pre>' print_r($_POSTtrue) . '</pre>'
            Und dann guckst du dir mal an, was passiert, wenn du unterschiedliche Einträge markierst, das alles ohne irgendwas im 2. Skript an der DB zu machen, d.h. du kommentierst alles aus.
            Sobald du denkst, du hast verstanden, wie die Übertragung der Checkboxen+id funktioniert, baust du mir der Hilfe von foreach die Querys und zwar genau EINEN Query pro Eintrag.

            Solltest du damit noch Probleme haben, dann postest du mal deine TabellenStruktur, wie du das jetzt mit der Statusspalte geregelt hast und deine Versuche und wir gucken weiter.

            Außerdem ist "WHERE id = " in fast jedem Query, wo UPDATE oder DELETE vorkommt zu empfehlen! (kann sonst böse Überraschungen geben >_>)
            [edit] Okay, ich seh grad, das ich irgendwie n Knick inner Pupille hatte, als ich mir den Query angesehen hab...aber trotzdem verstehe ich den nicht ganz...
            PHP-Code:
            mysql_query("DELETE FROM $gbuch2 
            WHERE '
            $loeschen'='loeschen' OR '$bestaetigen'='bestaetigen'"); 
            Was ist denn in $loeschen? Ein Spaltenname??? Wieso steht der in Anführungszeichen? Und wo kommt der her? Aus der includierten config? (btw. statt include besser require nutzen!)
            Zuletzt geändert von ghostgambler; 10.01.2005, 19:20.

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              ich schau mir das mal an.

              zu dem loeschen und bestaetigen, das sind jewals die checkboxen für jede zeile... wenn die checkbox loeschen angeklickt ist, soll die Zeile gelöscht werden und wenn bestaetigen angeklickt ist soll in der Zeile die Zelle "status" auf "aktiv" gesetzt werden.

              Kommentar


              • #8
                Original geschrieben von manuelone
                ich schau mir das mal an.

                zu dem loeschen und bestaetigen, das sind jewals die checkboxen für jede zeile... wenn die checkbox loeschen angeklickt ist, soll die Zeile gelöscht werden und wenn bestaetigen angeklickt ist soll in der Zeile die Zelle "status" auf "aktiv" gesetzt werden.
                Du musst für das Löschen auch Boxen setzen, mit einem anderen Namen, jedoch auch mit den eckigen Klammern dahinter!

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  also unten steht ja schon wie Du die checkboxen anlegst
                  Du möchtest zweio eine loeschen, eine bestaetigen also mach zwei:

                  echo '<input name="loeschen[]" type="checkbox" value="' . $row['id'] . '">';
                  echo '<input name="bestaetigen[]" type="checkbox" value="' . $row['id'] . '">';

                  Du musst also die löschen bei denen der value von $_POST['loeschen'] die ID is:
                  am besten Du nimmst alle $_POST['loeschen'] in einein String
                  $loeschen = implode(',',$_POST['loeschen']);
                  ich hab jetzt keine sicherheitsabfragen gemacht
                  und jetzt eben löschen

                  DELETE FROM gbuch2 WHERE ID IN($loeschen)

                  bestaetigen geht genauso im prinzip
                  Beantworte nie Threads mit mehr als 15 followups...
                  Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                  Kommentar


                  • #10
                    hab das jetzt mal alles so gemacht wie mellopie das gesagt hat.
                    Ich habe die:
                    $loeschen = implode(',',$_POST['loeschen']);
                    $bestaetigen = implode(',',$_POST['bestaetigen']);

                    in die while-schleife gemacht und dann bekomme ich folgende fehlermeldung:
                    Warning: implode() [function.implode]: Bad arguments. in /www/htdocs/v135442/admin/gbuch_edit_form.php on line 53

                    Warning: implode() [function.implode]: Bad arguments. in /www/htdocs/v135442/admin/gbuch_edit_form.php on line 52

                    Kommentar


                    • #11
                      nich in die while schleife,
                      welche while schleife?
                      Du musst auch verstehen was Du tust oder wenigstens mal logisch nachvollziehen sonst bringt das nichts.
                      Beantworte nie Threads mit mehr als 15 followups...
                      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                      Kommentar


                      • #12
                        ich weis was ich tuh, nur weis ich nich genau wo die hin sollen außerhalb der while-schleife ist der gleiche fehler.

                        Kommentar


                        • #13
                          code + formular?
                          Beantworte nie Threads mit mehr als 15 followups...
                          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                          Kommentar


                          • #14
                            PHP-Code:
                            <form method="post" action="gbuch_edit.php">
                            <?php
                            include("dbconnect.php");
                            include(
                            "config.php");

                            echo 
                            "<table border=\"0\" width=\"90%\" class=\"content\">";
                            echo 
                            "<tr>
                                    <td>
                                    bestätigen
                                      </td>
                                    <td>
                                    löschen
                                      </td>
                                    <td>"
                            ;
                            echo 
                            "Name";
                            echo     
                            "</td>
                                     <td>"
                            ;
                            echo 
                            "Datum";
                            echo     
                            "</td>
                                     <td>"
                            ;
                            echo 
                            "Text";
                            echo     
                            "</td>
                                    </tr>"
                            ;
                            $result mysql_query("SELECT id, name, datum, email, homepage, 
                            text, status FROM 
                            $gbuch WHERE status='inaktiv' ORDER BY id desc");
                            while(
                            $row mysql_fetch_array($result))
                                {
                            echo 
                            "<tr>
                                    <td>
                                    <input name=\"bestaetigen[]\" type=\"checkbox\" value=\"' . 
                            $row['id'] . '\">
                                      </td>
                                    <td>
                                    <input name=\"loeschen[]\" type=\"checkbox\" value=\"' . 
                            $row['id'] . '\">
                                      </td>
                                    <td>"
                            ;
                            echo 
                            $row['name'];
                            echo     
                            "</td>
                                     <td>"
                            ;
                            echo 
                            $row['datum'];
                            echo     
                            "</td>
                                     <td>"
                            ;
                            echo 
                            $row['text'];
                            echo     
                            "</td>
                                    </tr>"
                            ;
                            $loeschen implode(',',$_POST['loeschen']);
                            $bestaetigen implode(',',$_POST['bestaetigen']);
                                }
                            echo 
                            "</table>";
                            ?>
                            <br>
                            <INPUT TYPE="submit" class="formfeld" VALUE="Senden">
                            </form>
                            PHP-Code:
                            <?php
                            include("dbconnect.php");
                            include(
                            "config.php");
                            mysql_query("UPDATE $gbuch SET status='aktiv' WHERE ID 
                            IN(
                            $bestaetigen)");
                            mysql_query("DELETE FROM $gbuch WHERE ID IN($loeschen)");
                            ?>

                            Kommentar


                            • #15
                              hehe das is ja lustig Du weisst also was Du tust?
                              naja
                              $loeschen = implode(',',$_POST['loeschen']);
                              $bestaetigen = implode(',',$_POST['bestaetigen']);
                              kann erst ausgeführt werden wenn das Formular abgeschickt wurde...
                              also in der datei gbuch_edit.php

                              <?php
                              include("dbconnect.php");
                              include("config.php");
                              /*
                              * diese zwei zeilen sind allerdings unsicher und stellen nur meinen ansatz dar...
                              */
                              $loeschen = implode(',',$_POST['loeschen']);
                              $bestaetigen = implode(',',$_POST['bestaetigen']);

                              mysql_query("UPDATE $gbuch SET status='aktiv' WHERE ID
                              IN($bestaetigen)");
                              mysql_query("DELETE FROM $gbuch WHERE ID IN($loeschen)");
                              ?>
                              Beantworte nie Threads mit mehr als 15 followups...
                              Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                              Kommentar

                              Lädt...
                              X