php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
[Variablen] Fragebogenproblem


 
derbo
17-07-2004, 16:41 
 
Servus zusammen,
ich programmiere momentan einen Fragebogen für eine Diplomarbeit.
Oben gilt es einen Authorisierungscode einzugeben, und dann klickt man eben die
gewünschten Variablen an. Der Code wird schön in die csv-Datei geschrieben, die
Variablen aber nicht.


Bin voll in Panik, da wir am Dienstag den Pre-Test machen wollen

grüsse vom Bohier gehts zum Bogen (http://www.borishorn.de/fragebogen/fb_neu_test.htm)

und hier der PHP-Code<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>PHP-Newsletter-Abo</title>
</head>
<body>
<?php
$code=$HTTP_POST_VARS['code'];
$v1=$HTTP_POST_VARS['I1_1'];
$v2=$HTTP_POST_VARS['I1_2'];
$v3=$HTTP_POST_VARS['I1_3'];
$v4=$HTTP_POST_VARS['I1_4'];
$v5=$HTTP_POST_VARS['I1_5'];
$v6=$HTTP_POST_VARS['I2_1a'];
$v7=$HTTP_POST_VARS['I2_1b'];
$v8=$HTTP_POST_VARS['I2_1c'];
$v9=$HTTP_POST_VARS['I2_1d'];
$v10=$HTTP_POST_VARS['I2_1f'];
$v11=$HTTP_POST_VARS['I2_1g'];

$punkt=".";
$dpunkt=":";
$trenner=";";

//Zuerst Datum und Uhrzeit generieren:
$datum = date("d");
$datum .=$punkt;
$datum .=date("m");
$datum .=$punkt;
$datum .=date("Y");
$zeit = date("G");
$zeit .=$dpunkt;
$zeit .=date("i");
$zeit .=$dpunkt;
$zeit .=date("s");


//Jetzt einen neuen Datensatz erstellen:

if ($v1=="") {
$v1="-";
}

if ($v2=="") {
$v2="-";
}

if ($v3=="") {
$v3="-";
}

if ($v4=="") {
$v4="-";
}
if ($v5=="") {
$v5="-";
}
if ($v6=="") {
$v6="-";
}
if ($v7=="") {
$v7="-";
}

if ($v8=="") {
$v8="-";
}

if ($v9=="") {
$v9="-";
}

if ($v10=="") {
$v10="-";
}

if ($v11=="") {
$v11="-";
}

if ($code!="") {
$datensatz = $v1;
$datensatz .= $v2;
$datensatz .= $v3;
$datensatz .= $v4;
$datensatz .= $v5;
$datensatz .= $v6;
$datensatz .= $v7;
$datensatz .= $v8;
$datensatz .= $v9;
$datensatz .= $v10;
$datensatz .= $v11;

$datensatz .= $trenner;
$datensatz .= $code;
$datensatz .= $trenner;
$datensatz .= $datum;
$datensatz .= $trenner;
$datensatz .= $zeit;
$datensatz .= "\n";

//Jetzt den neuen Datensatz an das Ende
//der Datei newsletter.csv anhängen...

$bol=file_exists("newsletter.csv");
if ($bol) {
$datei = fopen("newsletter.csv","a");
if ($datei) {
$output = fwrite($datei,$datensatz);
fclose($datei);
print ("<p>Vielen Dank f&uuml;r Ihren Eintrag.<br>");
print ("Sie bekommen den Newsletter jetzt regelm&auml;&szlig;ig zugeschickt<br>");
}
}
else {
print ("<p>Daten konnten nicht in die Datei geschrieben werden.<br>");
}
}
else {
print ("<p>bitte geben sie ihren code ein.<br>");
print ("<a href='javascript:history.back()'>Zur&uuml;ck</a>");
}
?>
</body>
</html>

 
TobiaZ
17-07-2004, 16:55 
 
Welcome,

Bin voll in Panik, da wir am Dienstag den Pre-Test machen wollen mag ja sein.

Ich kann in dem Script leider keine Testausgaben entdecken. Woher willst du also wissen, ob die Variablen überhaupt werte haben.

 
derbo
17-07-2004, 17:05 
 
Die Variablen habe ich in der Html-Datei definiert, zumindest den ersten und zweiten Frageblock um es zu testen. Da es aber nicht lief habe ich nicht weiter codiert

 
derHund
17-07-2004, 17:06 
 
ich möchte dir an dieser stelle mal den titel 'bachelor of how to make an elephant out of a mouse' verleihen. nur spaß ;)
vielleicht solltest du den code mal in ein, zwei zeilen zusammenfassen ... viel mehr sinds wohl nicht ... macht auch das debuggen einfacher.
Die Variablen habe ich in der Html-Datei definiert, zumindest den ersten und zweiten Frageblock um es zu testen. Da es aber nicht lief habe ich nicht weiter codiertwas soll das denn heißen?

 
DanielD
17-07-2004, 17:25 
 
pack mal in die umfrage_test.php ganz oben rein:
print_r($_POST);
dann gucken was rauskommt und dementsprechend den Code schreiben ...

mfG

 
derbo
17-07-2004, 17:26 
 
Ok ich präzisiere nochmal mein Problem.
Also wie schon erwähnt, habe ich einen Fragebogen programmiert, mit ziemlich vielen Formulardaten, welche entweder Radio-Buttons, Textfelder oder Checkboxen sind. Diese Daten sollen in eine csv-Datei abgespeichert werden, da so der Import in SPSS einfacher von statten geht.

Dazu habe ich versucht, ein Script umzuschreiben, welches eigentlich für einen Newsletteradressen-Sammler gedacht war. Komischerweiser schreibt das PHP-Script, aber nur den Authorisierungscode in die csv-Datei.

Wie bekomme ich es denn hin, dass die Formulardaten in die cvs-Datei gespeichert werden?

Ich peil es irgendwie halt doch nicht:dontknow:

 
derbo
17-07-2004, 17:33 
 
@danield

da kommt dieses heraus

Array ( [code] => test12 [I1_1] => i11ja [textfield] => )

was kann ich denn damit anfangen

 
ExInfernis
17-07-2004, 18:57 
 
Das sind die Werte die dein Skript an den Server schickt.

Es kommt also ein Wert für die Variable :

code = test12

und

I1_1 =i11ja

...

an. Steht nur der Code , also nur "test12" in der Datei ?

Wenn ich mir den Quellcode deiner Seite ausgeben lasse, heißen bei Dir ab der Frage "Welche Recherchequellen nutzen Sie ?" alle Radiobuttons nur noch Radiobuttons und alle Textfelder nur noch textfield. Das geht so natürlich nicht, da musst du noch einzelne Namen vergeben.

So sieht dein Quellcode für die erste Frage aus :

Glauben Sie, dass der Beruf des Sportjournalisten/ der Sportjournalistin<br />

gute Zukunftschancen hat ?</span></span><br />
<br />
<span class="haupttext">
<input name="I1_1" type="radio" class="haupttext" value="i11ja" />
sehr</span> <span class="haupttext">gute<br />
<input name="I1_2" type="radio" class="haupttext" value="ja" />
gute<br />
<input name="I1_3" type="radio" class="haupttext" value="i13ja" />
Teils, teils
<br />
<input name="I1_4" type="radio" class="haupttext" value="i14ja" />
schlechte<br />

<input name="I1_5" type="radio" class="haupttext" value="i15ja" />
sehr schlechte
<br />

viel zu umständlich, mach das doch so :


...

<label><input type="radio" name="I1" value="sgt">
Sehr gut</label>
<br>
<label><input type="radio" name="I1" value="gut">
Gut</label>
<br>

...

Si benötigst du nur eine Variable für eine Frage und musst auch nur eine Variable überprüfen.

 
TobiaZ
17-07-2004, 19:01 
 
Ok ich präzisiere nochmal mein Problem. Wie wärs wenn du statt dessen mal auf die anderen Beiträge eingehen würdest...

(nur mal ne idee)

 
derbo
17-07-2004, 19:21 
 
Ja genau nur der Code steht in der Datei, sonst eben nur noch das Datum und die Zeit.

Die Lösung von Exinfernis sieht natürlich zehnmal besser aus, aber mir läuft etwas die Zeit davon.

Das die Radiobutton weiter unten noch keinen Namen haben, hängt damit zusammen, da ich erst mal den PHP-Code testen wollte bervor ich alle Radiobuttons bennene.

 
ExInfernis
17-07-2004, 19:40 
 
Also, hab das nun mal gestestet und deine erste Frage in eine extra Datei gepackt und mit deinem Skript überprüfen und in die Datei schreiben lassen, und es funktioniert.

In der Datei steht dann (nach zwei Eingaben) folgendes :

--i13ja--------;code1;17.07.2004;18:41:14
----i15ja------;code1;17.07.2004;18:41:20


Würde dir aber doch zu einer Optionsschaltergruppe raten, da man sonst auch mehrere Radiobuttons gleichzeitig anklicken kann, also "gut" und "Sehr gut".

Das ergibt im schlimmsten Fall (alle Buttons wurden angeklickt) folgenden Eintrag in der Datei :

i11jajai13jai14jai15ja------;code1;17.07.2004;18:45:15

 
derbo
17-07-2004, 21:42 
 
Stimmt, das ist mir auch schon aufgefallen. Ich werde das Ding jetzt glaube ich wohl oder übel nochmal neu proggen, dann mit einer MySQL-Anbindung, weil ein Kollege mir gerade gesagt hat, dass die Geschichte mit den CSV total gefährlich ist. Da muss nur einmal der File corrupt sein und alle Daten sind flöten.

Das gibt mal wieder ne schöne Nachschicht:rocks:

 
TobiaZ
17-07-2004, 21:47 
 
weil ein Kollege mir gerade gesagt hat, dass die Geschichte mit den CSV total gefährlich ist. Da muss nur einmal der File corrupt sein und alle Daten sind flöten. Ist bei SQL eigentlich genauso. nur ist da die gefahr geringer. Aber wenn man ein bisschen umsichtig mit den Daten umgeht, und die nicht löscht, bzw nicht außerhalb des verarbeitenden Programms öffnet, hast du nichts zu befürchten.

Wenn dein verarbeitendes Programm aber ne SQL-Schnittstelle hat, solltest du die auch nutzen! ;)

 
derbo
17-07-2004, 22:53 
 
Stimmt, das ist mir auch schon aufgefallen. Ich werde das Ding jetzt glaube ich wohl oder übel nochmal neu proggen, dann mit einer MySQL-Anbindung, weil ein Kollege mir gerade gesagt hat, dass die Geschichte mit den CSV total gefährlich ist. Da muss nur einmal der File corrupt sein und alle Daten sind flöten.

Das gibt mal wieder ne schöne Nachschicht:rocks:

 
TobiaZ
18-07-2004, 14:26 
 
warum postest du das doppelt??? :confused:

 
derbo
19-07-2004, 10:12 
 
Habe ich nicht doppelt gepostet

keine Ahnung warum das zweimal drinsteht

 
TobiaZ
19-07-2004, 13:01 
 
War bestimmt der Wind ;)


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:12 Uhr.