Michael1988: Formular gibt daten an SQL in falscher reihenfolge weiter

Hallo zusammen ich habe ein problem mit einem formular das daten an eine SQL tabelle senden soll.

Erstmal der code

  
  
<?php  
$vorname = $_POST["name"];  
$name = $_POST["vorname"];  
$geb = $_POST["geb"];  
$icq = $_POST["icq"];  
$skype = $_POST["skype"];  
$email = $_POST["email"];  
  
echo $name;  
echo $vorname;  
echo $geb;  
  
$verbindung = mysql_connect ("localhost",  
"USER", "PASS")  
or die ("keine Verbindung möglich.  
 Benutzername oder Passwort sind falsch");  
  
mysql_select_db("usr_web791_1")  
or die ("Die Datenbank existiert nicht.");  
  
  
$eintrag = "INSERT INTO user  
(name, vorname, geb, icq, skype, email)  
VALUES  
('$name', '$vorname', '$geb', '$icq' , '$skype', '$email')";  
  
$eintragen = mysql_query($eintrag);  
  
if($eintragen == true)  
   {  
   echo "Eintrag war erfolgreich";  
   }  
else  
   {  
   echo "Fehler beim Speichern";  
   }  
  
  
  
?>  

Und der Formular Code.

<form action="post.php" method="post">  
<br>  
Name<input type="Text" name="name"><br>  
Vorname<input type="Text" name="vorname"><br>  
Geburtstag<input type="Text" name="geb"><br>  
ICQ<input type="Text" name="icq"><br>  
Skype<input type="Text" name="skype"><br>  
Email<input type="Text" name="email"><br>  
<input type="Submit" value="Absenden"><br>  
</form>  

mein problem ist das er mir das Feld email aus dem formular im SQL in die Spalte name einträgt. Kann mir wer sagen warum das so passiert?

  1. Abgesehen davon, dass Du bei der var-zuweisung zu beginn Vorname und Name vertauscht, und ich desweiteren nicht verstehe, warum Du überhaupt die POST-Werte kopierst anstatt sie direkt zu verwenden, fällt mit nichts auf, was zu dem beschriebenen Fehler führen könnte.

    Passen die Feldtypen in der DB zu den erwarteten Einträgen?

    Gruß vom foomaker

    --
    Natürlich glaube ich an die Existenz von Ausserirdischen. Schliesslich gibt es ja auch das PERFEKTE SCRIPT.
    1. Abgesehen davon, dass Du bei der var-zuweisung zu beginn Vorname und Name vertauscht, und ich desweiteren nicht verstehe, warum Du überhaupt die POST-Werte kopierst anstatt sie direkt zu verwenden, fällt mit nichts auf, was zu dem beschriebenen Fehler führen könnte.

      Das mit dem Vertauschen habe ich auch grade gesehen.
      Ich setze die werte zuerst in eine Variable weil diese noch weiterverarbeitet werden wenns fertig ist.

      Passen die Feldtypen in der DB zu den erwarteten Einträgen?
      Ja passen sie. Hab die lösung gefunden musste nur ein leerzeichen mehr machen. Was ich mir auch nicht erklären kann. Aber naja funktioniert.

      Danke

      1. Ich setze die werte zuerst in eine Variable weil diese noch weiterverarbeitet werden wenns fertig ist.

        Auch wenn das Dein ursprüngliches Problem nicht löst - aus reiner Neugier: Warum kann $_POST['name'] im Skript nicht weiterverwendet werden?

        Ich habe das selbst mal so gemacht wie Du mit dem Kopieren von POST-, GET- und sogar SESSION-Werten in lokale vars. Man ist es einfach leid, immer dieses "$_POST['...']" tippen zu müssen, wenn $... reicht.
        Aber dann habe ich mir testweise mal die Mühe gemacht, POST-Daten konsequent mit $_POST... aufzurufen und zu verwenden. Und siehe da: Der Vorteil ist ein die Skriptlesbarkeit betreffender: Überall da, wo POST- (u.a.) Daten verwendet werden, steht auch $_POST... Das macht das nachträgliche Editieren um einiges einfacher.

        Gruß vom foomaker

        --
        Natürlich glaube ich an die Existenz von Ausserirdischen. Schliesslich gibt es ja auch das PERFEKTE SCRIPT.
        1. Den Tipp werde ich mir zu Herzen nehmen, stimmt schon.

          Eine Andere Sache.
          Wie bekomme ich das hin das der Text nach X zeichen umgebrochen wird im meiner ausgabe.

          $abfrage = "SELECT * FROM blog";  
          $ergebnis = mysql_query($abfrage);  
          while($row = mysql_fetch_object($ergebnis))  
             {  
             echo "<b>$row->name| $row->time|<br></b>";  
             $text = $row->text;  
             $neuertext = wordwrap( $text, 25, "<br />\n" );  
             echo $neuertext;  
            
             }  
          ?>  
            
            
            
          
          

          geht iwie nicht.

          Danke schonmal

          1. Den Tipp werde ich mir zu Herzen nehmen, stimmt schon.

            Eine Andere Sache.
            Wie bekomme ich das hin das der Text nach X zeichen umgebrochen wird im meiner ausgabe.

            ...

            Was ist mit Deinem Ursprungsproblem?

            Schlage vor, dass "Eine Andere Sache" einen neuen Thread zur Folge hat. ;-)

            Gruß vom foomaker

            --
            Natürlich glaube ich an die Existenz von Ausserirdischen. Schliesslich gibt es ja auch das PERFEKTE SCRIPT.
  2. Mahlzeit Michael1988,

    $vorname = $_POST["name"];
    $name = $_POST["vorname"];

    1. ist dieses Umkopieren sinnfrei und gefährlich (da es die Herkunft von Variableninhalten verschleiert) und
    2. bist Du Dir sicher? Du willst wirklich "vorname" und "name" vertauschen?

    $verbindung = mysql_connect ("localhost",
    "USER", "PASS")
    or die ("keine Verbindung möglich.
    Benutzername oder Passwort sind falsch");

    mysql_select_db("usr_web791_1")
    or die ("Die Datenbank existiert nicht.");

    Zitat 1282

    $eintrag = "INSERT INTO user
    (name, vorname, geb, icq, skype, email)
    VALUES
    ('$name', '$vorname', '$geb', '$icq' , '$skype', '$email')";

    Du verwendest hier absolut ungeprüft Benutzereingaben und schickst sie direkt an Deine Datenbank. Tu dies NIEMALS! Merke: ALL INPUT IS EVIL!

    Verwende mysql_real_escape_string(), um wenigstens SQL-Injection zu verhindern. IMHO solltest Du allerdings vorher auch überprüfen, ob in dem, was der Benutzer eingegeben hat, auch das drinsteht, was Du erwartest.

    mein problem ist das er mir das Feld email aus dem formular im SQL in die Spalte name einträgt. Kann mir wer sagen warum das so passiert?

    Du selbst. Indem Du Dir z.B. den String $eintrag zur Kontrolle ausgeben lässt, um zu sehen, was eigentlich an Deine Datenbank geschickt wird.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|