Daten aus einem Eingabeformular in Tabelle/Datenbank schreiben?
Hannes
- datenbank
Hab schön öfter einen Fragebogen mit Hilfe von einem Formular gemacht. Bisher hab ich die Eingaben von den Fragebogen per Mail an mich geschickt und dann in eine Excel oder SPSS Datei geschrieben.
Da ich aber eine Umfrage mit größere Umfang (ca. 1000) plane, möcht ich jetzt das es die Ergebnisse automatisch gleich in eine Datei schreibt.
Welche Möglichkeiten bzgl. des Datenformates (xls., sav., dbf,...) hab ich da?
Und vor allem wie verwirkliche ich das ganze am einfachsten?
thx
Jo
Hallo,
HTML, aktives Server-Backend und Datenbank
Benutzerauthentifikation,
Formular
Vorschau
und dann Eintragung
Damit nicht gemogelt wird, muss man registrieren, welcher Benutzer schon geantwortet hat.
LG
Chris
Danke für deine Antwort.
Ist leider ein wenig abstrackt für mich.
Gint es irgendwo vielleicht ein Script oder was ähnliches wo ich mir das mal ansehen kann?
Hallo Hannes, <-- Dies ist die Begrüßung
Danke für deine Antwort.
Ist leider ein wenig abstrakt für mich.
Gibt es irgendwo vielleicht ein Script oder was ähnliches wo ich mir das mal ansehen kann?
Was Du da vorhast, ist schon ein riesiger Klotz. Das kann man sich nicht in einem einzigen Script anschauen.
Du benötigst
Anmeldesystem für Benuzter.
Kann auch durch Zuweisung von Zugangskriterien ersetzt werden
Erkennungssystem für Benutzer
nebst "Tracking"
Formulargenerator, wenn Du es nicht jedes Mal einzeln
aufbauen willst. Eventuell HTML-Mailer für die Formulare
Multipostsperre bei fehlerhafter Benutzung (nicht böswillig)
Datenbank oder Flatfile (CSV könnte schon reichen)
Kontrollsystem
Mahnsystem
Auswertesystem
So ungefähr jedenfalls.
Du solltest mal damit anfangen, ein Formular aufzubauen, und dieses als "Affenformular" immer wieder zu betrachten.
Der nächste Schritt wäre dann die gezielte Überprüfung der übermittelten Formulardaten per Script und die Wiedervorlage, solange die Daten unvollständig sind
Dann, wenn die Daten vollständig sind, eine Eintragung in eine Datei vornehmen. Dazu benötigst Du die Dateifunktionen. Ich empfehle das einfache Anhängen der Daten an eine Datei im CSV-Format.
Dann ein Script bauen, dass die bereits vorhandenen Daten tabellarisch anzeigen kann.
Dann ein Auswerte-Script
Der Rest wächst dann so nach und nach.
Ich helf Dir gerne. Im Augenblick sitze ich noch krank zuhause und habe Zeit dafür.
LG
Chris
Hi Chris
Also, das Formular (pkt. 3) hab ich schon mal fertig, nur das ausgefüllte Formular wird an mich gemailt (hab schon ein Formmailer Script) und nicht in eine Tabelle (Datenbank) geschrieben.
1. Anmeldesystem für Benuzter.
Kann auch durch Zuweisung von Zugangskriterien ersetzt werden
2. Erkennungssystem für Benutzer
nebst "Tracking"
3. Formulargenerator, wenn Du es nicht jedes Mal einzeln
aufbauen willst. Eventuell HTML-Mailer für die Formulare
4. Multipostsperre bei fehlerhafter Benutzung (nicht böswillig)
5. Datenbank oder Flatfile (CSV könnte schon reichen)
6. Kontrollsystem
7. Mahnsystem
8. Auswertesyste
Zu deiner Auflistung; ich versteht nicht warum es so viele Punkte braucht.
Da es mir egal ist, ob der Fragebogen ein oder mehrmals von der selben Person ausgefüllt wird, glaub ich das man die ersten paar Punkte (1 und 2) weg lassen kann.
Was die weiteren Pkte betrifft, hab ich ehrlich gesagt wenig Ahnung. Aber das dürft hinkommen für das was ich machen möchte.
Wobei ich wiederrum nicht weiß für was das Kontrollsystem und v.a. das Mahnsystem da sind.
Zu Punkt 8, den kannst gleich vergessen, weil die Auswertung erfolgt erst nach Beendidung der Befragung und wird auch nicht fürs Web verwendet.
Die Information über den Fragebogen erfolgt per zuzsendung von einer Mail etwas mehr als 1000 Personen.
vg
Jo
Hallo,
Zu deiner Auflistung; ich versteht nicht warum es so viele Punkte braucht.
da kann ich Dir auch noch nicht wirklich weiterhelfen, denn Deine Spezifikationen (Pflichtenheft) kenne ich noch nicht.
Da es mir egal ist, ob der Fragebogen ein oder mehrmals von der selben Person ausgefüllt wird, glaub ich das man die ersten paar Punkte (1 und 2) weg lassen kann.
Was ist das dann für eine Statistik, bei der jeder nMal antworten darf, wobei n für jeden individuell ist?
Was die weiteren Pkte betrifft, hab ich ehrlich gesagt wenig Ahnung. Aber das dürft hinkommen für das was ich machen möchte.
Wobei ich wiederrum nicht weiß für was das Kontrollsystem und v.a. das Mahnsystem da sind.
Sollte man nicht feststellen können, ob der "Bogen" vollständig, fast vollständig oder unbrauchbar ist? Und ob nun genügend Antworten verschiedener User zurückgekommen sind, sollte man doch vielleicht auch feststellen können.
Zu Punkt 8, den kannst gleich vergessen, weil die Auswertung erfolgt erst nach Beendidung der Befragung und wird auch nicht fürs Web verwendet.
Aber du möchstest die Daten doch aus der DB wieder herausbekommen, oder?
Die Information über den Fragebogen erfolgt per zuzsendung von einer Mail etwas mehr als 1000 Personen.
Dann benötigst Du wahrscheinlich einen Mailer, der zertifizierte Formulare versendet?
Womit willst Du also anfangen?
Ich schlage vor, dass Du ein einfaches Webfomular mit allen Feldtypen (text, textarea, radio, checkbox, select single, select multiple, uploadfeld) aufbaust, und versuchst, die Werte zu speichern. Ein anderes Script könnte alle Werte aus der Datei dann als Tabelle anzeigen.
Das sollte als Aufgabe erstmal genügen.
LG
Chris
Hi
Das Webformualr ist fertig!
Kann es auch anzeigen lassen, halt nur als Text.
Für alles weitere fehlt mir im Moment das Wissen. Müsst mich erst mal wieder ordentlich einlesen und ein wenig herum probieren.
Kannst dir das bisherige ja mal anschaun.
www.radreisen.at.tt/ergebnis2/
vg
»»
Hallo Hannes,
Das Webformualr ist fertig!
Kannst dir das bisherige ja mal anschaun.
http://www.radreisen.at.tt/ergebnis2/
Die Datei ist nicht verfügbar...
Ich guck nachher nochmal
LG
Chris
Sorry falsche Adresse.
www.radreisen.at.tt/ereignis2/
Hallo Hannes, <-- Das ist die Begrüßung. Darauf wird hier Wert gelegt :-)
Sorry falsche Adresse.
grausamer Provider. Such Dir nur bald einen anderen.
www.radreisen.at.tt/ereignis2/
Ok, die Daten kommen also bei Dir an, und können ausgewertet werden.
Dann bau Dir nun ein Array mit den Daten auf:
$_daten['Wirtschaft'] = $_POST['Wirtschaft'];
$_daten['Sport'] = $_POST['Sport'];
## ...
if(isset($_POST['sensationel'])
and $_POST['sensationel'] >= 1
and $_POST['sensationel'] <= 4)
{
$_daten['sensationel'] = $_POST['sensationel'];
}
else
{
$_daten['sensationel'] = 0; ## oder auch = '';
}
## usw.
Wichtig dabei ist nur, dass jede Spalte belegt wird, notfalls eben mit einem neutralen Element. Auch die Reihenfolge muss stimmen.
Erreichen kannst Du das z.B. auch, indem Du die Namen (Keys) vorher in einem anderen Array anreihst, und dann daraus ein leeres Array mit diesen Namen als Keys bildest. Dafür gibt es in PHP Array-Funktionen. Dieses "Namen-Array" kannst Du dann später auch zum Wiederauslesen der Datei benutzen, die wir hier nun schreiben wollen.
Um im CSV-Format schreiben zu können, müssen die Feldwerte erst behandelt werden. Die werte werden in Begrenzern eingeschlossen (") und dann die so eingegrenzten Werte einfach mit Semikolon aneinandergereiht. Damit das sicher funktioniert, müssen in den Werten enthaltene Begrenzer erst gedoppelt (maskiert) werden.
$delim = '"';
$sep = ';';
$CRLF = chr(13).chr(10);
function array_mask($_array,$mask)
{
foreach($_array as $key => $val)
{
if (is_array($val))
{
array_mask($_array[$key],$mask);
}
else
{
str_replace($delim,$delim.$delim,$_array[$key]);
}
}
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);
Wenn Du Fragen zu den einzelnen Schritten hast, melde Dich.
LG
Chris
Hi Hannes,
da ist mir ein Fehler unterlaufen:
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);
}
return $_array;
}
So sollte die Funktion stimmen jetzt.
Rekursion ist eben irgendwie anders :-)
LG
Chris
Hi Jo,
Verflixt nochmal!
da ist immer noch ein Fehler drin. Ich bin irgendwie noch angeschlagen von den Schmerztabletten :-(
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;
}
innerhalb der Funktion hatte ich den Begrenzer $mask genannt. Dann muss er auch überall so heißen!
Aber mit der Einstellung
error_reporting(E_ALL);
am Anfang Deines Scriptes, hättest Du das bestimmt auch gefunden.
LG
Chris
Hi Chris
Hab schon was erledigt.
Das mit dem Fragebogen, Eingabe war ja schon fertig und auch der array der der Daten hab ich nun gemacht.
Für die weiteren Arbeitsschritten reicht mein Wissen nicht mehr ganz aus.
hab im Moment zwei Dateien, den Fragebogen (eingabe) und die 2. Datei mit dem array und dem restlichen Code welchen du gepostet hast. Die zwei Dokumente sind schon verlinkt.
vg
Jo
P.S. Hast eigentlich auch ICQ (227065918) oder ein anderen Messanger (AIM)?
Hi Johannes,
- kann ich en restlichen Code welchen du getippt hast an den array anhängen?
- ist dieser schon fertig? - so dass ich das ganze mal testen kann?
Wenn Du die korrigierten Versionen benutzt, sollte es klappen.
Ich hatte meinen Webserver vorhin demoliert. Nun läuft er wieder. da kann ich die Scripte selber nochmal austesten.
Außerdem gibt es ab PHP 5.1x die fertige Funktion fputcsv()
http://de.php.net/manual/en/function.fputcsv.php
Die ersetzt dann die anderen Übungen fast vollständing.
LG
Chris
Hi Chris
Hab die umgeändereten Dateien auf einen neuen Webspace (mit PHP 4.4.1, ist also nichts mit "fputcsv()" ) gestellt.
Leider kommt eine Fehlermeldung. Und ich weiß nicht was falsch ist.
vg
Jo
Hi Chris
Hab die umgeändereten Dateien auf einen neuen Webspace (mit PHP 4.4.1, ist also nichts mit "fputcsv()" ) gestellt.
Leider kommt eine Fehlermeldung. Und ich weiß nicht was falsch ist.
vg
Jo
Hab vergessen die neue Adresse zu posten:
http://josbg.jo.funpic.de/frage/
Hi Chris
Danke für die Antwort mit Code.
Werd mir das am Nachmittag mal genauer ansehen und alles eingeben.
Das mit dem Formular umwandeln bekomm ich sicher hin.
Meld mich dann sicher wieder ;-)
vg
Jo