DFBL-Benjamin Geschrieben 18. November 2002 Geschrieben 18. November 2002 <?php /* * Einfuegen von Datensaetze in eine Datenbank * */ // Zugangsdaten zur Datenbank $conn = @mysql_connect("localhost","benjamin","********"); // Wechsel der Datenbank mysql_select_db(test); $sql = "insert into addresse(fname, sname, email)"; $sql .= "Values ('Gaus', 'Florian', 'florian@dfbl.org')"; $result = mysql_query($sql, $conn); if($result) { $nummer = mysql_insert_id(); echo "<p> Es wurde Datensatz Nr. $nummer erzeugt!"; } else { echo "<p>" .mysql_error($conn); } // MySQL-Verbindung wird beendet! mysql_close($conn); ?> die Datenbankstruktur sieht so aus: Spalte A Spalte B Spalte C fname sname email 1. Frage: ich arbeite in dem Programm mit der ID muss ich auch dafür eine Spalte deklarieren oder, wie geht das mit dem auto_increment? weil wenn ich jetzt das Programm ausführe, dann kommt als Ausgabe Nr. 0! Das kann ja irgendwie nicht stimmen, oder? 2. Frage: $sql = "insert into addresse(fname, sname, email)"; $sql .= "Values ('Gaus', 'Florian', 'florian@dfbl.org')"; was hat der Punkt für eine Bedeutung? das die nächste Zeile dazu gehört? was anderes könnte ich mir jetzt da nicht vorstellen! ich hoffe, einer von euch kann mir helfen! danke für die Hilfe! Zitieren
shad0w Geschrieben 18. November 2002 Geschrieben 18. November 2002 zu 1: waere praktisch. eine spalte id_wasweissichwas ... datentyp integer mit ca. 5 - 10 stellen. auto_increment und primary key. zu 2: .= ist ne stringfuntkion zum anhaengen. statt $string = "hallo " $string .= "dies ist ein test" koenntest du auch $string = "hallo dies ist ein test" schreiben ... Zitieren
Jaraz Geschrieben 18. November 2002 Geschrieben 18. November 2002 Hi, nimm mal bei @mysql_connect_connect das @ weg, dann bekommst du auch die mysql Fehlermeldungen angezeigt. Gruß Jaraz Zitieren
DFBL-Benjamin Geschrieben 18. November 2002 Autor Geschrieben 18. November 2002 danke für die Antworten! diese helfen mir bestimmt weiter! Zitieren
gurkenpapst Geschrieben 19. November 2002 Geschrieben 19. November 2002 $sql = "insert into addresse(fname, sname, email)"; $sql .= "Values ('Gaus', 'Florian', 'florian@dfbl.org')"; weiss ja nicht, aber probiere mal entweder nach der ersten schliessenden Klammer ein leerzeichen hinzuzufügen oder vor dem Values... Zitieren
DFBL-Benjamin Geschrieben 19. November 2002 Autor Geschrieben 19. November 2002 es ist gegangen, ohne den Tipp von dir, mit dem Leerzeichen. aber wahrscheinlich ist es besser, das auch zu machen. ich kann mir vorstellen, das es wegen der vorgehenden Klammer ")" geht, sonst würde es wahrscheinlich auch nicht gehen! Zitieren
shad0w Geschrieben 19. November 2002 Geschrieben 19. November 2002 das mit dem punkt brauchst du eh nur in buechern oder in komplexen schleifen mit stringfunktionen ... ansonsten kannst das auch zusammenschreiben. ist uebersichtlicher und die moeglichkeit den punkt falsch zu setzen ist kleiner. Zitieren
DFBL-Benjamin Geschrieben 19. November 2002 Autor Geschrieben 19. November 2002 ja das stimmt! aber würde es auch über z. B. 3 Zeilen gehen? Beispiel $bsp = "huhu "; $bsp .= "Hallo "; $bsp .= "Warum?"; Zitieren
tauron Geschrieben 19. November 2002 Geschrieben 19. November 2002 klar, so oft Du willst... limit wär nur die maximale Größe des Strings ginge z.B. auch so: $bsp = "huhu " ."hallo " ."warum"; ob das dann so sinnvol und übersichtlich ist steht auf nem anderen Blatt gruß Christian Zitieren
DFBL-Benjamin Geschrieben 19. November 2002 Autor Geschrieben 19. November 2002 das war auch nur als Frage gemeint! dann wird die Zeile schon länger sein, als das eine Wort! Zitieren
shad0w Geschrieben 19. November 2002 Geschrieben 19. November 2002 als alternative gibt es noch: $string = ("Hallo dies ist ein test strin"); [/php] gerne verwendet bei sql statements: $sql = ("SELECT * FROM table WHERE a = b"); normal kommen dann noch tabs rein, dass es schoen uebersichtlich ist. so long Zitieren
Jaraz Geschrieben 19. November 2002 Geschrieben 19. November 2002 Originally posted by -leliel- das mit dem punkt brauchst du eh nur in buechern oder in komplexen schleifen mit stringfunktionen ... und zum Beispiel bei Optionen. $sql = "SELECT * FROM test"; if($order){ $sql .= " ORDER BY name"; } Gruß Jaraz Zitieren
DFBL-Benjamin Geschrieben 19. November 2002 Autor Geschrieben 19. November 2002 danke für die Antworten! jetzt habe ich schon wieder eine Frage. ich möchte jetzt Daten eingeben und diese sollen dann in der Datenbank gespeichert werden. wie muss ich das Realisieren? mein Vorschlag, was ich bis jetzt versucht habe, aber es möchte mir nichts ausgeben: <html> <head> <title>Eintrag der Daten in die Datenbank</titl> </head> <body> <?php $conn = mysql_connect("localhost","benjamin","******"); mysql_select_db(test); ?> [b]<input type="Text" name="<?php $fname ?>" value="Nachname" size="10" maxlength="20"> <input type="Text" name="<?php $sname ?>" value="Vorname" size="10" maxlength="20"> <input type="Text" name="<?php $email ?>" value="email" size="10" maxlength="20">[/b] <?php $sql = "insert into adresse(fname, sname, email) "; $sql .= "Values ('$fname', '$sname', '$email')"; $result = mysql_query($sql, $conn); if($result) { $nummer = mysql_insert_id(); echo "<p> Es wurde Datensatz Nr. $nummer erzeugt!"; } else { echo "<p>" .mysql_error($conn); } mysql_close($conn); ?> </body> </html> [/PHP] was ist an dem Programm noch falsch? besonders die mit Fett hervorgehobenen Zeilen? Zitieren
Wolle Geschrieben 19. November 2002 Geschrieben 19. November 2002 Du gibst deinen Feldern den Inhalt der Variablen, anstatt den Variablennamen... <input type="Text" name="<?php $fname ?>" value="Nachname" size="10" maxlength="20"> Da würde dann z.B. ....name="Meier"..... drinstehen, bzw in dem Fall gar nichts, da die Variable keinen Wert enthält. Richtig muß das so heißen: <input type="Text" name="fname" value="Nachname" size="10" maxlength="20"> Außerdem wird das ganze so nicht funktionieren. Du mußt ein komplettes HTML-Formular erstellen, inkl. Submit Button. Im Form-Tag rufst du durch den action= Eintrag eine php-Seite auf, die dann die übergebenen Variablen in die DB schreibt. Das kann auch die selbe Seite sein, allerdings mußt du dann sicherstellen, das der Eintrag in die DB nur passiert, wenn das Formular über den Submit-Button abgesendet wurde. Ansonsten bekommst du bei jedem Aufruf der Seite einen falschen Datensatz. Da der ganze Thread immer mehr Richtung PHP-Programmierung läuft, schieb ich den Thread mal in die Webserverprogrammierung.... Zitieren
DFBL-Benjamin Geschrieben 20. November 2002 Autor Geschrieben 20. November 2002 danke! ja stimmt, Submit-Button fehlt noch! wie komme ich dann von fname zu $fname? wird das Dollarzeichen dann automatisch angefügt? wie kann ich einen Wert an ein anderen PHP-Programm übergeben? Beispiel: fname; sname; email Zitieren
bigpac Geschrieben 20. November 2002 Geschrieben 20. November 2002 Wenn du eine ein Formularfeld mit dem Namen "fname" hast und über den Submit Button eine php Seite aufrufst wird der Inhalt des Feldes in der Variablen "fname" weitergegeben. Um an den Wert wieder ranzukommen benutzt du dann "$fname" auf der PHP Seite. Bye Zitieren
DFBL-Benjamin Geschrieben 20. November 2002 Autor Geschrieben 20. November 2002 das habe ich jetzt auch schon rausgefunden! das Formular funktioniert und bin fast zu frieden! jetzt habe ich den Inhalt gesehen, aber da steht jetzt nichts in der Datenbank drin, aber einen Eintrag wurde gemacht! an was kann das liegen? meine Programme: formular.php <html> <head> <title>Eintrag der Daten in die Datenbank</title> </head> <body> <form action="eintragen.php" method="get"> <p align="center"> <input type="Text" name="fname" value="Nachname" size="10" maxlength="20"><br> <input type="Text" name="sname" value="Vorname" size="10" maxlength="20"><br> <input type="Text" name="email" value="email" size="10" maxlength="20"><br> <br> <input type="Submit" name="button_versenden" value="Versenden"> <input type="reset"><br> </p> </form> </body> </html> [/PHP] eintragen.php [PHP] <?php /* * Eintragen des Datensatzes in die Datenbank * */ // Zugangsdaten zur Datenbank $conn = mysql_connect("localhost","benjamin","******"); // Wechsel der Datenbank mysql_select_db(test); $sql = "insert into adresse(fname, sname, email) "; $sql .= "Values ('$fname', '$sname', '$email')"; $result = mysql_query($sql, $conn); if($result) { $nummer = mysql_insert_id(); echo "<p> Es wurde Datensatz Nr. $nummer erzeugt!"; } else { echo "<p>" .mysql_error($conn); } // MySQL-Verbindung wird beendet! mysql_close($conn); ?> ich hoffe, ihr könnt mir den Fehler sagen, warum die Daten jetzt nicht eingetragen werden. Aber es wird eine Zeile angelegt. Die ID ist ausgefüllt und die anderen 3 Spalten leider nicht! Zitieren
Chaosmaker Geschrieben 21. November 2002 Geschrieben 21. November 2002 statt $fname, $sname, $email probiers mal mit $HTTP_GET_VARS["fname"], $HTTP_GET_VARS["sname"], $HTTP_GET_VARS["email"]. Zitieren
DFBL-Benjamin Geschrieben 21. November 2002 Autor Geschrieben 21. November 2002 diese Methode wie du das Vorschlägt funktioniert bei mir gar nicht! da bringt er immer einen Fehler, das irgend etwas falsch ist! hat sonst wirklich keine Ahnung, wie das geht? Zitieren
Wolle Geschrieben 21. November 2002 Geschrieben 21. November 2002 Originally posted by DFBL-Benjamin da bringt er immer einen Fehler, das irgend etwas falsch ist! Und was ist "irgendwas"?? :confused: Poste doch mal die Fehlermeldung, damit es wenigstens einen Anhaltspunkt gibt... Zitieren
DFBL-Benjamin Geschrieben 21. November 2002 Autor Geschrieben 21. November 2002 Fehlermeldung: Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\FoxServ\www\php_dateien\datenbank\05Formular\eintragen.php on line 21 Zitieren
Chaosmaker Geschrieben 21. November 2002 Geschrieben 21. November 2002 Hmm im Tutorial stehts statt doppelten mit einfachen Anführungszeichen, vielleicht liegt's daran, auch wenn ich das unlogisch fände.. Zitieren
Jaraz Geschrieben 21. November 2002 Geschrieben 21. November 2002 Hi, wenn in der Fehlermeldung schon ne Zeilennummer steht, kann es doch wohl nicht so schwer sein, die entsprechende Zeile ebenfalls zu posten. Auf alle Fälle stimmt was nicht mit den Anführungsstrichen. Gruß Jaraz Zitieren
DFBL-Benjamin Geschrieben 22. November 2002 Autor Geschrieben 22. November 2002 hier die Stelle wo der Fehler ist! $sql .= "Values ($HTTP_GET_VARS["fname"], $HTTP_GET_VARS["sname"], $HTTP_GET_VARS["email"])"; [/PHP] nach eurer Meinung müsste das dann so aussehen? [PHP] $sql .= "Values ($HTTP_GET_VARS['fname'], $HTTP_GET_VARS['sname'], $HTTP_GET_VARS['email'])"; stimmt das so? Zitieren
tauron Geschrieben 22. November 2002 Geschrieben 22. November 2002 Sieht auf jedenfall besser aus, denn wenn Du für beides die gleichen Anführungszeichen nimmst, denkt er das der String unterbrochen ist und versucht fname als Befehl zu interpretieren... Problem könnte dann noch sein, das er dann bei Deiner Variante die Variablen Inhalte ohne Anführungszeichen in den String schreibt, es würde bei: $sql .= "Values ($HTTP_GET_VARS['fname'], $HTTP_GET_VARS['sname'], $HTTP_GET_VARS['email'])"; dann z.B. "Values (Rappel, Zappel, RappelZappel@bla.blub)" in dem String drinstehen. Da SQL aber bei Zeichenketten auf Anführungszeichen besteht, müsstest Du die auch noch einbauen.. Mein Vorschlag wäre: $sql .= 'Values ("'.$HTTP_GET_VARS["fname"].'", "'.$HTTP_GET_VARS["sname"].'", "'.$HTTP_GET_VARS["email"].'")'; gruß Christian Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.