Excelsheet auslesen & formatieren

nordi

Erfahrenes Mitglied
Hi, hab mir einiges hier im Forum zum auslesen von Exceldateien durchgelesen und hab auch einiges gefunden. Habe aber 1 kleine Frage. Ich habe ein Exceldatei, die Musikdaten abspeichert. 4 Spalten insgesamt ( Artist, Track, Sound, Soundtrack )

Ich benutze die fgetcsv Funktion um die Datei zu lesen. Aber als Ausgabe reiht er mir einfach alle Daten untereinander auf und nicht im gewünschten Spaltenformat wie im Excelsheet. Wo muss im Skript die Tabellenformation reinschreiben?

PHP:
<?php
$row = 4;                                      
$handle = fopen ("music.csv","r");              
while ( ($data = fgetcsv ($handle, 1000, ";")) !== FALSE ) { 
                                             
   $num = count ($data);                     
                                             
   print "<p> $num fields in line $row: <br>\n";
   $row++;                                  
                                           
   for ($c=0; $c < $num; $c++) {              
       print $data[$c] . "<br>\n";         
   }
}
fclose ($handle);
?>

Vielen Dank für Tipps & Antworten!
 
Ist zwar was die Tabelle angeht sehr minimalistisch aber es muss ja nicht schön sein sondern nur funktionieren:

PHP:
<table border="1">
<?php 
$row = 4; 
$handle = fopen ("music.csv","r"); 
while ( ($data = fgetcsv ($handle, 1000, ";")) !== FALSE ) { 
 
 $num = count ($data); 
 print '<tr><td colspan="4">' .$num .'fields in line ' .$row .':</td></tr>'; 
 $row++; 

 print "<tr>";
 for ($c=0; $c < $num; $c++) { 
 print "<td>" .$data[$c] . "</td>\n"; 
 }
 print "</tr>";
} 
fclose ($handle); 
?> 
</table>

P.S. Bei der Uhrzeit hab ich Dir auch noch was geschrieben !!
 
Ja, danke! Hab schon gesehen und funktioniert perfekt mit der Uhrzeit!

Hier zum Excelsheet. Jetzt reiht er die kompletten Daten in einer Zeile auf und macht nicht nach dem "Soundtrack" eine neue Zeile.
 
Na ich dachte das soll so sein weil Du geschrieben hast :

Aber als Ausgabe reiht er mir einfach alle Daten untereinander auf und nicht im gewünschten Spaltenformat wie im Excelsheet

Nach der Spaltenaufteilung wäre Sondtrack ja das letzte Feld und das soll in eine extra Zeile
 
Sry, hat nen Tippfehler bei mir im Skript. Klappt jetzt super! Gibt es auch Abfrageoperatoren wie bei MySQL, indem man beispielsweise alphabetisch geordnet auflisten kann?
 
Nicht das ich wüßte.

Du könntest nur die gesamte CSV-Datei zuerst in ein Array einlesen, dieses dann entsprechend sortieren und dann die Ausgabe in die Tabelle machen.

Aber abgesehen davon Du Schlingel. Ich hab gerade auf php.net nach der Funtion geschaut und was sehe ich als Beispiel dafür !

Hab mich schon gefragt was die Anzeige "... fields in line..." soll.

Gruß Thomas
 
Ist es möglich über ein Formular die Werte einer CSV-Datei direkt in eine MySQL-Datenbank einzuspeisen?
 
Hi, danke.. ich habs mal anders probiert - aber irgendwie kommen keine Daten in der Datenbank an.. Upload funktioniert wunderbar. Woran liegt das? Jemand einen Tipp?

PHP:
<form action="<?php print $PHP_SELF ?>" method="post" enctype="multipart/form-data"> 
<input type="hidden" name="MAX_FILE_SIZE" value="10240"> 
<input type="file" name="dateiname"> 
<input type="submit" value="Hochladen"> 
</form> 
<hr> 
<?php 

include("../config/config.php");

if(isset($dateiname)){ 
if(!is_uploaded_file($dateiname)){ 
echo "FEHLER"; 
exit; 
} 
$uploadname="./excel/$dateiname_name"; 
move_uploaded_file($dateiname, $uploadname); 
printf("Upload erfolgreich!Die Datei <b>%s</b> wurde online gestellt in den Ordner %s<br>\n", 
$dateiname_name, $uploadname); 
} 

if (is_uploaded_file($_FILES['file']['dateiname'])){
    
    ini_set('auto_detect_line_endings',1);
    
    $handle = fopen($_FILES['file']['dateiname'], "r");
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
	
	$verbindung = @mysql_connect("$dbhost","$dbuser","$dbpass");

if (!$verbindung) {
		echo "Verbindung zur Datenbank ist nicht m&ouml;glich!\n";
		exit;
	}

mysql_select_db($dbtable,$verbindung);
    
        mysql_query("INSERT INTO $artists (name,text,playlist,films,onair) VALUES ('{$data[0]}','{$data[1]}','{$data[2]}','{$data[3]}','{$data[4]}')");
    
    }
    
}
    
?>
 
Zurück