Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » arrays mit textdateien Antworten
arrays mit textdateien

diwie
Otto-Normal-Poster


Beiträge: 51


Ich habe folgendes kleines Problem. Ich habe da eine Textdatei wo mittels Separator meine Daten getrennt drin stehen:

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8:
01|franz|arbeiter|2002
02|peter|angestellter|2003
03|thomas|arbeiter|2004
04|andy|angestellter|2003
05|karsten|angestellter|2003
06|ronny|putzfrau|2004


nun will ich die text-datenbank gerne mit folgenden script in ein array holen, sortieren und eine schöne liste wieder ausgeben:

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31:
$descfile = "db.txt"; 


global $descfile;
$datei = fopen($descfile, "r");

while($zeile = fgetcsv($datei, 1000, "|")):
$zahl[$zeile[0]] = $zeile[0];
$name[$zeile[1]] = $zeile[0];
$cat[$zeile[2]] = $zeile[0];
$date[$zeile[3]] = $zeile[0];
endwhile;

arsort($zahl);
arsort($name);
arsort($cat);
arsort($date);

foreach($zahl as $var)
{
echo key($zahl)
echo key($name) 
echo key($cat)
echo key($date)
next($zahl);
next($name); 
next($cat);
next($date);
}



das klappt bei den variablenwerten die nur einmal vorkommen (z.b. $name) auch wunderbar, nur bei denen wo der inhalt öfter gleich ist (z.b. $cat) geht die liste nicht mehr auf. der wert "arbeiter" zum beispiel wird nur einmal(!) ausgegeben. somit geht die zuordnung meiner liste total auseinander und stimmt nicht mehr mit der datenbank im textfile überein.

weiß wer hilfe - bitte?

  Profil   Editieren   Zitieren

Philipp Gérard
Foren-Team


Beiträge: 1508


1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13:
<?php

$file = file($dateiname);

foreach($file as $key => $value){
  $file[$key] = explode("|",$value);
}

foreach($file as $key => $value){
  echo "<p>".$value[1]." ist ein ".$value[2]." seit ".$value[3]."</p>";
}

?>


Schneller ist es in einer Schleife, aber so ist der Code für dich wohl verständlicher.

---
Arbeit ist das Feuer der Gestaltung. - Marx

  Profil   E-Mail   Website   Editieren   Zitieren

diwie
Otto-Normal-Poster


Beiträge: 51


klappt bisher super. vielen vielen dank für die schnelle unterstützung!

ich hätte einzig die sortierung noch gerne anders rum, also so das die ausgaben mit der höchsten ID ($zahl bei mir / value[0] bei dir) zuerst ausgegeben werden.

wäre das noch möglich - bitte? ;)

  Profil   Editieren   Zitieren

HoRnominatoR
Mausakrobat


Beiträge: 165



  Profil   E-Mail   Website   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795



  Profil   E-Mail   Website   Editieren   Zitieren

diwie
Otto-Normal-Poster


Beiträge: 51


vielen dank für eure links.
da ich mich eher zu den PHP-beginnern zähle, gebe ich zu, leichte probleme bei der umsetzung im speziellen falle zu haben. ;)
könne ihr mit velleicht bitte die genaue syntax und die entsprechende zeile am o.g. beispiel ( den code vom philipp) sagen?

Diese Nachricht wurde geändert von: diwie
  Profil   Editieren   Zitieren

Philipp Gérard
Foren-Team


Beiträge: 1508


1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14:
<?php

$file = file($dateiname);
$file = array_reverse($file);

foreach($file as $key => $value){
  $file[$key] = explode("|",$value);
}

foreach($file as $key => $value){
  echo "<p>".$value[1]." ist ein ".$value[2]." seit ".$value[3]."</p>";
}

?>


---
Arbeit ist das Feuer der Gestaltung. - Marx

  Profil   E-Mail   Website   Editieren   Zitieren

diwie
Otto-Normal-Poster


Beiträge: 51


manchmal sieht man halt den wald vor lauter bäumen nicht. ;)

vielen vielen dank für eure schnelle und kompetente hilfe!!

  Profil   Editieren   Zitieren
 

Antworten
Nach oben