Veröffentlicht 18. November 200222 j <?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!
18. November 200222 j 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 ...
18. November 200222 j Hi, nimm mal bei @mysql_connect_connect das @ weg, dann bekommst du auch die mysql Fehlermeldungen angezeigt. Gruß Jaraz
19. November 200222 j $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...
19. November 200222 j 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!
19. November 200222 j 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.
19. November 200222 j ja das stimmt! aber würde es auch über z. B. 3 Zeilen gehen? Beispiel $bsp = "huhu "; $bsp .= "Hallo "; $bsp .= "Warum?";
19. November 200222 j 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
19. November 200222 j das war auch nur als Frage gemeint! dann wird die Zeile schon länger sein, als das eine Wort!
19. November 200222 j 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
19. November 200222 j 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
19. November 200222 j 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?
19. November 200222 j 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....
20. November 200222 j 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
20. November 200222 j 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
20. November 200222 j 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!
21. November 200222 j statt $fname, $sname, $email probiers mal mit $HTTP_GET_VARS["fname"], $HTTP_GET_VARS["sname"], $HTTP_GET_VARS["email"].
21. November 200222 j 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?
21. November 200222 j 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...
21. November 200222 j 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
21. November 200222 j Hmm im Tutorial stehts statt doppelten mit einfachen Anführungszeichen, vielleicht liegt's daran, auch wenn ich das unlogisch fände..
21. November 200222 j 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
22. November 200222 j 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?
22. November 200222 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.