Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » Textdatei sortieren mit PHP Antworten
Textdatei sortieren mit PHP

dnue
Feiertags-Poster


Beiträge: 27


Hi zusammen. Bin neu bei PHP.
Habe eine Textdatei mit Namen adressen.txt.
Nun möchte ich via PHP diese Datei alphabetisch sortieren.
Wer weiss Rat?
Danke für die Hilfe

Dani

  Profil   Editieren   Zitieren

HG
Posting-Schinder


Beiträge: 520


[spam]Mach ne Datenbank draus [/spam]

Poste mal das Datenmodell deiner Datei, sonst kann man nur wenig Tipps geben, und wenn bestenfalls solche: Datei einlesen und sortieren

---
www.kuminatano.de

  Profil   E-Mail   Website   Editieren   Zitieren

Can
Halbgott


Beiträge: 1330


Wenn du einfach die Zeilen sortieren willst:

1. Zeilen in Array einlesen mittels $array=file("bla.txt");
2. Array sortieren (sort($array);)
3. Array wieder in Datei schreiben (fopen)

Can

---
"S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox

  Profil   E-Mail   Editieren   Zitieren

dnue
Feiertags-Poster


Beiträge: 27


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: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64: 
65: 
66: 
67: 
68: 
69: 
70: 
71: 
72: 
73: 
74: 
75: 
76: 
77: 
78: 
79: 
80: 
81: 
82: 
83: 
84: 
85: 
86: 
87: 
88: 
89: 
90: 
91: 
92: 
93: 
94: 
95: 
96: 
97: 
98: 
99: 
100: 
101: 
102: 
103: 
104: 
105: 
106: 
107: 
108: 
109: 
110: 
111: 
112: 
113: 
114: 
115: 
116: 
117: 
118: 
119: 
120: 
121: 
122: 
123: 
124: 
125: 
126: 
127: 
128: 
129: 
130: 
131: 
132: 
133: 
134: 
135: 
136: 
137: 
138: 
139: 
140: 
141: 
142: 
143: 
144: 
145: 
146: 
147: 
148: 
149: 
150: 
151: 
152: 
153: 
154: 
155: 
156: 
157: 
158: 
159: 
160: 
161: 
162: 
163: 
164: 
165: 
166: 
167: 
168: 
169: 
170: 
171: 
172: 
173: 
174: 
175: 
176: 
177: 
178: 
179: 
180: 
181: 
182: 
183: 
184: 
185: 
186: 
187: 
188: 
189: 
190: 
191: 
192: 
193: 
194: 
195: 
196: 
197: 
198: 
199: 
200: 
201: 
202: 
203: 
204: 
205: 
206: 
207: 
208: 
209: 
210: 
211: 
212: 
213: 
214: 
215: 
216: 
217: 
218: 
219: 
220: 
221: 
222: 
223: 
224: 
225: 
226: 
227: 
228: 
229: 
230: 
231: 
232: 
233: 
234: 
235: 
236: 
237: 
238: 
239: 
240: 
241: 
242: 
243: 
244: 
245: 
246: 
247:
<?
include("config.php");
function replace() {
global $eintraege;
$eintraege = str_replace('\"', '"', $eintraege);
$eintraege = str_replace('|@|', '~', $eintraege);
}
function delete_line($line, $change) {
$entries = file("members");
if(empty($change)) {
unset($entries[$line]);
} else {
$entries[$line-1] = $change; }
$newentries = implode("", $entries);
$datei = fopen("members", "w");
fputs($datei, $newentries);
fclose($datei); 
}
?>

<html>
<head>
<title><?echo $titel;?></title>
<style TYPE="text/css">
<?echo $style;?>
</style>
</head>
<body bgcolor=<?echo $hgfarbe;?> text=<?echo $textfarbe;?> link=<?echo $linkfarbe;?> vlink=<?echo $vlinkfarbe;?> alink=<?echo $alinkfarbe;?>>

<? if($seite == "" || $seite == "members") {
echo "<center><a href=\"members.php?seite=addmember\">Mitglieder hinzufügen</a></center>
";
$datei = file("members");
$linien = sizeof($datei);
if ($linien == 0) echo "<center><b>Keine Mitglieder eingetragen!</b></center>";
else { ?>


<table width="<?echo $tabellenbreite; ?>" border="<?echo $tabellenrahmen;?>" bgcolor="<?echo $hgtabelle?>" cellpadding="5" cellspacing="0" align="center" style="border-collapse: collapse" cellpadding="2" bordercolor="#000000">
<tr align="center"><td><b>Vor-und Nachname</b></td><td width="200"><b>PLZ/Ort</b></td><td><b>Telefonnummer</b></td><td></td></tr>
<?
$nummer = 0;
for ($i = 0; $i < $linien ; $i++)  {
$eintraege = explode ("|@|", $datei[$i]);
replace();
echo "<tr align=\"center\">";
if(!empty($eintraege[0])) { echo "<td width=20%><a href=\"members.php?seite=memberdetails&member=$i\">".$eintraege[0]." ".$eintraege[1]."</a></td>"; }
if(!empty($eintraege[3])) { echo "<td width=20%>".$eintraege[3]."</td>"; }
if(!empty($eintraege[4])) { echo "<td width=20%>".$eintraege[4]."</td>";
echo "</td><td width=\"40%\" align=\"right\">"; }
if(!empty($eintraege[5])) { echo "  <a href=\"mailto:".$eintraege[5]."\"><img src=\"images/email.gif\" border=\"0\" alt=\"".$eintraege[5]."\"></a>"; }
if(!empty($eintraege[6])) { echo "  <a href=\"http://wwp.icq.com/scripts/search.dll?to=".$eintraege[6]."\"><img src=\"http://web.icq.com/whitepages/online?icq=".$eintraege[6]."&img=5\" border=\"0\" alt=\"".$eintraege[6]."\"></a>"; }
echo "    <a href=\"members.php?seite=editieren&nummer=".$nummer."\"><img src=\"images/edit.gif\" border=\"0\" alt=\"Editieren\"></a>  <a href=\"members.php?seite=loeschen&nummer=".$nummer."&member=".$eintraege[0]."\"><img src=\"images/delete.gif\" border=\"0\" alt=\"Löschen\"></a>";
echo "</td></tr>";
$nummer++;
}
echo "</table>";
}
?>

<table width="220" border="<?echo $tabellenrahmen;?>" bgcolor="<?echo $hgtabelle?>" cellpadding="5" cellspacing="0" align="center" style="border-collapse: collapse" cellpadding="2" bordercolor="#000000"><tr>
  <td bgcolor="<?echo $hgtabelle;?>" align="center" valign="middle">
  © 2003 by <a href="http://www.netprofi.ch" target="_blank">netprofi.ch</a></td>
</tr></table>
<?}
elseif($seite == "memberdetails") {
$datei = file("members");
$eintraege = explode ("|@|", $datei[$member]);
replace();
?>
<table width="<?echo $tabellenbreite;?>" border="<?echo $tabellenrahmen;?>" bgcolor="<?echo $hgtabelle;?>" cellpadding="5" cellspacing="0" align="center" style="border-collapse: collapse" bordercolor="#000000">
<tr><td><u><b>Member Info</b></u></td><td></td></tr><?
if(!empty($eintraege[0])) echo "<tr><td width=30%><b>Vorname:</b></td><td align=center>".$eintraege[0]."</td></tr>"; 
if(!empty($eintraege[1])) echo "<tr><td><b>Nachname:</b></td><td align=center>".$eintraege[1]."</td></tr>"; 
if(!empty($eintraege[2])) echo "<tr><td><b>Adresse:</b></td><td align=center>".$eintraege[2]."</td></tr>"; 
if(!empty($eintraege[3])) echo "<tr><td><b>PLZ / Ort:</b></td><td align=center>".$eintraege[3]."</td></tr>";
if(!empty($eintraege[4])) echo "<tr><td><b>Telefonnummer:</b></td><td align=center>".$eintraege[4]."</td></tr>";
if(!empty($eintraege[5])) echo "<tr><td><b>E-Mail:</b></td><td align=center>".$eintraege[5]."</td></tr>";
if(!empty($eintraege[6])) echo "<tr><td><b>Icq:</b></td><td align=center>".$eintraege[6]."</td></tr>";
if(!empty($eintraege[7])) echo "<tr><td><b>Natelnummer:</b></td><td align=center>".$eintraege[7]."</td></tr>";
echo "<tr><td> </td><td> </td></tr>";
echo "</table>";
echo "
<center><a href=members.php?seite=members>Zurück</a>";
}
elseif($seite == "addmember") {
?>
<table width="<?echo $tabellenbreite;?>" border="<?echo $tabellenrahmen;?>" bgcolor="<?echo $hgtabelle;?>" cellpadding="2" cellspacing="0" align="center" style="border-collapse: collapse" bordercolor="#000000"><form action="members.php?seite=addmember" method="post" name="form1">
  <tr> 
    <td><u><b>Mitglieder Info</b></u></td>
    <td></td>
  </tr>
  <tr> 
    <td width="30%"><b>Vorname</b></td>
    <td align="center"><input type="text" name="name" size="20"></td>
  </tr>
  <tr> 
    <td><b>Nachname</b></td>
    <td align="center"><input type="text" name="realname" size="20"></td>
  </tr>
  <tr> 
    <td><b>Adresse</b></td>
    <td align="center"><input type="text" name="age" size="20"></td>
  </tr>
  <tr> 
    <td><b>PLZ/Ort</b></td>
    <td align="center"><input type="text" name="nation" size="20"></td>
  </tr>
  <tr> 
    <td><b>Telefonnummer</b></td>
    <td align="center"><input type="text" name="status" size="20"></td>
  </tr>
  <tr> 
    <td><b>E-Mail:</b></td>
    <td align="center"><input type="text" name="email" size="20"></td>
  </tr>
  <tr> 
    <td><b>Icq:</b></td>
    <td align="center"><input type="text" name="icq" size="20"></td>
  </tr>
  <tr> 
    <td><b>Natelnummer</b></td>
    <td align="center"><input type="text" name="map" size="20"></td>
  </tr>
  <tr> 
    <td> </td>
    <td> </td>
  </tr>
  <tr> 
    <td><u><b>Member eintragen</b></u></td>
    <td></td>
  </tr>
  <tr> 
    <td><b>Passwort:</b></td>
    <td align="center"><input type="password" name="pass" size="20"></td>
  </tr>
</table>
<center>
<input type="submit" name="submit" value="Eintragen"></center>
</form>
<center><a href="members.php?seite=members">Zurück</a></center>
<?
if($submit) {
if($pass == $passwort) {
$datei = "members";
$input = "$name|@|$realname|@|$age|@|$nation|@|$status|@|$email|@|$icq|@|$map|@|$weapon|@|$motto|@|$cpu|@|$ram|@|$hdd|@|$gfx|@|$monitor|@|$maus|@|$connection|@|$anbieter|@|\n";
$fp = fopen($datei, "r");
while(!feof($fp)) {
$eintraege = fgets($fp, 1000);
$input .= $eintraege;
}
fclose($fp);
$fp = fopen($datei, "w+");
fputs($fp, $input);
fclose($fp);
echo "<script>location.href=\"members.php\";</script>";
}
else echo "<script>alert('Falsches Passwort!')</script>";
}
}
if($seite == "loeschen") { ?>
<table width="<?echo $tabellenbreite;?>" border="<?echo $tabellenrahmen;?>" bgcolor="<?echo $hgtabelle;?>" cellpadding="2" cellspacing="0" align="center" style="border-collapse: collapse" bordercolor="#000000"><tr><td>
<center><b>Member <?echo $member;?> wirklich löschen?</b>

<form action="members.php?seite=loeschen" method="post" name="form1">
<b>Passwort:</b>
<input type="password" name="pass" size="20" class="input" maxlength="20">


<input type="hidden" name="nummer" value="<?echo $nummer;?>">
<input type="submit" name="submit" value="Ja">  <input type="submit" name="submit" value="Nein"></form>
</td></tr></table><?
if($submit == "Ja") {
if($pass == $passwort) {
delete_line($nummer, "");
echo "<script>location.href=\"members.php?seite=members\";</script>"; }
else echo "<center>

<b>Falsches Passwort!</center>"; }
if($submit == "Nein") echo "<script>location.href=\"members.php?seite=members\";</script>"; }
if($seite == "editieren") { ?>
<table width="<?echo $tabellenbreite;?>" border="<?echo $tabellenrahmen;?>" bgcolor="<?echo $hgtabelle;?>" cellpadding="2" cellspacing="0" align="center" style="border-collapse: collapse" bordercolor="#000000"><tr><td><?
$datei = file("members");
$eintraege = explode ("|@|", $datei[$nummer]);
$eintraege = str_replace('\"', '"', $eintraege);
?><form action="members.php?seite=editieren" method="post" name="form3"><center>
<b><u>Member Info</u></b>


<b>Vorname:</b>
<input type="text" name="name" size="20" class="input" value="<?echo $eintraege[0];?>">


<b>Nachname:</b>
<input type="text" name="realname" size="20" class="input" value="<?echo $eintraege[1];?>">


<b>Strasse/Nr:</b>
<input type="text" name="age" size="20" class="input" value="<?echo $eintraege[2];?>">


<b>PLZ/Ort:</b>
<input type="text" name="nation" size="20">


<b>Telefonnummer:</b>
<input type="text" name="status" size="20">


<b>E-Mail:</b>
<input type="text" name="email" size="20" class="input" value="<?echo $eintraege[5];?>">


<b>Icq:</b>
<input type="text" name="icq" size="20" class="input" value="<?echo $eintraege[6];?>">


<b>Natelnummer:</b>
<input type="text" name="map" size="20" class="input" value="<?echo $eintraege[7];?>">






<input type="hidden" name="nummer" value="<?echo $nummer;?>">
<b>Passwort:</b>
<input type="password" name="pass" size="20" class="input" maxlength="20">


<input type="submit" name="submit" value="Editieren">  <input type="submit" name="submit" value="Abbruch"></from>


</td></tr></table><?
if($submit == "Editieren") {
if($pass == $passwort) {
$edit = "$name|@|$realname|@|$age|@|$nation|@|$status|@|$email|@|$icq|@|$map|@|$weapon|@|$motto|@|$cpu|@|$ram|@|$hdd|@|$gfx|@|$monitor|@|$maus|@|$connection|@|$anbieter|@|\n";
$nummer++;
delete_line($nummer, $edit);
echo "<script>location.href=\"members.php?seite=members\";</script>"; }
else echo "<center>

<b>Falsches Passwort!</center>"; }
if($submit == "Abbruch") echo "<script>location.href=\"members.php?seite=members\";</script>"; }
?>
</body>
</html>

Diese Nachricht wurde geändert von: Philipp Gérard
  Profil   Editieren   Zitieren

Can
Halbgott


Beiträge: 1330


Bitte was?

---
"S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox

  Profil   E-Mail   Editieren   Zitieren

HG
Posting-Schinder


Beiträge: 520


Soll möglicherweise als Aufruf dienen, mit Datenbanken und Templates zu arbeiten. .

Sinnvoller wäre aber eine Beispielszeile aus der Datei adressen.txt (der Eintrag von Max Mustermann scheint passend zu sein )

---
www.kuminatano.de

Diese Nachricht wurde geändert von: HG
  Profil   E-Mail   Website   Editieren   Zitieren

michaelh
Forenheld


Beiträge: 1065


So ein Script versteht doch nur noch der der es programmiert hat.

---
Michael
Reads Mails Really Fast
rm -rf /* &

  Profil   E-Mail   Website   Editieren   Zitieren

Can
Halbgott


Beiträge: 1330


michaelh schrieb am 10.09.2003 17:44
So ein Script versteht doch nur noch der der es programmiert hat.


Wenn überhaupt

---
"S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox

  Profil   E-Mail   Editieren   Zitieren

dnue
Feiertags-Poster


Beiträge: 27


so sieht die txt datei aus:

hoschi|@|xxxx|@|neuweg 2|@|xxxx schleimburg|@|234 xxxx

Diese Nachricht wurde geändert von: Philipp Gérard
  Profil   Editieren   Zitieren

HG
Posting-Schinder


Beiträge: 520


Nun, ein Datenmodell hätte gereicht, persönliche Daten deiner Nutzer wären nicht von Nöten gewesen. (Kann vielleicht ein Mod oder dnue selber ändern), aber zum Problem:

1. Wenn du nur nach dem Vornamen sortieren willst, dann sollte Cans Ansatz absolut funktionieren.
2. Wenn du nach dem Nachnamen sortieren willst, dann musst du wohl ein bißchen in die Trickkiste greifen, weil erst das zweite Datenfeld die entsprechende Information bereithält.

Im zweiten Fall müsstest du jede einzelne Datenzeile aufbrechen, wieder zusammensetzen in der entsprechenden Reihenfolge, und dann die Ausgabe starten.

Einfacher ginge es per Datenbank (Entschuldigung, ich will damit sicher nicht nerven, nur einen Tip geben...)

---
www.kuminatano.de

  Profil   E-Mail   Website   Editieren   Zitieren

dnue
Feiertags-Poster


Beiträge: 27


sorry, ich bin glaube ich zu blöd für das!

ich habe jetzt folgendes gemacht:

$array = file("members");
sort($array);)
$datei = fopen("members", "w");

es kommt jedoch immer eine fehlermeldung:
Parse error: parse error, unexpected ')'

wo genau bei der datei muss ich das einfügen und ist das korrekt so?
ich habe es auf zeile 18 eingefügt (siehe oben)

danke!

p.s.: ich weiss, dass es mit einer datenbank einfacher wäre aber ich mache die page für einen verein, und es ist bereits alles gegeben und halt leider ohne datenbank!!!

  Profil   Editieren   Zitieren

HG
Posting-Schinder


Beiträge: 520


dnue schrieb am 11.09.2003 22:16
$array = file("members");
sort($array);)
$datei = fopen("members", "w");

Ich hab mir mal die Freiheit genommen, die fragliche Klammer fett zu markieren. Die einfach raus, und es sollte funktionieren.

---
www.kuminatano.de

  Profil   E-Mail   Website   Editieren   Zitieren

dnue
Feiertags-Poster


Beiträge: 27


Leider, löscht es mir den Inhalt der "members" Datei. Was soll ich machen?

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23:
<?
include("config.php");

function replace() {
global $eintraege;
$eintraege = str_replace('\"', '"', $eintraege);
$eintraege = str_replace('|@|', '~', $eintraege);
}
function delete_line($line, $change) {
$entries = file("members");
if(empty($change)) {
unset($entries[$line]);
} else {
$entries[$line-1] = $change; }
$newentries = implode("", $entries);
$datei = fopen("members", "w");

fputs($datei, $newentries);
fclose($datei);
$array = file("members");
sort($array);
$datei = fopen("members", "w");
?>


ich habe das ganze in die kopfphp-zeile eingefügt.
Wenn ich es unterhalb einfüge, löscht es den inhalt der "members" datei nicht mehr aber es passiert auch nichts auch keine fehlermeldung, was manchmal besser wäre !

Danke für eure Hilfe!

best wishes!

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

dnue
Feiertags-Poster


Beiträge: 27


Es hat funktioniert mit:

1: 
2: 
3: 
4: 
5: 
6:
$sort = file("members"); 
sort($sort); 
$sorted = implode("", $sort); 
$datei = fopen("members", "w"); 
fputs($datei, $sorted); 
fclose($datei); 

  Profil   Editieren   Zitieren

lexx
Pixelschubser


Beiträge: 5


dnue schrieb am 28.09.2003 23:34
Es hat funktioniert mit:

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8:
$sort = file("members"); 
sort($sort);   // wie sortiert man nach feld2 ????
$sorted = implode("", $sort); 
$datei = fopen("members", "w"); 
fputs($datei, $sorted); 
fclose($datei); 



sorry das ich mich einmische, ich hab das gleiche problem,
also wenn de uns jetzt noch zeigst, wie man nach dem 2. Feld (z.b. dem nachnamen)
sortiert, kriegste mind. 5 bienchen und nen virtuellen schmatzer obendrauf

Diese Nachricht wurde geändert von: lexx
  Profil   Editieren   Zitieren
Seite 1 | 2  

Antworten
Nach oben