Chris: Daten aus einem Eingabeformular in Tabelle/Datenbank schreiben?

Beitrag lesen

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);

Und dann baust Du das Array zusammen zu einem Datensatz.

$record_str = $delim.implode($delim.$sep.$delim , $_daten).$delim.$CRLF;

Diesen Satz kannst Du Dir auch anschauen.

echo '<p>'.htmlentities($record,ENT_QUOTES)."</p>\n";

oder in die Datei schreiben. Dier musst Du erstmal öffnen:

$fh = fopen('umfrage.csv','ab+');

und den Satz wegschreiben:

fwrite($fh, $record);

und die Datei schließen

fclose($fh);

diese Datei kannst Du später mit Excel einlesen und auswerten.

Wenn Du Fragen zu den einzelnen Schritten hast, melde Dich.

LG
Chris