Problem mit POST

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

  • Problem mit POST

    Hallo,

    ich habe da ein kleines (also für euch) für mich eher ein großes Problem.
    Ich habe eine DB in die ich Daten eintragen will, mittels eines Formulares. Aber irgendwie kommen die Daten scheinbar nicht an.

    Hier ist mal das Script, villeicht kann da ja mal jemand drüber gucken und mir sagen wo der Käfer ist.

    PHP-Code:

    <?
    include('verbindung.php');
    $abfrage = "SELECT kunde, f_typ, f_nr, werk, fm_send FROM auslieferung";
    $ergebnis = mysql_query($abfrage);
    ?>
    <html>
        <table border="1">
         <tr><td>Kunde</td><td>Fhzg.-typ</td><td>FIN</td><td>Werk</td><td>FM an Kunde</td><td>&nbsp;</td></tr>    
    <?
    while($row = mysql_fetch_object($ergebnis))    {
        echo "<tr>";
        echo "<td>$row->kunde</td><td>$row->f_typ</td><td>$row->f_nr</td><td>$row->werk</td><td>$row->fm_send</td><td>&nbsp;</td>";
        echo "</tr>";
      }
    ?>
    <form action="index.php" method="post">
         <tr><td colspan="6"><b>Einen neuen Eintrag anlegen</b></td></tr>
         <tr><td>Kunde</td><td>Fhzg.-typ</td><td>FIN</td><td>Werk</td><td>FM an Kunde</td><td>&nbsp;</td></tr>
         <tr>
            <td><input type="Text" name="kunde"></td>
            <td><input type="Text" name="f_typ"></td>
            <td><input type="Text" name="f_nr"></td>
            <td><input type="Text" name="werk"></td>        
            <td><input type="Text" name="fm_send"></td>
            <td><input type="Submit" value="Absenden"></td>
        </tr>    
     </table>
    </form>
    </html>
    <?
    //Neue Fahrzeugdaten in DB eintragen
    $eintrag = "INSERT INTO auslieferung (kunde, f_typ, f_nr, fm_send)
    VALUES ($_POST[kunde], $_POST[f_typ], $_POST[f_nr], $_POST[werk], $_POST[fm_send])";
    $eintragen = mysql_query($eintrag);
    //Wurden die Daten eingetragen?

    if($eintragen == true)    {    echo "Eintrag war erfolgreich";    }
    else    {    echo "Fehler beim Speichern";    }

    echo $kunde."&nbsp;".$f_typ."&nbsp;".$f_nr."&nbsp;".$werk."&nbsp;".$fm_send;
     
    ?>
    ... wenn deine träume sterben dann wirst du alt !!!


  • #2
    du überprüfst nicht, ob das formular abgesendet wurde. der letzte teil des scriptes wird ja immer ausgeführt! außerdem solltest du dich mal über ein vernünftiges debugging informieren.und beachte auch mal folgendes zum thema programmierstil

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      $_POST[kunde], $_POST[f_typ], $_POST[f_nr], $_POST[werk], $_POST[fm_send]
      Ist falsch, außer kunde, f_typ, f_nr, werk und fm_send sind Konstansten, was ich aber nicht glaube.

      Richtig wäre $_POST['kunde']

      Außerdem solltest du nicht Benutzereingaben direkt in SQL Queries schreiben, außer du willst, dass deine Webseite so einfach wie möglich gehackt wird.

      Siehe: SQL-Injection

      Kommentar


      • #4
        Ist falsch, außer kunde, f_typ, f_nr, werk und fm_send sind Konstansten, was ich aber nicht glaube.
        nö, sind sie nicht. nicht bei der schreibweise.

        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Re: Problem mit POST

          Original geschrieben von TheCure13
          Aber irgendwie kommen die Daten scheinbar nicht an.
          Ist eine wahnsinnig genaue Fehlerbeschreibung!
          Zuerst solltest du vielleicht mal die Forumsregeln lesen und anwenden. Ich bin sicher, dann erhälste von mysql_error(() eine wunderschöne Fehlermeldung, die dir auch sagt, warum die Daten «irgendwie nicht ankommen»
          Gruss
          H2O

          Kommentar


          • #6
            Original geschrieben von Kropff
            nö, sind sie nicht. nicht bei der schreibweise.

            peter
            Also Kropff hat rescht $_POST[kunde] falsch
            richtig $_POST['kunde']

            Wass sagt denn der Fehleranzeige von MYSQL.
            $fehler=mysql_error();
            echo $fehler;

            Füge disen Quellcode in deine datei ein und du wirst ein Fehler ernten.

            Kommentar


            • #7
              wahrscheinlich einen column count doesnt match...
              Beantworte nie Threads mit mehr als 15 followups...
              Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

              Kommentar


              • #8
                Re: Problem mit POST

                Original geschrieben von TheCure13
                PHP-Code:
                [...]
                echo 
                $kunde."&nbsp;".$f_typ."&nbsp;".$f_nr."&nbsp;".$werk."&nbsp;".$fm_send
                eine ausgabe wird hier nie erscheinen ;-)

                PHP-Code:
                echo $_POST['kunde']; 
                schon eher
                Gruß
                Uzu

                private Homepage

                Kommentar


                • #9
                  Original geschrieben von MelloPie
                  wahrscheinlich einen column count doesnt match...
                  Nicht nur wahrscheinlich. Aber das ist nur einer von mehreren Fehlern. Und ausserdem sieht er die alle selber, wenn er sich an die Regeln hält.
                  Original geschrieben von UzumakiNaruto
                  eine ausgabe wird hier nie erscheinen
                  Wenn register_globals eingeschaltet sind schon ...
                  Gruss
                  H2O

                  Kommentar


                  • #10
                    Erstmal danke für die zahlreichen Antworten.

                    Also mal der Reihe nach:

                    Irgendwie kommt nichts an war die saloppe Bezeichnung für:
                    In der DB wird nichts gespeichert

                    Durch einfügen von:
                    PHP-Code:
                    $fehler=mysql_error();
                    echo 
                    $fehler
                    erscheint nach dem absenden des ausgefüllten formulars folgendes:

                    Column count doesn't match value count at row 1


                    Wenn ich die vorgeschlagene Schreibweise:
                    PHP-Code:
                    $eintrag "INSERT INTO auslieferung (kunde, f_typ, f_nr, fm_send)
                    VALUES (
                    $_POST['kunde'], $_POST['f_typ'], $_POST['f_nr'], $_POST['werk'], $_POST['fm_send'])";
                    $eintragen mysql_query($eintrag); 
                    bei dem INSERT INTO verwende, kommt folgende Fehlermeldung nach dem Absenden des Formulares:

                    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\xampp\htdocs\fliegl\index.php on line 33

                    In Line 33 steht der INSERT INTO Befehl
                    ... wenn deine träume sterben dann wirst du alt !!!

                    Kommentar


                    • #11
                      Column count doesn't match value count at row 1
                      fehler 1
                      Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, ...
                      fehler 2
                      PHP-Code:
                      $eintrag "INSERT INTO auslieferung (kunde, f_typ, f_nr, fm_send)
                      VALUES (
                      $_POST['kunde'], $_POST['f_typ'], $_POST['f_nr'], $_POST['werk'], $_POST['fm_send'])"
                      hierzu wurde ziemlicher blödsinn geschrieben. lies dir mal das hier genau durch. und den ersten fehler wirst du wohl selber finden (siehe auch hier).

                      gruß
                      peter
                      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                      Meine Seite

                      Kommentar


                      • #12
                        So sieht meine Datei jetzt aus:

                        PHP-Code:
                        <?
                        include('verbindung.php');
                        $abfrage = "SELECT kunde, f_typ, f_nr, werk, fm_send FROM auslieferung";
                        $ergebnis = mysql_query($abfrage);
                        ?>
                        <html>
                            <table border="1">
                             <tr><td>Kunde</td><td>Fhzg.-typ</td><td>FIN</td><td>Werk</td><td>FM an Kunde</td><td>&nbsp;</td></tr>    
                        <?
                        while($row = mysql_fetch_object($ergebnis))    {
                            echo "<tr>";
                            echo "<td>$row->kunde</td><td>$row->f_typ</td><td>$row->f_nr</td><td>$row->werk</td><td>$row->fm_send</td><td>&nbsp;</td>";
                            echo "</tr>";
                          }
                        ?>
                        <form action="index.php" method="post">
                             <tr><td colspan="6"><b>Einen neuen Eintrag anlegen</b></td></tr>
                             <tr><td>Kunde</td><td>Fhzg.-typ</td><td>FIN</td><td>Werk</td><td>FM an Kunde</td><td>&nbsp;</td></tr>
                             <tr>
                                <td><input type="Text" name="kunde"></td>
                                <td><input type="Text" name="f_typ"></td>
                                <td><input type="Text" name="f_nr"></td>
                                <td><input type="Text" name="werk"></td>        
                                <td><input type="Text" name="fm_send"></td>
                                <td><input type="Submit" value="Absenden"></td>
                            </tr>    
                         </table>
                        </form>
                        </html>
                        <?
                        //Neue Fahrzeugdaten in DB eintragen
                        $eintrag = "INSERT INTO auslieferung (kunde, f_typ, f_nr, fm_send) VALUES ($_POST[kunde], $_POST[f_typ], $_POST[f_nr], $_POST[werk], $_POST[fm_send])";
                        $eintragen = mysql_query($eintrag);
                        //Wurden die Daten eingetragen?

                        if($eintragen == true)    {    echo "Eintrag war erfolgreich<br />";    }
                        else    {    echo "Fehler beim Speichern<br />";    }

                        echo $_POST['kunde']."&nbsp;".$_POST['f_typ']."&nbsp;".$_POST['f_nr']."&nbsp;".$_POST['werk']."&nbsp;".$_POST['fm_send'];

                        echo "<br />";
                        $fehler=mysql_error();
                        echo $fehler;
                        ?>
                        Diese Fehlermeldung kommt:

                        Column count doesn't match value count at row 1

                        und ich hab keinen Plan was die mir sagen will, oder was ich falsch mache. Das mit den Zeichenketten auf deiner Seite habe ich mir durchgelesen. Aber ehrlich gesagt ... Ich werde da nicht wirklich draus schlau.
                        KAnnst du mir das nicht erklären als wäre ich 8 Jahre alt?
                        ... wenn deine träume sterben dann wirst du alt !!!

                        Kommentar


                        • #13
                          Column count doesn't match value count at row 1
                          das heißt, dass du in deinem query vier felder auswählst, aber fünf einträge hineinschreiben willst.
                          Das mit den Zeichenketten auf deiner Seite habe ich mir durchgelesen ... KAnnst du mir das nicht erklären als wäre ich 8 Jahre alt?
                          LESEN, LESEN, LESEN! AUSPROBIEREN, AUSPROBIEREN, AUSPROBIEREN! wenn du das nicht begreifst, sollest du die finger vom programmieren lassen.

                          gruß
                          peter
                          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                          Meine Seite

                          Kommentar


                          • #14
                            $eintrag = "INSERT INTO auslieferung (kunde, f_typ, f_nr, fm_send) VALUES ($_POST[kunde], $_POST[f_typ], $_POST[f_nr], $_POST[werk], $_POST[fm_send])";
                            das sind alles zahlenwerte oder boolean????
                            sollten es Strings sein, solltest du diese auch so kennzeichnen

                            PHP-Code:
                            $eintrag "
                            INSERT INTO auslieferung (
                               kunde, f_typ, f_nr, fm_send
                            ) VALUES (
                               
                            $_POST[kunde], '$_POST[f_typ]', $_POST[f_nr], '$_POST[fm_send]'
                            )"

                            Gruß
                            Uzu

                            private Homepage

                            Kommentar


                            • #15
                              zuerst sollte er mal zählen lernen
                              PHP-Code:
                              (kundef_typf_nrfm_send
                              und dann
                              PHP-Code:
                              ($_POST[kunde], $_POST[f_typ], $_POST[f_nr], $_POST[werk], $_POST[fm_send]) 
                              peter
                              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                              Meine Seite

                              Kommentar

                              Lädt...
                              X