PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Formular mit php in textdatei auslesen


lisa
04.03.2005, 12:30:50
Hallo,
ich bin absolute PHP-Anfängerin und möchte folgende "Herausforderung" bewältigen. Ich möchte Daten aus einem Formular holen und diese durch Komma getrennt in eine Textdatei speichern, um diese Textdatei später in eine Tabelle umzuwandeln, d.h. die Struktur jeder Zeile der Textdatei muss gleich sein.
Ich kann schon die Daten mit $-POST auslesen und durch Komma getrennt in eine Textdatei (fopen und fwrite) einlesen. Wie kann ich den Zeilenumbruch machen? Wie leere Felder behandeln? Was ist mit den Checkboxen?

Wer kann mir helfen?

feuervogel
04.03.2005, 12:57:53
willkommen im forum!

da du wohl ziemlich viele grundsätzliche fragen hast, empfehle ich Dir mal diese lektüre (http://tut.php-q.net/). dort stehene viele antworten auf fragen, die sich nicht nur am anfang auftuen.

- zeilenumbruch: n (je nach Betriebssystem unterschiedlich)
- leerfelder: einfach leer lassen, also ,, ?
- checkboxen: schau in das tutorial.

lisa
05.03.2005, 10:50:29
Obwohl ich wie im Turorial angegeben:
<input type="checkbox" name="xyz" value="abc" />
in der checkbox einen value eingegeben habe,
bekomme ich immer nur checkbox geliefert und nicht den value.

Woran kann das liegen?

xabbuh
05.03.2005, 11:25:29
Dann zeig mal den Code, mit dem du es versucht hast.

lisa
07.03.2005, 09:27:34
Es geht jetzt doch. Ich glaube, es lag daran,dass ich das Formular zwischendurch nicht gelöscht habe.

Würde mich aber freuen, wenn du trotzdem einen blick auf den Code wirfst, ob er wasserdicht ist. Funktionieren tuts jetzt so.

<?php
$anrede = $_POST['anrede'];
$name = $_POST['name'];
$vorname = $_POST['vorname'];

$datei = "bewerber.txt";

$alles = $_POST['anrede'];
$alles .= ",";
$alles .= $_POST['vorname'];
$alles .= ",";
$alles .= $_POST['name'];
$alles .= ",";
$alles .= $_POST['strasse'];
$alles .= ",";
$alles .= $_POST['plz'];
$alles .= ",";
$alles .= $_POST['ort'];
$alles .= ",";
$alles .= $_POST['land'];
$alles .= ",";
$alles .= $_POST['email'];
$alles .= ",";
$alles .= $_POST['cv'];
$alles .= ",";
$alles .= $_POST['abi_zeugnis'];
$alles .= ",";
$alles .= $_POST['hochzeugnis'];
$alles .= ",";
$alles .= $_POST['kommentar'];
$alles .= ",";


//Rueckmeldung an den Bewerber

echo "Sehr geehrte(r) $anrede $vorname $name vielen Dank dass Sie uns Ihre Bewerbung geschickt haben.";


//schreiben in Datei
$fp = fopen($datei, "a");

fwrite($fp, "$allesn", 1024);
fclose($fp);

?>

Danke!

xabbuh
07.03.2005, 09:32:30
Ich würde an deiner Stelle auf jeden Fall die Funktion strip_tags() auf die übergebenen Werte anwenden. Um hier nicht alle Werte einzeln bearbeiten zu müssen, kannst du es über eine foreach-Schleife laufen lassen:

<?php
foreach($_POST as $var => $value) {
$$var = strip_tags($_POST);
}
?>


Ein weiterer Vorteil ist, dass du so in deinem weiteren Script direkt mit $vorname, $nachname etc. statt $_POST['vorname'], $_POST['nachname'] etc. arbeiten kannst.

Serp
07.03.2005, 21:03:10
Zusätzlich würd ich noch trim() empfehlen.

Und die Rückmeldung könnte man auch noch etwas schöner gestalten. Ich nehm einfach mal an, dass du für die Anrede eine Auswahlliste mit Herr und Frau hast, oder? Dann könntest du da folgendes schreiben:

echo "Sehr geehrte";
if($anrede == 'Herr') echo "r";
echo " $anrede $vorname $name vielen Dank dass Sie uns Ihre Bewerbung geschickt haben.";

Wenn die Leute ihre Anrede natürlich frei wählen können wird das etwas komplizierter... Wobei man ja theoretisch n assoziatives Array machen könnte, in das man alle Möglichkeiten einträgt, die einem so einfallen. Im Zweifelsfall lässt man dann halt die Version mit der Klammer ausgeben. So in etwa:

$anreden = array('Herr' => 'r', 'Frau' => '', 'Fräulein' => 's');

echo "Sehr geehrte";
if(isset($anreden[$anrede]) echo $anreden[$anrede];
else echo '(r)';
echo " $anrede $vorname $name vielen Dank dass Sie uns Ihre Bewerbung geschickt haben.";

lisa
08.03.2005, 18:20:57
toll, vielen dank, was es so alles gibt.
wirft aber auch wieder neue fragen auf also:
warum strip? falls einer html tags ins Formular schreibt?

und wenn ich das in meinen Code oben reinschreibe, bringt er mir als Antwort bei echo: sehr geehrter array array array usw.
Da habe ich sicher alles falsch gemacht.

Und warum trim? den zeilenumbruch n brauche ich ja unbedingt?

Das mit der Anrede hatte ich mir auch schon überlegt, wusste aber nicht wie.

Hoffe auf Antwort + vielen Dank

|Coding
08.03.2005, 18:51:53
wenn du "array array" usw. ausgegeben bekommst, dann sind es wohl arrays und keine variablen.