Formular in Tabulatorgetrennte Datei schreiben bzw. Datei vervollständigen

Muckel1986

Erfahrenes Mitglied
Guten Abend,

ich möchte mir ein kleines Script bauen, in dem Leute die Möglichkeit haben, ihre Angaben zu machen (In einem normalen Formular) und jenes möchte ich dann in einer Datei speichern, die die Daten mittels Tabulatoren trennt. Der Grund ist hierfür, dass ich die Daten dann sehr einfach in Thunderbird oder Horde importieren kann.

Doch leider werden die Daten nicht in der txt gespeichert. Daher die Frage, wo mein Fehler liegt? Den html aufbau brauche ich euch wohl nicht schicken, oder? Der php Teil ist folgender, den ich aus zwei Tutorials zusammen gebaut habe:
PHP:
$required_input=array('vorname','nachname','anschrift1', 'anschrift2', '','postleitzahl','ort', 'land','email',);
$input=$_POST['input'];
$input_ok=array();
while(list($k,$v)=each($input)){
    switch($k){
        'email':
            alles ok=check_Syntax($v);
        'str':
        'plz':
        'name':
        'ort':
            if(alles ok){
                $input_ok[]=$k;
            }
            break;
            ...........
    }    
}
$forgotten_input=array_diff($required_input,$input_ok); 
//prüfen ob etwas vergessen wurde
if(count($forgotten_input)==0){
    /*in die Datei schreiben...*/   
    $fp = fopen("test2.txt","a+");// Datei erstellen wenn nicht vorhanden
    fwrite($fp, $input); //Felder in die Datei schreiben
}else{
    //zeige Fehlermeldung/-seite
}

Desweiteren ist mir nicht klar, wie ich es mache, dass es auch eine Tabulatorgetrennte Datei ist?! Zu finden ist das ganze unter jurtenrunde.de/test/adressen.htm.

Hoffe sehr, dass ihr meiner Betriebsblindheit weiterhelfen könnt.
Gute Nacht
Muckel
 
Hi,

als erstes müsstest Du Dir mal ein Array mit leeren Werten und allen Keys aufbauen, die möglich sind, damit Du eine feste Struktur hast. Sonst hast Du hinterher als z.B. 11. Wert mal eine ICQ-Nummer, mal ein Geburtsdatum stehen. Mit [phpf]array_merge[/phpf] kannst Du die Werte aus dem Input-Array dann übernehmen.

PHP:
fwrite($fp, $input);

Das kann so nicht gehen, da $input ein Array ist, fwrite aber einen String erwartet.

PHP:
fwrite($fp, implode("\t", $resultArray) . "\n");

oder

PHP:
fputcsv($fp, resultArray, "\t");

Ist es übrigens Absicht, dass in Deinem $required_input-Array ein leerer Wert vorhanden ist?

LG
 
Guten Morgen,

vielen Dank schonmal für deine Antwort. Ich habe ein Formular, wo Daten ein gegeben werden. Die einzelnen Felder sind so auf gebaut:
Code:
<input type="text" name="input[bezeichnung]">

Ich möchte für einige Angaben überprüfen, ob sie ein gegeben wurden. Das geht, so dachte ich es zumindest, mit:
PHP:
$required_input=array('vorname','nachname','anschrift1', 'anschrift2', '','postleitzahl','ort', 'land','email',); 
$input=$_POST['input']; 
$input_ok=array(); 
while(list($k,$v)=each($input)){ 
    switch($k){ 
        'email': 
            alles ok=check_Syntax($v); 
        'str': 
        'plz': 
        'name': 
        'ort': 
            if(alles ok){ 
                $input_ok[]=$k; 
            } 
            break; 
            ........... 
    }     
}

Oder habe ich dort schon ein Fehler? Wenn die Daten ein gegeben wurden, sollen sie in die Datei test2.txt geschrieben werden bzw. zu den vorhandenen Daten hinzu gefügt werden. Das sollte so gehen:
PHP:
$forgotten_input=array_diff($required_input,$input_ok);  
//prüfen ob etwas vergessen wurde 
if(count($forgotten_input)==0){
Jetzt fehlt aber noch das direkte schreiben / hinzufügen / anhängen in die Datei. Ich hatte es ja so versucht:
PHP:
  /*in die Datei schreiben...*/    
    $fp = fopen("test2.txt","a+");// Datei erstellen wenn nicht vorhanden 
    fwrite($fp, $input); //Felder in die Datei schreiben 
}else{ 
    //zeige Fehlermeldung/-seite 
}

Baue ich das jetzt um, so wie Du es geschrieben hast, erhalte ich dieses:
PHP:
/*in die Datei schreiben...*/    
    $fp = fopen("test2.txt","a+");// Datei erstellen wenn nicht vorhanden 
    fwrite($fp, implode("\t", $resultArray) . "\n");   //Felder in die Datei schreiben 
}else{ 
    //zeige Fehlermeldung/-seite 
}
Das ganze Script würde dann so ausschauen:
PHP:
$forgotten_input=array_diff($required_input,$input_ok);  
//prüfen ob etwas vergessen wurde 
if(count($forgotten_input)==0){ 

/*in die Datei schreiben...*/    
    $fp = fopen("test2.txt","a+");// Datei erstellen wenn nicht vorhanden 
    fwrite($fp, implode("\t", $resultArray) . "\n");   //Felder in die Datei schreiben 
}else{ 
    //zeige Fehlermeldung/-seite 
}

Oder habe ich dort noch einen Fehler? Kann das leider gerade nicht testen, da ich in der Berufsschule bin. Da ich ja eine Tabulatorgetrennte Datei erhalten möchte, besteht noch die Frage, wie ich die einzelnen Eingaben/Felder mit einem Tabulator getrennt in die Datei schreibe.

Vielen Dank für Deine Hillfe!

Gruß Muckel
 
Hi,

vielen Dank schonmal für deine Antwort.

Bitte schön. Aber hast Du sie auch gelesen? Warum gehst Du überhaupt nicht darauf ein?
1.Wo hast Du ein Array mit allen möglichen Keys definiert?
2.Wo füllst Du das dann mit den Werten aus dem Input-Array?
3.Warum schaust Du Dir den Code, den ich Dir gepostet habe, nicht mal an, statt nur zu kopieren und merkst, dass Du gar keine Variable $resultArray hast. Die müsstest Du erstmal definieren (s. 1. und 2.)

Oder habe ich dort schon ein Fehler?

Gegenfrage:
4. Warum beantwortest Du meine Frage nicht:

kuddeldaddeldu hat gesagt.:
Ist es übrigens Absicht, dass in Deinem $required_input-Array ein leerer Wert vorhanden ist?

Also erstmal die Punkte abarbeiten, vorher ergibt eine Fehlersuche, wenn dann welche vorhanden sein sollten, keinen Sinn.

LG
 
Guten Tag,

ich habe mir deinen Post sehr wohl durch gelesen und war der Meinung, dass das
PHP:
fwrite($fp, implode("\t", $resultArray) . "\n");
die Lösung war.

Ist es übrigens Absicht, dass in Deinem $required_input-Array ein leerer Wert vorhanden ist?
Nein, ist es nicht. Da ich der annahme war, dass ich jenen mit
PHP:
$required_input=array('vorname','nachname','anschrift1', 'anschrift2', '','postleitzahl','ort', 'land','email',);
fülle. Also den Daten aus dem Formular.

1.Wo hast Du ein Array mit allen möglichen Keys definiert?
2.Wo füllst Du das dann mit den Werten aus dem Input-Array?

Ich war der Meinung, dass ich den Array mit dem ersten Abschnitt gefüllt hätte. Also um genau zu sein mit der Zeile, die ich zuletzt Zitiert habe. Aber das bezieht sich nur auf die Überprüfung?

Habe mit php vorher leider noch nicht wirklich gearbeitet - daher die Missverständnisse und die vielleicht unqualifizierten Fragen.

Gruß und vielen Dank
Muckel
 

Neue Beiträge

Zurück