user103109 Geschrieben 18. August 2003 Geschrieben 18. August 2003 Hallo, bin heute das erste Mal mit PHP in Kontakt gekommen und soll hier ein Script schreiben, welches einen Formular-Eintrag (eine Kundennummer) in einer Datenbank speichert. Wie mache ich das am einfachsten mit PHP/HTML ? So sieht das bisher in HTML aus: <html> <head> <title>Formular mit PHP</title> </head> <body> <h1>Beispiel-Formular</h1> <form action="input_text.htm"> <p>Kundennummer:<br> <input name="kundennumer" type="text" size="30" maxlength="30"> </p> </form> </body> </html> Da will ich jetzt einen Button einfügen, bei dem nach einem Klick die Zahl im Formular Kundennummer in einer Datenbank gespeichert wird. Wie mache ich das am besten ? Thx Zitieren
Jaraz Geschrieben 18. August 2003 Geschrieben 18. August 2003 Hallo! Ich glaube kaum, das dir hier jemand eine Einführung in PHP gibt. Für sowas nimmt man sich ein Buch und ließt oder schlägt nach. Günstig und aktuell ist für den Einstieg z.B.: http://www.amazon.de/exec/obidos/ASIN/349961233X/302-1554558-5888864 Gruß Jaraz Zitieren
kills Geschrieben 18. August 2003 Geschrieben 18. August 2003 formular datei: (HTML) <html> <head> <title>Formular mit PHP</title> </head> <body> <h1>Beispiel-Formular</h1> <form action="insert.php" method="post"> <p>Kundennummer:<br> <input name="kundennumer" type="text" size="30" maxlength="30"> </p> <input type=submit value=abschicken name=submitbutton> </form> </body> </html> insert php: $kundennummer = $_POST["kundennummer"] $filepointer = fopen("testdatei.txt","a+"); fwrite($filepointer,$kundennummer); fcolse($filepointer); so könnte das mit einer datei aussehen! Gruß kills Zitieren
user103109 Geschrieben 19. August 2003 Autor Geschrieben 19. August 2003 @kills Vielen Dank für Deine Tips. Ich habe diese Dateinen mal erstellt und auf den Webserver hochgeladen, aber es kommt eine Fehlermeldung, nachdem ich auf den Button geklickt habe: Parse error: parse error, unexpected T_VARIABLE in /is/htdocs/23649/www.xxx.de/xxx/insert.php on line 3 In Line 3 steht folgender Text: $filepointer = fopen("testdatei.txt","a+"); Was habe ich falsch gemacht ? Sorry, aber ich bin überhaupt nicht so der Programmier-Spezi... Alle Dateien (insert.php; testdatei.txt und das Formular befinden sich auf dem Webserver). Vielleicht liegt es daran, dass die Datei "testdatei.txt" leer ist ? Zitieren
kills Geschrieben 19. August 2003 Geschrieben 19. August 2003 hi, der fehler war eine zeile davor $kundennummer = $_POST["kundennummer"]; Gruß kills PS: Ich bin auch FiSi Zitieren
user103109 Geschrieben 19. August 2003 Autor Geschrieben 19. August 2003 Ok, korrigiert, aber jetzt geht's erst richtig los mit Fehlermeldungen: failed to create stream: Permission denied in /is/htdocs/23649/www.xxx.de/xxx/insert.php on line 3 Warning: fwrite(): supplied argument is not a valid stream resource in /is/htdocs/23649/www.xxx.de/xxx/insert.php on line 4 Warning: fclose(): supplied argument is not a valid stream resource in /is/htdocs/23649/www.xxx.de/xxx/insert.php on line 5 Zitieren
kingofbrain Geschrieben 19. August 2003 Geschrieben 19. August 2003 Servus, ist aber alles wegen dem selben. Du hast keine Berechtigung, auf ein File zuzugreifen. Liegt evtl. an den Berechtigungen des Verzeichnisses / Files oder an den Einstellungen in der php.ini. Wobei Du bei zweiterem einfach mal suchen müsstest, oder auf jemanden warten, der fitter ist - Huhu, Jarahaaaaaz. Peter Zitieren
user103109 Geschrieben 19. August 2003 Autor Geschrieben 19. August 2003 Hm, also in dem Verzeichnis ging sonst alles wunderbar: Einfügen, löschen, umbenennen von Dateien usw. Ich frag' aber nochmal nach diesen Berechtigungen.... Jetzt hat's endlich geklappt. Er schreibt den Kram jetzt in die leere Datei. Wie kann ich das jetzt so einstellen, dass er die Einträge untereinander schreibt und nicht hintereinander ? Muss ich da irgendwo ein /n einfügen, wenn ja wo ? Zitieren
Claus Gronemeier Geschrieben 19. August 2003 Geschrieben 19. August 2003 Hallo öffne mal dein FTP-Programm: Dort gehst du auf die Datei, die die Rechte erhalten soll. Dann RECHTSKLICKEN und auf CHMOD gehen. Dort musst du die 3Stellige Zahl in 777 umändern und auf übernehmen drücken. So einfach ist das Schönen Gruß Claus Zitieren
kingofbrain Geschrieben 19. August 2003 Geschrieben 19. August 2003 Und wegen dem Zeilenumbruch: in \n bzw \r\n bringen diesen auf Unix bzw Windows (\r auf Mac OS bis 9 AFAIK) Peter Zitieren
user103109 Geschrieben 19. August 2003 Autor Geschrieben 19. August 2003 So, jetzt klappt es auch mit dem Zeilenumbruch. Allerdings läßt sich die gefüllte Textdatei nur mit Word richtig anzeigen. Beim Editor erscheint ein Sonderzeichen anstelle des neuen Eintrags. Zitieren
kills Geschrieben 20. August 2003 Geschrieben 20. August 2003 hasst du auch schön brav \r\n gemacht? (Windows).... Zitieren
kills Geschrieben 20. August 2003 Geschrieben 20. August 2003 kurze zwischenfrage: (wollte keinen eigenen Thread wegen solch einer Kleinigkeit öffnen) worin besteht der unterschied zwischen $_POST[] und $HTTP_POST_VARS[] ? Gruß kills Zitieren
kinnley Geschrieben 20. August 2003 Geschrieben 20. August 2003 Handbuch sagt: $HTTP_POST_VARS Ein assoziatives Array aus Varaiblen, welches dem aktuellen Skript per HTTP-POST-Methode übergeben wurde. $_POST Ein assoziatives Array aus Variablen, welches dem aktuellen Skript per HTTP-POST-Methode übergeben wurde. Automatisch global in jedem Geltungsbereich. Eingeführt in PHP 4.1.0. Zitieren
kills Geschrieben 20. August 2003 Geschrieben 20. August 2003 danke. habs verpeilt. Im handbuch hätte ich ja auch schauen können.... :floet: Zitieren
user103109 Geschrieben 20. August 2003 Autor Geschrieben 20. August 2003 So, neue Frage. Wie kann ich das aktuelle Datum ausgeben ? Von wo aus holt er sich eigentlich das Datum ? $datum = date("d.m.Y",$timestamp); --> dies liefert nur den 1.7.1970; Ich will aber den 20.08.2003 haben. Thx Zitieren
user103109 Geschrieben 20. August 2003 Autor Geschrieben 20. August 2003 Ok, hab's selber rausgefunden. Einfach das Wort "timestamp" weglassen. Zitieren
user103109 Geschrieben 22. August 2003 Autor Geschrieben 22. August 2003 So, bin jetzt schon etwas weiter mit PHP. Jetzt will ich etwas komplizierteres machen. Ich will, dass mir das Script eine Liste mit ID, Kundennummer, Eintragsdatum in eine Datei mit dem Namen "Positivliste.txt" schreibt. Es gibt in der mySQL Datenbank eine Tabelle mit dem Namen "Positivliste", wo zuerst die Sachen reingeschrieben werden und dann mittels SELECT Abfrage wieder ausgelsen werden. Es klappt auch ganz gut mit der Ausgabe auf dem Bildschirm. Ich will dies jedoch alles in der Datei Positivliste.txt haben und nicht im Browser- Fenster. Ich hoffe Ihr versteht, was ich meine. Hier mal mein Quelltext: html> <head> </head> <title> Eintrag geschrieben </title> <? require("connect.php"); $kundennummer = $_POST["kundennummer"]; ?> <body> <h3> Der Eintrag wurde erfolgreich in die Datenbank geschrieben</h3> <? $datum = date("d.m.Y"); //Der Verweis auf das Ergebnis des neuen Eintrags wird in der Variablen result gespeichert. $result=mysql_query("INSERT INTO positivliste (kdnr,eintragsdatum) VALUES ($kundennummer,'$datum')"); //Abfragen von ID (fortlaufend), Kundennummer und Eintragsdatum von der Tabelle Positivliste. $result=mysql_query("SELECT ID, kdnr, eintragsdatum FROM positivliste"); //Nun werden die Zeilen des abgefragten Ergebnissen solange durchlaufen, bis er keine mehr findet. while($zeile=mysql_fetch_array($result)){ echo $zeile["ID"]." "; echo $zeile["kdnr"]." "; echo $zeile["eintragsdatum"]."<br>"; } ?> </body> </html> Das, was ich bei "echo" ausgebe, möchte ich in die Datei Positivliste.txt haben. Wie geht das ? Wäre nett, wenn noch jemand der PHP-Profis ein Tip hätte. Zitieren
Claus Gronemeier Geschrieben 22. August 2003 Geschrieben 22. August 2003 Wenn ich dir einen Tipp geben darf: achte bitte darauf, dass Du mögliche "Fehlermeldungen" vermeidest... :-) Das ist für den User immer sehr störend und kann dir ggfs. die seite zerschießen. Schreib die Datanbankanfragen bitte so: (Beispiel für dein Select) $result=mysql_query("SELECT ID, kdnr, eintragsdatum FROM positivliste"); [/php] (Andere Art) [php] $result = @mysql_query("SELECT ID, kdnr, eintragsdatum FROM positivliste"); if (!$result) { echo ("<p>Bei der Abfrage ist ein Fehler aufgetreten...</p>"); exit(); } @ = damit verhindert man, dass die Funktionen (z.B.: mysql_connect()) Fehlermeldungen ausgeben. ! $result = das "!" ist ein Negationsoperator, der prinzipiell true in false umkehr. (ebenfalls false in true.. ;-)) exit() = bedeutet, dass der interpreter ab diesem Punkt nicht mehr die Seite durchsucht... Vielleicht braucht kannst du das ja gebrauchen Schönen Gruß Claus Zitieren
user103109 Geschrieben 22. August 2003 Autor Geschrieben 22. August 2003 Hört sich gut an, wobei zunächst ja nur ich selber mit dem Script arbeite. Deshalb machen mir Fehlermeldungen erst mal nix aus. Dann sehe ich nämlich, wo ich Fehler gemacht habe. Wenn alles funktioniert, kann man ja immer noch "Schönschrift" verwenden... Zitieren
kills Geschrieben 22. August 2003 Geschrieben 22. August 2003 <html> <head> </head> <title> Eintrag geschrieben </title> <? require("connect.php"); $kundennummer = $_POST["kundennummer"]; ?> <body> <h3> Der Eintrag wurde erfolgreich in die Datenbank geschrieben</h3> <? $datum = date("d.m.Y"); //Der Verweis auf das Ergebnis des neuen Eintrags wird in der Variablen result gespeichert. $result=mysql_query("INSERT INTO positivliste (kdnr,eintragsdatum) VALUES ($kundennummer,'$datum')"); //Abfragen von ID (fortlaufend), Kundennummer und Eintragsdatum von der Tabelle Positivliste. $result=mysql_query("SELECT ID, kdnr, eintragsdatum FROM positivliste"); //Nun werden die Zeilen des abgefragten Ergebnissen solange durchlaufen, bis er keine mehr findet. $txt = ""; while($zeile=mysql_fetch_array($result)){ $txt .= $zeile["ID"]." "; $txt .= $zeile["kdnr"]." "; $txt .=$zeile["eintragsdatum"]."<br>"; } $filepointer = fopen('./deinedatei.txt',"a"); fwrite($filepointer,$txt); fclose($filepointer); ?> </body> </html> meine Änderungen sind fett markiert. hast du oben beim html tag das "<" vergessen? Zitieren
user103109 Geschrieben 22. August 2003 Autor Geschrieben 22. August 2003 @kills Danke für Deinen Quelltext. Ich habe das mal eingefügt, aber er zeigt mir nur den letzten eingegebenen Eintrag an: 57535422.08.2003 Warum macht er keine Lücke zwischen den einzelnen Teilen, z.B. so: 57 5354 22.08.2003 Wo sind die Datensätze 1-56 geblieben ? Edit: Die ersten Datensätze zeigt er mir an, aber sowohl in Word als auch mit Editor erscheinen die Einträge zerhackt: 1 548454 01.01.1970<br>2 9848487 01.01.1970<br>3 1255457 01.01.1970<br>4 5448716 01.01.1970<br>5 15789 01.01.1970<br>6 54654 20.08.2003<br>7 15751 20.08.2003<br>8 1584 20.08.2003<br>9 125 20.08.2003<br>10 123 20.08.2003<br>11 12657 20.08.2003<br>12 12657 20.08.2003<br>13 1257 20.08.2003<br>14 2587 20.08.2003<br>15 26574 20.08.2003<br>16 2584 20.08.2003<br>17 285 20.08.2003<br>18 128 20.08.2003<br>19 12568 20.08.2003<br>20 1258 20.08.2003<br>21 2568 20.08.2003<br>22 1257 20.08.2003<br>23 1258 20.08.2003<br>24 1257 20.08.2003<br>25 25845 20.08.2003<br>26 12567 20.08.2003<br>27 2356877 20.08.2003<br>28 512 20.08.2003<br>29 12589 22.08.2003<br>30 1599 22.08.2003<br>31 1499 22.08.2003<br>32 599 22.08.2003<br>33 259 22.08.2003<br>34 667 22.08.2003<br>35 667 22.08.2003<br>36 866 22.08.2003<br>37 1500 22.08.2003<br>38 1800 22.08.2003<br>39 1833 22.08.2003<br>40 1833 22.08.2003<br>41 733 22.08.2003<br>42 54345 22.08.2003<br>43 1258 22.08.2003<br>44 1833 22.08.2003<br>45 2133 22.08.2003<br>46 6999 22.08.2003<br>47 98787 22.08.2003<br>48 15984 22.08.2003<br>49 128 22.08.2003<br>50 1287 22.08.2003<br>51 5852 22.08.2003<br>52 85674 22.08.2003<br> usw. Zitieren
kingofbrain Geschrieben 22. August 2003 Geschrieben 22. August 2003 Ach komm, user103109, wenn Du schon fertige Quelltexte bekommst, dann schau sie halt auch an, und überleg erst mal selber! Lass Dir zu Debug-Zwecken das erstellte Query nochmal ausgeben, damit Du weisst, was an die Datenbank gegangen ist. Dann benutz einen Schleifenzähler, den Du ausgibst, mit den in der Schleife ermittelten Werten. Daran siehst Du, wie sich $txt verändert. Und wenn irgendwas ist, wo Du wirklich nicht mehr weiterkommst, dann stell noch mal eine vernünftige Frage. Denn wie Jaraz schon gesagt hat, es ist nicht Sinn der Sache, dass andere Deine Aufgaben machen, sondern hier soll Hilfe geboten werden, wenn man nicht mehr weiterkommt. Peter Zitieren
user103109 Geschrieben 22. August 2003 Autor Geschrieben 22. August 2003 Naja, wenn ich weiter wüsste, würde ich wohl kaum hier was posten, oder ? Habe ja geschrieben, dass ich da noch Anfänger bin und das erst seit 3 Tagen mache.. Also die Echo Ausgabe ist einwandfrei im Browser. Alle Einträge sind schön untereinander wie es sein soll. Aber die TXT-Datei will nicht so recht. Es muss also an folgenden Teil liegen: $txt .= $zeile["ID"]." "; $txt .= $zeile["kdnr"]." "; $txt .= $zeile["eintragsdatum"]."<br>"; Wie Ihr seht (oder auch nicht ), habe ich auch schon mal mit nbsp probiert, aber trotzdem schreibt er alles hintereinander. Das <br> wird ebenfalls in Word (und Editor) angezeigt. Zitieren
kingofbrain Geschrieben 22. August 2003 Geschrieben 22. August 2003 Das er das <br> anzeigt ist ja klar. Schliesslich schiebst Du es in den String mit rein. Das die Einträge ohne Zeilenumbruch in die Datei geschrieben werden, liegt daran, dass Du keinen Zeilenumbruch machst. \r\n (Windows) oder \n (Linux) sind Dein Freund. Die Sache mit den Leerzeichen kann ich so nicht nachvollziehen, da ich dort keinen Fehler sehe. Peter 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.