CSV Wochenplan erstellen

Zmon

Grünschnabel
Hallo Leute,

ich versuche gerade einen Wochenplan (Fitnesstrainingsprogramm) zu erstellen. Dieser soll über Excel als eine CSV Datei gespeichert und über PHP ausgelesen werden. So hat der Kunde leicht die Möglichkeit zu jederzeit den Plan ohne großen Aufwand zu ändern.

Ich habe bereits die Suchfunktion genutzt und bin noch zu keiner richtigen Lösung gekommen.
Ich weiß zwar, das ich die fgetscsv-methode nutzen soll, jedoch hab ich noch Schwierigkeiten, die CSV-Datei genau so als html darstellen zu lassen.
Wenn ich das richtig aufgefasst habe, trennt ein "," in der while Schleife die Daten in Zeilen ein. Ersetze ich das "," durch ein ";" erhalte ich genau eine Spalte wo die Daten dann untereinander geschrieben werden.

Ich möchte jedoch, das:

Montag Dienstag Mittwoch Donnerstag ... Sonntag

in der oberen und die Kurse in den darunter liegenden Zellen geschrieben werden (wie quasi in der Tabelle ;) ).

Ich weiß jedoch nicht so recht wie ich das anstellen kann.

Vielleicht hat ja jmd einen hilfreichen Tip.

Code:
<?php
$row = 1;                                      // Anzahl der Arrays
$handle = fopen ("test.csv","r");              // Datei zum Lesen öffnen
while ( ($data = fgetcsv ($handle, 1000, ",")) !== FALSE ) { // Daten werden aus der Datei
                                               // in ein Array $data gelesen
    $num = count ($data);                      // Felder im Array $data
                                               // werden gezählt
    print "<p> $num fields in line $row: <br>\n";
    $row++;                                    // Anzahl der Arrays wird 
                                               // inkrementiert
    for ($c=0; $c < $num; $c++) {              // FOR-Schleife, um Felder 
        print $data[$c] . "<br>\n";            // des Arrays auszugeben
    }
}
fclose ($handle);
?>

Vielen Dank im voraus
 
Falls noch gewünscht:

ich würde die function file() nehmen, denn damit bekommst du die datei sofort in ein array. Zeig doch mal bitte den Inhalt so einer Datei, damit man überlegen kann, wie man es ausliest!
 
Hi,
habe dir ja schon fast versprochen zu antworten :p
...und "fix" eine Funktion geschrieben
PHP:
<?php
function _cvstable($use_file, $use_width = 0, $use_border = 1){
  if(!@is_file($use_file)){
    echo("Die Datei " . htmlspecialchars($use_file) . " wurde nicht gefunden.<br />");
    return false;
  }
  
  if(@mime_content_type($use_file) !== 'text/plain'){
    echo("Die Datei " . htmlspecialchars($use_file) . " hat ein ununterst&uuml;tztes Format.<br />");
    return false;
  }
  
  $mHandle = @fopen($use_file, "r");
  
  if(!$mHandle){
    echo("Die Datei " . htmlspecialchars($use_file) . " konnte leider nicht ge&ouml;ffnet werden.<br />");
    return false;
  }
  
  $mReturn = $use_border ? "<table border=\"1\">\n" : "<table>\n";
  
  for($mRow = 0; false !== ($mData = fgetcsv($mHandle, 1000, ",")); $mRow++){
    $mReturn .= "  <tr>\n";
    
    if($mRow == 0){    
      foreach(explode(';', $mData[0]) as $mText){
        $mReturn .= "    <th width=\"".$use_width."\">" . $mText . "</th>\n";
      }
    }else{
      foreach(explode(';', $mData[0]) as $mText){
        $mReturn .= $mText ? "    <td width=\"".$use_width."\">" . $mText . "</td>\n" : "    <td width=\"".$use_width."\">&nbsp;</td>\n";
      }
    }
    
    $mReturn .= " </tr>\n";
  }
  
  $mReturn .= "</table>\n";

  fclose($mHandle);
  
  return($mReturn);
}

echo(_cvstable('./plan.csv', 150));
?>
Parameter 1: Pfad zur Datei (beim Beispiel heißt die Datei "plan.cvs" und ist im gleichen Verzeichnis).
Parameter 2: Spaltenbreite (beim Beispiel 150, das ist aber relativ viel. Benutze einfach 0, oder lass ihn ganz weg, falls die Spaltenbreite an den Inhalt angepasst werden soll).
Parameter 3: Rahmen benutzen (1 bzw. leerer Parameter = Tabelle mit Rahmen, 0 für keinen Rahmen).
Falls du noch Hilfe benötigst, schreib einfach :D
 
Hi l0c4lh05t,

erstmal danke für deine Mühen. Hat bis auf die mime_content_type function Abfrage auch alles geklappt. Hab die Abfrage jetzt stumpf abgeändert auf:

PHP:
if(strrchr($use_file, '.') != ".csv"){
    echo("Die Datei " . htmlspecialchars($use_file) . " hat ein ununterst&uuml;tztes Format.<br />");
    return false;
  }

Liegt glaub daran das ich kein extension_loaded('FileInfo') installiert hab.

Falls noch fragen auftreten sollten melde ich mich.
 
Zurück