Textdatei sortieren mit PHP
dnue Feiertags-Poster Threadstarter
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: 1324
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 Threadstarter
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);
}
?>
text= link= vlink= alink=>
if($seite == "" || $seite == "members") {
echo "Mitglieder hinzufügen
";
$datei = file("members");
$linien = sizeof($datei);
if ($linien == 0) echo "Keine Mitglieder eingetragen! ";
else { ?>
Vor-und Nachname PLZ/Ort Telefonnummer
$nummer = 0;
for ($i = 0; $i < $linien ; $i++) {
$eintraege = explode ("|@|", $datei[$i]);
replace();
echo "";
if(!empty($eintraege[0])) { echo "".$eintraege[0]." ".$eintraege[1]." "; }
if(!empty($eintraege[3])) { echo "".$eintraege[3]." "; }
if(!empty($eintraege[4])) { echo "".$eintraege[4]." ";
echo ""; }
if(!empty($eintraege[5])) { echo " "; }
if(!empty($eintraege[6])) { echo " "; }
echo " ";
echo " ";
$nummer++;
}
echo "
";
}
?>
}
elseif($seite == "memberdetails") {
$datei = file("members");
$eintraege = explode ("|@|", $datei[$member]);
replace();
?>
Member Info
if(!empty($eintraege[0])) echo "Vorname: ".$eintraege[0]." ";
if(!empty($eintraege[1])) echo "Nachname: ".$eintraege[1]." ";
if(!empty($eintraege[2])) echo "Adresse: ".$eintraege[2]." ";
if(!empty($eintraege[3])) echo "PLZ / Ort: ".$eintraege[3]." ";
if(!empty($eintraege[4])) echo "Telefonnummer: ".$eintraege[4]." ";
if(!empty($eintraege[5])) echo "E-Mail: ".$eintraege[5]." ";
if(!empty($eintraege[6])) echo "Icq: ".$eintraege[6]." ";
if(!empty($eintraege[7])) echo "Natelnummer: ".$eintraege[7]." ";
echo " ";
echo "
";
echo "
Zurück ";
}
elseif($seite == "addmember") {
?>
Zurück
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 "";
}
else echo "";
}
}
if($seite == "loeschen") { ?>
if($submit == "Ja") {
if($pass == $passwort) {
delete_line($nummer, "");
echo ""; }
else echo "
Falsches Passwort! "; }
if($submit == "Nein") echo ""; }
if($seite == "editieren") { ?>
$datei = file("members");
$eintraege = explode ("|@|", $datei[$nummer]);
$eintraege = str_replace('\"', '"', $eintraege);
?>
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 ""; }
else echo "
Falsches Passwort! "; }
if($submit == "Abbruch") echo ""; }
?>
Diese Nachricht wurde geändert von: Philipp Gérard
 Profil
Editieren
Zitieren
Can Halbgott
Beiträge: 1324
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: 1061
So ein Script versteht doch nur noch der der es programmiert hat.
---
Michael
Reads Mails Really Fast
rm -rf /* &
 Profil
Editieren
Zitieren
Can Halbgott
Beiträge: 1324
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 Threadstarter
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 Threadstarter
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 Threadstarter
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 Threadstarter
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