Formulardaten in DB

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

  • Formulardaten in DB

    hi,
    ich möchte eine speisekarte erstellen, die ich per formular aktualisieren kann.
    die inhalte werden aus der tabelle gelesen und direkt in einem formularfeld
    angezeigt von dem aus ich den inhalt auch gleich direkt
    ändern kann. bei einer zeile klappt das wunderbar. hab ich aber mehrere zeilen
    in meiner tabelle und ich ändere eine im formular, wird der inhalt auf alle
    zeilen übertragen und somit gleich

    PHP-Code:
    <?php
    # verbindung zur DB
    $include = include("../connect.php");
    # neue daten senden und eintragen
    if(isset($_POST['senden'])){
       
    $gericht $_POST['gericht'];
       
    $zutaten $_POST['zutaten'];
       
    $preis $_POST['preis'];
       
    $einfuegen mysql_query("UPDATE testgerichte SET gericht='$gericht',
     zutaten='
    $zutaten', preis='$preis' WHERE id=1 ");
       
    header("Location: test_gerichte.php");
    }

    # tabelle auswählen und inhalt in formular anzeigen
    $select mysql_query("SELECT gericht, zutaten, preis FROM testgerichte WHERE id=1");
              while(
    $inhalt mysql_fetch_array($select)){
              
    $gericht $inhalt['gericht'];
              
    $zutaten $inhalt['zutaten'];
              
    $preis $inhalt['preis'];
              print 
    "<form name='speisen[]' action='".$_SERVER['PHP_SELF']."' method='post'>
                       <input type='text' name='gericht' value='"
    .$gericht."' />
                       <input type='text' name='zutaten' value='"
    .$zutaten."' />
                       <input type='text' name='preis' value='"
    .$preis."' /><br>
                       "
    ;
              }

    ?>
    <input type ='submit' name='senden' value='senden' />
    <?php print "</form>"?>
    Zuletzt geändert von wahsaga; 02.02.2004, 09:06.

    Wo kämen wir hin, wenn jeder sagte: Wo kämen wir hin? und keiner ginge, um zu sehen, wohin wir kämen, wenn wir gingen?

  • #2
    Hi...

    Nun, da sind ein paar schwerwiegende Fehler in Deinem Skript...
    Zum ersten machst du nur einen Update bei der ID 1.
    Desweiteren schau Dir mal die Schleife bei Deinem SELECT-Befehl an, dort werden bei z.B. 10 gefundenen Einträgen 10 <form>-Tags geöffnet und nur einer geschlossen...
    Ich gehe mal davon aus, daß Du nur ein Formular haben willst, also mache den <form>-Tag auch außerhalb der Schleife.
    Ich würde es so machen:
    PHP-Code:
    <?php
    # verbindung zur DB
    $include = include("../connect.php");

    # neue daten senden und eintragen
    if(isset($_POST['senden']))
      {
        
    $id $_POST['id'];
        
    $gericht $_POST['gericht'];
        
    $zutaten $_POST['zutaten'];
        
    $preis $_POST['preis'];

        for (
    $i=0;$i<sizeof($id);$i++)
          
    mysql_query("UPDATE testgerichte SET gericht='".$gericht[$i]."',
    zutaten='"
    .$zutaten[$i]."', preis='".$preis[$i]."' WHERE id='".$id[$i]."'");

       
    header("Location: test_gerichte.php");

    }

    # tabelle auswählen und inhalt in formular anzeigen
    print "<form name=\"speisen\" action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">";
    $select mysql_query("SELECT id,gericht, zutaten, preis FROM testgerichte ORDER BY id");
    while(
    $inhalt mysql_fetch_array($select))
      {
        
    $id $inhalt['id'];
        
    $gericht $inhalt['gericht'];
        
    $zutaten $inhalt['zutaten'];
        
    $preis $inhalt['preis'];
        print 
    "<input type=\"hidden\" name=\"id[]\" value=\"".$id."\" />\n";
        print 
    "<input type=\"text\" name=\"gericht[]\" value=\"".$gericht."\" />\n";
        print 
    "<input type=\"text\" name=\"zutaten[]\" value=\"".$zutaten."\" />\n";
        print 
    "<input type=\"text\" name=\"preis[]\" value=\"".$preis."\" />\n";
        print 
    "<br /><br />\n";
      }

    print 
    "<input type=\"submit\" name=\"senden\" value=\"senden\" />\n";
    print 
    "</form>";
    So, hoffe Dir damit geholfen zu haben........

    Gruß,
    Lugi.

    P.S. Skript ist ungestestet, also könnte evtl. noch kleine Syntax- oder Rechtschreibfehler enthalten!!!
    Zuletzt geändert von wahsaga; 02.02.2004, 09:06.

    Kommentar


    • #3
      dein script hat mir echt weitergeholfen. und vor allem, es funzt jetzt richtig gut. ...danke

      Wo kämen wir hin, wenn jeder sagte: Wo kämen wir hin? und keiner ginge, um zu sehen, wohin wir kämen, wenn wir gingen?

      Kommentar


      • #4
        Hab noch ein bisschen gebastelt, aber komme nicht weiter.
        und zwar möchte ich mit hilfe von checkboxen komplette zeilen
        in der db-tabelle löschen können. ich hab
        PHP-Code:
        while($inhalt mysql_fetch_array($select))
          {
            
        $id $inhalt['id'];
            
        $gericht $inhalt['gericht'];
            
        $zutaten $inhalt['zutaten'];
            
        $preis $inhalt['preis'];
            print 
        "<input type=\"hidden\" name=\"id[]\" value=\"".$id."\" />\n";
            print 
        "<input type=\"text\" name=\"gericht[]\" value=\"".$gericht."\" />\n";
            print 
        "<input type=\"text\" name=\"zutaten[]\" value=\"".$zutaten."\" />\n";
            print 
        "<input type=\"text\" name=\"preis[]\" value=\"".$preis."\" />\n";
            print 
        "<br /><br />\n";
          } 
        in
        PHP-Code:
        swhile($inhalt mysql_fetch_array($select))
          {
            
        $id $inhalt['id'];
            
        $gericht $inhalt['gericht'];
            
        $zutaten $inhalt['zutaten'];
            
        $preis $inhalt['preis'];
            print 
        "<input type=\"hidden\" name=\"id[]\" value=\"".$id."\" />\n";
            print 
        "<input type=\"text\" name=\"gericht[]\" value=\"".$gericht."\" />\n";
            print 
        "<input type=\"text\" name=\"zutaten[]\" value=\"".$zutaten."\" />\n";
            print 
        "<input type=\"text\" name=\"preis[]\" value=\"".$preis."\" />\n";
            print 
        "type='checkbox' name=checkbox[]'";
            print 
        "<br /><br />\n";
          } 
        geändert.

        aber wie krieg ich den wert der checkboxen. ich hab mir den
        wert des arrays ausgeben lassen, aber da kommt nur 0 zurück
        oder on.

        Wo kämen wir hin, wenn jeder sagte: Wo kämen wir hin? und keiner ginge, um zu sehen, wohin wir kämen, wenn wir gingen?

        Kommentar


        • #5
          laß dir doch den inhalt des $_POST nach dem absenden mal anzeigen,
          dann siehst du, in welcher form die werte übergeben werden und
          weißt dann auch, wie du wann reagieren mußt ...

          EDIT:
          wieso ist der thraed so breit !?
          Die Zeit hat ihre Kinder längst gefressen

          Kommentar


          • #6
            Original geschrieben von hydrococcus
            aber wie krieg ich den wert der checkboxen.
            http://dclp-faq.de/q/q-formular-checkbox.html
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Vielen Dank wiedermal für eure Hilfe,

              hab mein script jetzt noch ein bisschen erweitert. einträge können jetzt
              über die checkboxen gelöscht werden und über einen "insert-button"
              können neue zeilen eingefügt werden.
              Hier mal mein script, vielleicht hilfts ja jemandem...

              PHP-Code:
              <?php
              # neue daten senden und eintragen
              if(isset($_POST['senden']))
                {
                  
              $gruppe $_POST['gruppe'];
                  
              $gericht $_POST['gericht'];
                  
              $beschreibung $_POST['beschreibung'];
                  
              $preis $_POST['preis'];
                  
                   
                  for (
              $i=0;$i<sizeof($gruppe);$i++)
                    
              mysql_query("UPDATE salate SET gericht='".$gericht[$i]."', beschreibung='".$beschreibung[$i]."', preis='".$preis[$i]."' WHERE gruppe='".$gruppe[$i]."'");
                  
                  if (isset(
              $_REQUEST['checkbox'])){
                  
              reset ($_REQUEST['checkbox']);
                  foreach (
              $_REQUEST['checkbox'] as  $value_cbox){
                  
              mysql_query("DELETE FROM salate WHERE gruppe='$value_cbox'");
                  }
                  }  
                  
              header("Location: administration_test.php");
              }
              if (isset(
              $_POST['insert'])){
                  
              $new "Neuer Eintrag";
                  
              # das array gruppe wird ausgelesen, dateizeiger auf das letzte objekt gesetzt und um eins erhöht
                  
              $gruppe $_POST['gruppe'];
                  
              $ende = @end($gruppe);
                  
              $dazu 1;
                  
              $wert $dazu+$ende;
                  
              mysql_query("INSERT INTO salate SET gericht='$new', beschreibung='$new', preis='0,00', gruppe='$wert'");
              }



              <?
              php
              # tabelle auswählen und inhalt in formular anzeigen
              print "<div class='titel'>Salate</div><hr size='1' />";
              print 
              "<form name=\"speisen\" action=\"".$_SERVER['PHP_SELF']."\" method=\"post\"><table border='0'><tr>";
              $select mysql_query("SELECT gruppe, gericht, beschreibung, preis FROM salate ORDER BY gruppe");
              while(
              $inhalt mysql_fetch_array($select))
                {
                  
              $gruppe $inhalt['gruppe'];
                  
              $gericht $inhalt['gericht'];
                  
              $beschreibung $inhalt['beschreibung'];
                  
              $preis $inhalt['preis'];
                  
                  print 
              "<input type=\"hidden\" name=\"gruppe[]\" value=\"".$gruppe."\" />\n";
                  print 
              "<td><textarea name=\"gericht[]\" class='form' rows='3' cols='20'>".$gericht."</textarea></td>\n";
                  print 
              "<td><textarea name=\"beschreibung[]\" class='form' rows='3' cols='30'>".$beschreibung."</textarea></td>\n";
                  print 
              "<td><textarea name=\"preis[]\" class='form' rows='3' cols='10'>".$preis."</textarea></td>\n";
                  print 
              "<td><input type='checkbox' name=\"checkbox[]\" value='$gruppe'></td></tr>";
                }
              print 
              "</table>";
              print 
              "<table>
                      <tr>
                         <td><input type=\"submit\" name=\"insert\" value=\"Neue Zeile einfügen  \" /></td>
                         <td>&nbsp;</td>
                         <td>&nbsp;</td>
                         <td><input type=\"submit\" name=\"senden\" value=\"Änderung durchführen \" /></td>
                      </tr>
                     </table>\n"
              ;
              print 
              "</form>";

              ?>

              wenn noch einer fehler findet oder verbesserungen hat, bitte sagt
              bescheid....ich geh erst mal
              Zuletzt geändert von hydrococcus; 04.02.2004, 11:22.

              Wo kämen wir hin, wenn jeder sagte: Wo kämen wir hin? und keiner ginge, um zu sehen, wohin wir kämen, wenn wir gingen?

              Kommentar


              • #8
                Einbindung in die Internetseite

                Hallo,

                ich bin absolut neu auf dem Gebiet der PHP Programmierung. Wie binde ich diese Script in eine bestehende Internetseite (html) ein, und was muss ich dabei beachten? Wie muss ich die Seite benennen, damit das Script funktioniert?

                Gruß
                nobodymw

                Kommentar


                • #9
                  ein Tip!

                  Hallo Nobody,

                  also, Du must erst mal ein PHP-Server auf Deinem Rechner installieren.
                  Wie Du das machst, findest Du in zahlreichen Tutorials.

                  Wenn Du das hast, besitzt Du den Rootordner, in dem sich alle Deine PHP-Dateien befinden müssen, damit sie Der Server interpretieren kann.

                  Deine HTML-Dateien müssen unbenannt werden, dass sie die Endung php haben.

                  Nun kannst Du ein PHP-Script, z.B. das untere mit dem Speiseplan in Dein Dokument einfügen.

                  Alle PHP-Scripts fangen mit <?PHP an und hören mit ?> auf.

                  Das ist mal eine grobe Beschreibung, mehr dazu findest Du in den Tutorials dazu. Ich kann Dir auch Tutors in pdf schicken, da steht es auch nochmal genauer drinn.

                  Gruß, piumer

                  Kommentar


                  • #10
                    Hallo,

                    verstehe ich das richtig? Das erste Script

                    <?php
                    # neue daten senden und eintragen
                    if(isset($_POST['senden']))
                    {
                    $gruppe = $_POST['gruppe'];
                    $gericht = $_POST['gericht'];
                    $beschreibung = $_POST['beschreibung'];
                    $preis = $_POST['preis'];


                    for ($i=0;$i<sizeof($gruppe);$i++)
                    mysql_query("UPDATE salate SET gericht='".$gericht[$i]."', beschreibung='".$beschreibung[$i]."', preis='".$preis[$i]."' WHERE gruppe='".$gruppe[$i]."'");

                    if (isset($_REQUEST['checkbox'])){
                    reset ($_REQUEST['checkbox']);
                    foreach ($_REQUEST['checkbox'] as $value_cbox){
                    mysql_query("DELETE FROM salate WHERE gruppe='$value_cbox'");
                    }
                    }
                    header("Location: administration_test.php");
                    }
                    if (isset($_POST['insert'])){
                    $new = "Neuer Eintrag";
                    # das array gruppe wird ausgelesen, dateizeiger auf das letzte objekt gesetzt und um eins erhöht
                    $gruppe = $_POST['gruppe'];
                    $ende = @end($gruppe);
                    $dazu = 1;
                    $wert = $dazu+$ende;
                    mysql_query("INSERT INTO salate SET gericht='$new', beschreibung='$new', preis='0,00', gruppe='$wert'");
                    }

                    ?>

                    heißt administration_test.php und ist für Eintragungen zuständig.

                    Das zweite Script


                    <?php
                    # tabelle auswählen und inhalt in formular anzeigen
                    print "<div class='titel'>Salate</div><hr size='1' />";
                    print "<form name=\"speisen\" action=\"".$_SERVER['PHP_SELF']."\" method=\"post\"><table border='0'><tr>";
                    $select = mysql_query("SELECT gruppe, gericht, beschreibung, preis FROM salate ORDER BY gruppe");
                    while($inhalt = mysql_fetch_array($select))
                    {
                    $gruppe = $inhalt['gruppe'];
                    $gericht = $inhalt['gericht'];
                    $beschreibung = $inhalt['beschreibung'];
                    $preis = $inhalt['preis'];

                    print "<input type=\"hidden\" name=\"gruppe[]\" value=\"".$gruppe."\" />\n";
                    print "<td><textarea name=\"gericht[]\" class='form' rows='3' cols='20'>".$gericht."</textarea></td>\n";
                    print "<td><textarea name=\"beschreibung[]\" class='form' rows='3' cols='30'>".$beschreibung."</textarea></td>\n";
                    print "<td><textarea name=\"preis[]\" class='form' rows='3' cols='10'>".$preis."</textarea></td>\n";
                    print "<td><input type='checkbox' name=\"checkbox[]\" value='$gruppe'></td></tr>";
                    }
                    print "</table>";
                    print "<table>
                    <tr>
                    <td><input type=\"submit\" name=\"insert\" value=\"Neue Zeile einfügen \" /></td>
                    <td>&nbsp;</td>
                    <td>&nbsp;</td>
                    <td><input type=\"submit\" name=\"senden\" value=\"Änderung durchführen \" /></td>
                    </tr>
                    </table>\n";
                    print "</form>";

                    ?>

                    stellt dann die Eintragungen dar.

                    In welche Datei werden nun die Daten geschrieben? Ist es möglich auch mehrere Gerichte unter einer Rubrik zu erstellen?

                    Danke für Eure HILFE, bin ein absolut neu auf dem Gebiet.

                    Kommentar


                    • #11
                      hi,

                      wenn du dir die grundlagen für HTML insb. formulare kennst und dir dann mal spasseshalber den quelltext im browser anschaust der durch

                      PHP-Code:
                      print "<form name=\"speisen\" action=\"".$_SERVER['PHP_SELF']."\" method=\"post\"><table border='0'><tr>"
                      erzeugt wird. wirst du hoffentlich so selbstkristisch sein und feststellen, das da was nicht stimmen kann.

                      es wurde bisher nirgends beschrieben, das es mehr als eine datei ist.

                      OffTopic:
                      bitte benutze den php tag für phpcode; das bunte erleichtert ungemein die lesbarkeit und hilft fehler zu finden

                      Kommentar


                      • #12
                        hab den code mal getestet da ich das gleiche problem habe
                        bei mir geht der nicht so 1:1 ??
                        wenn ich auf Submit gehe, also die geänderten Daten versende zeigt er mir in den entsprechenden geänderten Feldern nur "Array" an als text
                        und in der mysql-DB ändert er immer die ID=1 ?? egal auf welcher id ich mich gerade befinde
                        SLAPPER'on#OSX

                        Kommentar


                        • #13
                          hab den fehler gefunden

                          die for schleife ist völlig überflüssig
                          und array hat er angezeigt weil input name="gericht[]"
                          hab alle array Klammern entfernt auch in den POST's
                          und das form tag ist verkehrt, deswegen hat er immer nur die ID 1 beim update hergenommen

                          funzt einwandfrei
                          Zuletzt geändert von slapper; 23.04.2004, 15:07.
                          SLAPPER'on#OSX

                          Kommentar


                          • #14
                            Quelltext

                            Hallo Slapper,

                            kannst Du bitte das funktionierende Script posten? Wie gesagt ich habe absolut keine Ahnung von dieser Programmiersprache.


                            DANKE

                            Kommentar

                            Lädt...
                            X