Computerhilfen.de Logo
Forum
Tipps
News

csv dateien mit php auslesen

hallo
ich möchte gerne aus einer csv datei (also Tabelle) an der
x-ten zeile daten auslesen und diese dann in einer
tabelle darstellen.
es handelt sich dabei um eine adressdatenbank

name     adresse     ort          ....
test1    teststr1      testort1     ....
test2    teststr2      testort2     ....
.....    ........      ........     ....

show.php?zeile=2
soll dann die adresse aus der 2ten zeile anzeigen
also

$daten[y] soll dann der inhalt der yten spalte in der xten zeile sein.

Name: <? echo($daten[1] ?>
adresse: <? echo($daten[2] ?>
ort: <? echp($daten[3] ?>

ich habe bereits ein script gefunden.
diese liest aber leider einfach alles aus und nicht nur eine zeile die ich brauche. unten ist das script.
was muss ich ändern dass es nur die daten der xten zeile einliest?

gruss
decla

<?

$Zeilen = 1;
$Datei = fopen("save.csv","r");

while(($Daten = fgetcsv($Datei, 1000, ";")) !== FALSE)
{
  $Anzahl = count($Daten);
  echo("<p><b>");
  echo("$Anzahl");
  echo(" Felder in Zeile");
  echo("$Zeilen");
  echo(":</b><br>");
  $Zeilen++;
 
  for($i = 0; $i < $Anzahl; $i++)
  {
    echo("$Daten[$i]");
echo("<br>");
  }
 
  echo("</p>");
}

fclose($Datei);

?>


Antworten zu csv dateien mit php auslesen:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi |

Issn Problem.

Du möchtest nur eine bestimmte Zeile auslesen, um nicht die ganze Datei einlesen zu müssen. Der Grundgedanke ist schon richtig, weil das theoretisch besser wäre aus Performance-Gründen.

Die Schwierigkeit ist, dass eine Datei im Prinzip nichts weiter ist als eine Folge von Bytes, und da gibt es keine Zeilen in dem Sinne.

Wenn deine Adressdatei nicht riesig groß ist, würde ich dir vorschlagen, die ganze Datei einzulesen mit file(). Diese Funktion zerhackt dir die Datei in einzelne Zeilen, die du dann in einem Array stehen hast. Um an die Spalten zu kommen, müsstest du dann nur noch die entsprechende "Zeile" (ein Element in dem gewonnenen Array) mit explode() aufsplitten.

Mir ist grad noch eine andere Idee gekommen, aber weiß nicht ob das funktioniert. Ich probier's mal schnell aus und melde mich wieder ;)

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

So, hab mal bissl gebaut. Bin mir nicht sicher, ob das hier wirklich viel schneller ist, aber probier's ruhig mal aus... :)


<?
/*

	
Ein paar Initialisierungen
*/
$filename "lustige_datei.csv";
$handle fopen($filename"rb");
$string fread($handlefilesize($filename));
$needle "\r\n";
$results = array();
$line 270// diese Zeilennummer wird gelesen

/*
	
Jetzt geht&#39;s los mit Scannen der Datei.
	
Die Offsets der einzelnen Zeilen werden im indizierten Array $results gespeichert
*/
for ($offset 0; ($results[] = $pos strpos($string$needle$offset)) !== false$offset $pos+1);
if (
$line 1$newpos $results[$line-2] + strlen($needle);
else 
$newpos $results[$line-2];
fseek($handle$newposSEEK_SET);

/*
	
An dieser Stelle wir die Zeile gelesen
	
Das ist hier die Minimalvariante.
	
Man könnte das gleich noch Splitten mit explode()
*/
if (is_resource($handle)) echo fgets($handle);
fclose($handle);
?>


greez 8)
JoSsiF

wie mach ich dass, wenn ich aus der zeile nur das erste kästchen auslesen will. also nicht die ganze zeile

greez
decla

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Lies die Antworten! Steht alles da, was du wissen willst.


« Uhrzeit auf Homepage automatisch aktualisierenkostenlose homepage erstellen »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!