Eingabe aus Formular in Datei schreiben
Hannes
- php
0 Hopsel0 Doppelposting :-)
Chris0 Chris0 Chris
Hi zusammen
Hab einen online Fragebogen, die Eingaben (Textfelder und Radio-Buttons) wurden bisher an mich gemailt. Jetzt hätt ich aber lieber, dass diese gleich in eine Datei geschrieben werden sodass ich diese dann später ins Excel importieren kann.
Hab schon mal ein wenig angefangen (mit der Hilfe von Chris aus dem Forum), komm aber leider nicht mehr weiter.
Hab das für alle Fragen gemacht:
if(isset($_POST['13'])
and $_POST['13'] >= 1
and $_POST['13'] <= 2)
{
$_daten['13'] = $_POST['13'];
}
else
{
$_daten['13'] = 0; ## oder auch = '';
}
usw....
daran anschließend hab ich diesen Code angehängt:
$delim = '"';
$sep = ';';
$CRLF = chr(13).chr(10);
function array_mask($_array,$mask)
{
if (is_array($_array))
{
foreach($_array as $key => $val)
{
array_mask($_array[$key],$mask);
}
}
else
{
str_replace($delim,$delim.$delim,$_array);
str_replace($mask,$mask.$mask,$_array);
}
return $_array;
}
$_daten = array_mask($_daten,$delim);
$record_str = $delim.implode($delim.$sep.$delim , $_daten).$delim.$CRLF;
echo '<p>'.htmlentities($record,ENT_QUOTES)."</p>\n";
$fh = fopen('umfrage.csv','ab+');
fwrite($fh, $record);
fclose($fh);
Leider bekomm ich eine Fehlermeldung:
Parse error: parse error, unexpected T_STRING in /usr/export/www/vhosts/funnetwork/hosting/josbg/frage/schreiben.php on line 9
Leider weiß ich nicht mehr weiter!!!
http://josbg.jo.funpic.de/frage/
thx
Jo
Hi Hannes!
Leider weiß ich nicht mehr weiter!!!
Und wir brauchen mehr Informationen. Quelltext, z.B.
MfG H☼psel
Hallo Hannes,
genau das Thema hatte wir erst die letzten Tage. Der Thread kann bestimmt noch nicht über die Hälfte raus sein.
Schau doch mal. Ich suche auch nochmal für Dich...
LG
Chris
Hi Hopsel
Hier der vorläufige Code von der "Schreib-Funktion" Eingabe wirts ja nicht brauchen.
<?php
echo "<font class="text">Vielen Dank für die Teilnahme an dieser Umfrage, Angaben wurden gespeichert.<br><br></font>";
$_daten['Politik'] = $_POST['Politik'];
$_daten['Wirtschaft'] = $_POST['Wirtschaft'];
$_daten['Sport'] = $_POST['Sport'];
$_daten['Kultur'] = $_POST['Kultur'];
$_daten['Gesellschaft'] = $_POST['Gesellschaft'];
$_daten['Sonstige'] = $_POST['Sonstige'];
if(isset($_POST['sensationel'])
and $_POST['sensationel'] >= 1
and $_POST['sensationel'] <= 4)
{
$_daten['sensationel'] = $_POST['sensationel'];
}
else
{
$_daten['sensationel'] = 0; ## oder auch = '';
}
if(isset($_POST['einzigartig'])
and $_POST['einzigartig'] >= 1
and $_POST['einzigartig'] <= 4)
{
$_daten['einzigartig'] = $_POST['einzigartig'];
}
else
{
$_daten['einzigartig'] = 0; ## oder auch = '';
}
if(isset($_POST['sachverhalt'])
and $_POST['sachverhalt'] >= 1
and $_POST['sachverhalt'] <= 4)
{
$_daten['sachverhalt'] = $_POST['sachverhalt'];
}
else
{
$_daten['sachverhalt'] = 0; ## oder auch = '';
}
if(isset($_POST['auswirkung'])
and $_POST['auswirkung'] >= 1
and $_POST['auswirkung'] <= 4)
{
$_daten['auswirkung'] = $_POST['auswirkung'];
}
else
{
$_daten['auswirkung'] = 0; ## oder auch = '';
}
if(isset($_POST['ueberraschung'])
and $_POST['ueberraschung'] >= 1
and $_POST['ueberraschung'] <= 4)
{
$_daten['ueberraschung'] = $_POST['ueberraschung'];
}
else
{
$_daten['ueberraschung'] = 0; ## oder auch = '';
}
if(isset($_POST['prominenz'])
and $_POST['prominenz'] >= 1
and $_POST['prominenz'] <= 4)
{
$_daten['prominenz'] = $_POST['prominenz'];
}
else
{
$_daten['prominenz'] = 0; ## oder auch = '';
}
if(isset($_POST['beteiligung'])
and $_POST['beteiligung'] >= 1
and $_POST['beteiligung'] <= 4)
{
$_daten['beteiligung'] = $_POST['beteiligung'];
}
else
{
$_daten['beteiligung'] = 0; ## oder auch = '';
}
if(isset($_POST['reichweite'])
and $_POST['reichweite'] >= 1
and $_POST['reichweite'] <= 4)
{
$_daten['reichweite'] = $_POST['reichweite'];
}
else
{
$_daten['reichweite'] = 0; ## oder auch = '';
}
if(isset($_POST['dauer'])
and $_POST['dauer'] >= 1
and $_POST['dauer'] <= 4)
{
$_daten['dauer'] = $_POST['dauer'];
}
else
{
$_daten['dauer'] = 0; ## oder auch = '';
}
if(isset($_POST['bedeutung'])
and $_POST['bedeutung'] >= 1
and $_POST['bedeutung'] <= 4)
{
$_daten['bedeutung'] = $_POST['bedeutung'];
}
else
{
$_daten['bedeutung'] = 0; ## oder auch = '';
}
if(isset($_POST['einfach'])
and $_POST['einfach'] >= 1
and $_POST['einfach'] <= 4)
{
$_daten['einfach'] = $_POST['einfach'];
}
else
{
$_daten['einfach'] = 0; ## oder auch = '';
}
if(isset($_POST['identifikation'])
and $_POST['identifikation'] >= 1
and $_POST['identifikation'] <= 4)
{
$_daten['identifikation'] = $_POST['identifikation'];
}
else
{
$_daten['identifikation'] = 0; ## oder auch = '';
}
if(isset($_POST['sonstige'])
and $_POST['sonstige'] >= 1
and $_POST['sonstige'] <= 4)
{
$_daten['sonstige'] = $_POST['sonstige'];
}
else
{
$_daten['sonstige'] = 0; ## oder auch = '';
}
if(isset($_POST['3'])
and $_POST['3'] >= 1
and $_POST['3'] <= 3)
{
$_daten['3'] = $_POST['3'];
}
else
{
$_daten['3'] = 0; ## oder auch = '';
}
if(isset($_POST['4'])
and $_POST['4'] >= 1
and $_POST['4'] <= 2)
{
$_daten['4'] = $_POST['4'];
}
else
{
$_daten['4'] = 0; ## oder auch = '';
}
if(isset($_POST['5'])
and $_POST['5'] >= 1
and $_POST['5'] <= 3)
{
$_daten['5'] = $_POST['5'];
}
else
{
$_daten['5'] = 0; ## oder auch = '';
}
if(isset($_POST['6'])
and $_POST['6'] >= 1
and $_POST['6'] <= 3)
{
$_daten['6'] = $_POST['6'];
}
else
{
$_daten['6'] = 0; ## oder auch = '';
}
$_daten['7'] = $_POST['7'];
$_daten['8'] = $_POST['8'];
if(isset($_POST['9'])
and $_POST['9'] >= 1
and $_POST['9'] <= 4)
{
$_daten['9'] = $_POST['9'];
}
else
{
$_daten['9'] = 0; ## oder auch = '';
}
if(isset($_POST['10'])
and $_POST['10'] >= 1
and $_POST['10'] <= 4)
{
$_daten['10'] = $_POST['10'];
}
else
{
$_daten['10'] = 0; ## oder auch = '';
}
if(isset($_POST['11'])
and $_POST['11'] >= 1
and $_POST['11'] <= 4)
{
$_daten['11'] = $_POST['11'];
}
else
{
$_daten['11'] = 0; ## oder auch = '';
}
if(isset($_POST['12'])
and $_POST['12'] >= 1
and $_POST['12'] <= 3)
{
$_daten['12'] = $_POST['12'];
}
else
{
$_daten['12'] = 0; ## oder auch = '';
}
if(isset($_POST['13'])
and $_POST['13'] >= 1
and $_POST['13'] <= 2)
{
$_daten['13'] = $_POST['13'];
}
else
{
$_daten['13'] = 0; ## oder auch = '';
}
$delim = '"';
$sep = ';';
$CRLF = chr(13).chr(10);
function array_mask($_array,$mask)
{
if (is_array($_array))
{
foreach($_array as $key => $val)
{
array_mask($_array[$key],$mask);
}
}
else
{
str_replace($delim,$delim.$delim,$_array);
str_replace($mask,$mask.$mask,$_array);
}
return $_array;
}
$_daten = array_mask($_daten,$delim);
$record_str = $delim.implode($delim.$sep.$delim , $_daten).$delim.$CRLF;
echo '<p>'.htmlentities($record,ENT_QUOTES)."</p>\n";
$fh = fopen('umfrage.csv','ab+');
fwrite($fh, $record);
fclose($fh);
?>
vg
Jo
Hallo Johannes,
das war sogar Dein Posting
https://forum.selfhtml.org/?t=119329&m=765267
um das es da ging die letzte Tage.
Du siehst, hier geht nix verloren.
Warum hat Du denn im alten Posting schon aufgegeben?
LG
Chris
Hi Chris
Weil ich glaub, dass da unten keiner mehr hinsieht ?!?
vg
Jo
Hallo Johannes,
das war sogar Dein Posting
https://forum.selfhtml.org/?t=119329&m=765267
um das es da ging die letzte Tage.
Du siehst, hier geht nix verloren.
Warum hat Du denn im alten Posting schon aufgegeben?LG
Chris
Hallo Johannes,
Weil ich glaub, dass da unten keiner mehr hinsieht ?!?
in diesem speziellen Fall möchte ich sogar annehmen, dass das stimmt.
Ich sleber hatte leider die letzten 30 Stunden nur "Schily-Zugang" zum Internet, bzw. wben noch nicht. Nun geht er wieder mit voller überwachung (vermute ich).
Aber die Anderen hätten doch ruhig mal antworten können!
LG
Chris
Hallo Chris,
in diesem speziellen Fall möchte ich sogar annehmen, dass das stimmt.
nein, Deine Annahme ist falsch. Nur als ich mir die dort angegebene Seite angeschaut habe, wurde mir keine Fehlermeldung präsentiert. Infolgedessen ging ich davon aus, das Hannes den Fehler herausgefunden und behoben hätte.
Wenn es die Fehlermeldung beim Absenden des Fragebogens gibt, dann muss ich natürlich passen. Das war mir zuviel Arbeit.
Habs jetzt gemacht, ok es gibt diese Fehlermeldung. Es wäre nett gewesen, darauf hinzuweisen, dass es beim Absenden zur Fehlermeldung kommt.
Der genaue Text (copy & paste, keine Überarbeitung) von schreiben.php, insbesondere der ersten 10 Zeilen wäre erforderlich.
Freundliche Grüße
Vinzenz
Hi Vinzenz
Hier die ersten 10 Zeilen von der schreiben.php
<?php
echo "<font class="text">Vielen Dank für die Teilnahme an dieser Umfrage, Angaben wurden gespeichert.<br><br></font>";
$_daten['Politik'] = $_POST['Politik'];
$_daten['Wirtschaft'] = $_POST['Wirtschaft']; <-- Zeile 9
$_daten['Sport'] = $_POST['Sport'];
vg
Jo
Hallo Hannes.
echo "<font class="text">Vielen Dank für die Teilnahme an dieser Umfrage, Angaben wurden gespeichert.<br><br></font>";
Warum nutzt du das veraltete font-Element?
Frage 1
$_daten['Politik'] = $_POST['Politik'];
$_daten['Wirtschaft'] = $_POST['Wirtschaft']; <-- Zeile 9
$_daten['Sport'] = $_POST['Sport'];
Warum speicherst du die POST-Daten erst in Variablen zwischen, anstatt sie direkt zu verwenden?
Einen schönen Dienstag noch.
Gruß, Ashura
Hallo Hannes,
Hier die ersten 10 Zeilen von der schreiben.php
hmm, abgesehen von den berechtigten Einwänden Ashuras: einen Fehler kann ich in dem von Dir angegebenen Codeabschnitt nicht erkennen.
Hast Du einen Editor, der Syntaxhervorhebung unterstützt? Wenn ja, öffne doch bitte alle relevanten Dateien in diesem Editor. Vielleicht kannst Du dadurch bereits den Fehler ausmachen.
Falls Du keinen hast, nutze folgende Liste, um Dir einen zu besorgen. Abgesehen von UTF-8 bin ich mit notepad++ sehr zufrieden.
Freundliche Grüße
Vinzenz
Hallo,
Frage 13
if(isset($_POST['13'])
and $_POST['13'] >= 1
and $_POST['13'] <= 2)
Das ist so nicht zulässig und könnte bereits in HTML zu Fehlern führen. Namen von Dialogelementen müssen mit einem Buchstaben beginnen.
In PHP sieht es ähnlich aus. Namen von Variablen müssen mit einem Buchstabn beginnen. Bei reinen Indizes von Arrays wird das zwar nicht so gehandhabt, da der Index eines Superglobalen Arrays allerdings als Parameter-Name "von außen" kommt, würde ich es nicht drau anlegen.
Du könntest aber deine Frage
name="frage[13]"
bezeichnen und dann im Script
if(isset($_POST['frage'][13])
and $_POST['frage'][13] >= 1
and $_POST['frage'][13] <= 2)
abfragen.
Das würde auf jeden Fall zulässig sein.
Wegen der Probleme muss ich nochmal genau hinsehen. Hab noch nichts entdeckt.
LG
Chris
Hallo Chris,
if(isset($_POST['13']) [...]
Das ist so nicht zulässig und könnte bereits in HTML zu Fehlern führen. Namen von Dialogelementen müssen mit einem Buchstaben beginnen.
Grüße aus Nürnberg
Tobias
Hallo Tobias,
if(isset($_POST['13']) [...]
Das ist so nicht zulässig und könnte bereits in HTML zu Fehlern führen. Namen von Dialogelementen müssen mit einem Buchstaben beginnen.
sagt wer?
http://www.w3.org/TR/html401/types.html#type-cdata
Und außerdem stell Dir mal vor, was bei Register_Globals = ON in PHP aus einem rein numerischen Bezeichner werden würde...
LG
Chris
echo $begrüßung;
Und außerdem stell Dir mal vor, was bei Register_Globals = ON in PHP aus einem rein numerischen Bezeichner werden würde...
Warum probierst du es nicht einfach aus?
Zum Beispiel mit dem nachfolgenden Minimalscript:
<form action="" method="post">
<input type="hidden" name="42" value="foobar">
<input type="submit">
</form>
<pre>
<?php
//var_dump($42); // einmal mit und einmal ohne Kommentarzeichen am Zeilenanfang probieren
print_r($GLOBALS);
?>
echo "$verabschiedung $name";
Hallo Dedlfix,
Warum probierst du es nicht einfach aus?
42
LG
Chris
echo $begrüßung;
Und außerdem stell Dir mal vor, was bei Register_Globals = ON in PHP aus einem rein numerischen Bezeichner werden würde...
Warum probierst du es nicht einfach aus?
Da Chris anscheinend keine Lust hat, seine Vorstellung nachzuprüfen, kommen hier meine Ergebnisse mit einem noch etwas erweitertem Testscript:
<form action="" method="post">
<input type="hidden" name="42" value="foobar">
<input type="hidden" name="x" value="y">
<input type="submit">
</form>
<pre>
<?php
//var_dump($42);
echo '$x: ';
var_dump($x);
print_r($GLOBALS);
$z = '42';
echo '$$z: ';
var_dump($$z);
print_r($GLOBALS);
?>
Hier die Ergebnisse:
//var_dump($42);
Liefert einen Syntax-Fehler, Variablennamen dürfen nicht mit einer Ziffer beginnen.
echo '$x: ';
var_dump($x);
liefert erwartungsgemäß: $x: string(1) "y"
print_r($GLOBALS);
Die gekürzte Ausgabe liefert:
Array
(
[HTTP_RAW_POST_DATA] => 42=foobar&x=y
[42] => foobar
[x] => y
[_POST] => Array
(
[42] => foobar
[x] => y
)
Zugriff ist also über $_POST['42'] bzw. $_POST[42] möglich. Außerdem ist zu sehen, dass eine Variable mit Namen 42 im globalen Variablenbereich angelegt wird.
Der Zugriff ist über $42 wegen Systaxfehler nicht möglich. Vielleicht klappt es ja mit einer variablen Variablen.
$z = '42'; // oder auch $z = 42; also als Zahl statt String
echo '$$z: ';
var_dump($$z);
Und siehe da, die Ausgabe ist: $$z: string(6) "foobar"
print_r($GLOBALS);
Hier ändert sich nicht viel, nur ein [z] => 42 kommt hinzu.
Mit variablen Variablen lassen sich also auch Variablen anlegen bzw. es lässt sich darauf zugreifen, deren Name nicht den Syntaxregeln entspricht.
Getestet habe ich mit PHP 4.3.11. Mit 5.0.4 gibt es eine Notice: Undefined variable: 42 bei var_dump($$z); obwohl auch das $GLOBALS-Array die 42 enthält. $$z lässt sich auch ohne Probleme beschreiben und danach wieder auslesen, ohne weitere Beanstandungen seitens PHP. Die Ausgabe dieser Notice verwundert mich deshalb etwas ...
echo "$verabschiedung $name";
Hallo dedlfix.
Getestet habe ich mit PHP 4.3.11. Mit 5.0.4 gibt es eine Notice: Undefined variable: 42 bei var_dump($$z); obwohl auch das $GLOBALS-Array die 42 enthält. $$z lässt sich auch ohne Probleme beschreiben und danach wieder auslesen, ohne weitere Beanstandungen seitens PHP. Die Ausgabe dieser Notice verwundert mich deshalb etwas ...
Vielleicht hat man hier nicht mehr weiter gedacht bzw. die Auswirkungen von variablen Variablen in dieser Hinsicht nicht bedacht?
Einen schönen Donnerstag noch.
Gruß, Ashura
Hallo,
Da hattest Du meine letzte Korrektur nicht berücksichtigt:
$delim = '"';
$sep = ';';
$CRLF = chr(13).chr(10);
#-----------------------------------------------------
function array_mask($_array,$mask)
{
if (is_array($_array))
{
foreach($_array as $key => $val)
{
array_mask($_array[$key],$mask);
}
}
else
{
str_replace($mask,$mask.$mask,$_array); ## [1]
}
return $_array;
}
#-----------------------------------------------------
$_daten = array_mask($_daten,$delim);
[1] Die erste Zeile war von mir auskommentiert, weil da ein Fehler drin war. Warum hast Du sie denn wieder aktiviert?
LG
Chris