 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
22.11.2006, 14:48
|
#1
|
|
TP-Member
Registriert seit: Nov 2005
|
txt-Datei in php-array schreiben??
hallo,
ich möchte eine Text-Datei der folgenden Form:
Code:
1 2 50 5 2
2 5 61 5 3
3 5 61 5 3
4 3 63 2 2
5 -99 0 8 0
6 -99 0 8 0
7 100 0 8 0
8 -99 0 8 0
9 100 0 8 0
10 -99 0 8 0
11 100 0 8 0
12 -99 0 8 0
per php in arrays schreiben. Und zwar soll jede Spalte in ein Array geschrieben werden. Habt ihr eine Idee wie ich das am besten lösen kann?
gruß
volker
|
|
|
22.11.2006, 16:14
|
#2
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
|
Eine Comma-Separeted mit Newline am Zeilenende wäre schon besser!
Erstellst Du diese Datei; kannst Du das ändern?
__________________
[321 Name="Joe"]
wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
[/321]
use my HTML-Tester
Motto'06: Mut zur deutschen Sprache!
|
|
|
22.11.2006, 16:30
|
#3
|
|
TP-Member
Registriert seit: Nov 2005
|
ich erstelle die datei leider nicht, aber evtl kann man da trotzdem was ändern, ich werde mal nachfragen. also die spalten besser mit kommas anstatt leerzeichen trennen, richtig? hatte schon überlegt mit führenden nullen bei den werten zu arbeiten, aber wenn kommas vorhanden sind, ist das nicht mehr nötig, oder?
was bedeutet "newline" genau? bin leider nicht so fit in php, arbeite mich gerade erst rein. die txt-datei wird aber auch nicht mittels php erstellt...
naja gut, dann stellen wir uns also die datei wie folgt vor:
Code:
1,2,50,5,2
2,5,61,5,3
3,5,61,5,3
4,3,63,2,2
5,-99,0,8,0
6,-99,0,8,0
7,100,0,8,0
8,-99,0,8,0
9,100,0,8,0
10,-99,0,8,0
11,100,0,8,0
12,-99,0,8,0
die kommas dienen jetzt als seperator zwischen den einzelnen spalten. wie kriege ich nun jede spalte in ein array, also je ein array für eine spalte.
|
|
|
22.11.2006, 16:36
|
#4
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Hier mal nen Ansatz zur ersten TXT Version
PHP-Code:
<?php function arrayfilter($var){ return ($var & " "); }
$handle = fopen ("daten.txt", "r"); while (!feof($handle)) { $buffer = fgets($handle, 4096); $row = explode(" ", $buffer); $foo = array_filter($row, "arrayfilter"); $anzahl = count($foo); $foo = array_merge($foo);
for($i = 0; $i < $anzahl; $i++)${"array".$i}[] = $foo[$i]; } fclose ($handle); for($i = 0; $i < $anzahl; $i++){ echo "Array $i:"; echo "<pre>"; print_r(${"array".$i}); echo "</pre>"; } ?>
|
|
|
22.11.2006, 17:10
|
#5
|
|
TP-Member
Registriert seit: Nov 2005
|
schonmal danke für den ansatz, aber die datei wird wohl der einfachheit halber auf kommas umgeschrieben.
|
|
|
22.11.2006, 17:18
|
#6
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
|
newline = Zeilenumbruch.
fgets($handle, 4096); liest die angegebene Anzahl Zeichen oder
bis zum nächsten Zeilenumbruch, was denn zuerst eintritt.
Du kannst also leicht die Zeilen in ein Array einlesen.
Eine Zeile kannst Du mit $felder = explode(",", $zeile;
in die einzelnen felder zerlegen.
PHP-Code:
$handle = fopen ("daten.txt", "r");
$zeile = 0;
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
$zeile++;
$alles[$zeile] = $buffer; // oder = trim($buffer)
}
fclose ($handle);
// nun ist die ganze Datei zeilenweise im Array $alles
// die Zeilen werden nun einzeln verarbeitet
for($i = 0; $i < count($alles) - 1; $i++) {
$felder = explode(",", $alles[i]);
// Ausgabe und/oder Berechnungen pro Zeile
echo "erstes Feld:" . $felder[0] . "<br>\n";
echo "zweites Feld:" . $felder[1] . "<br>\n";
// usw.
}
Mit Vorbehalt auf Tippfehler
__________________
[321 Name="Joe"]
wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
[/321]
use my HTML-Tester
Motto'06: Mut zur deutschen Sprache!
Geändert von 321 (22.11.2006 um 17:21 Uhr).
|
|
|
22.11.2006, 17:20
|
#7
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Code nicht verstanden?
Eine Änderung hier und eine da und ...
PHP-Code:
<?php $handle = fopen ("daten.txt", "r"); while (!feof($handle)) { $buffer = fgets($handle, 4096); $foo = explode(",", $buffer); $anzahl = count($foo); for($i = 0; $i < $anzahl; $i++)${"array".$i}[] = $foo[$i]; } fclose ($handle); for($i = 0; $i < $anzahl; $i++){ echo "Array $i:"; echo "<pre>"; print_r(${"array".$i}); echo "</pre>"; } ?>
|
|
|
22.11.2006, 17:26
|
#8
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
|
Warum?
Mein Beispiel soll keine Kritik oder Verbesserung des Deinen sein.
Es ist eine Möglichkeit eine komma-getrennte Datei in Zeilen und Felder zu zerlegen.
__________________
[321 Name="Joe"]
wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
[/321]
use my HTML-Tester
Motto'06: Mut zur deutschen Sprache!
|
|
|
22.11.2006, 17:28
|
#9
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
 Dich meinte ich nicht, ich meinte lx-concept, da es sich so anhörte, als würde er nicht verstehen, wie man es auf die Lösung für Kommas portieren kann ...
|
|
|
22.11.2006, 17:32
|
#10
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
|
Axo, ok! *Bier-reich-und Prost!-sag*
__________________
[321 Name="Joe"]
wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
[/321]
use my HTML-Tester
Motto'06: Mut zur deutschen Sprache!
|
|
|
23.11.2006, 14:55
|
#11
|
|
TP-Member
Registriert seit: Nov 2005
|
doch, wie man es zum komma protiert ist mir klar, aber ich habe glaube die skripte schreiben die zeilen jeweils in ein array, ich brauche allerdings jede spalte in einem array. korrigiert mich bitte wenn ich falsch liege, wie gesgat, bin php-rookie.
aber schonmal tausend dank für eure skripte. nur php learning-by-doing ist nicht ganz so einfach, muss mir mal geeignete literatur zulegen.
gruß
volker
Geändert von lx-concept (23.11.2006 um 14:58 Uhr).
|
|
|
23.11.2006, 14:58
|
#12
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Zur Klärung hier mal die Ausgabe meines letzten Scripts
Code:
Array 0:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
[7] => 8
[8] => 9
[9] => 10
[10] => 11
[11] => 12
)
Array 1:
Array
(
[0] => 2
[1] => 5
[2] => 5
[3] => 3
[4] => -99
[5] => -99
[6] => 100
[7] => -99
[8] => 100
[9] => -99
[10] => 100
[11] => -99
)
Array 2:
Array
(
[0] => 50
[1] => 61
[2] => 61
[3] => 63
[4] => 0
[5] => 0
[6] => 0
[7] => 0
[8] => 0
[9] => 0
[10] => 0
[11] => 0
)
Array 3:
Array
(
[0] => 5
[1] => 5
[2] => 5
[3] => 2
[4] => 8
[5] => 8
[6] => 8
[7] => 8
[8] => 8
[9] => 8
[10] => 8
[11] => 8
)
Array 4:
Array
(
[0] => 2
[1] => 3
[2] => 3
[3] => 2
[4] => 0
[5] => 0
[6] => 0
[7] => 0
[8] => 0
[9] => 0
[10] => 0
[11] => 0
)
|
|
|
23.11.2006, 15:11
|
#13
|
|
TP-Member
Registriert seit: Nov 2005
|
jep, war zu voreilig mit meinem post, sorry, ist genau das was ich wollte. vielen vielen dank!!!
jetzt muss der kram nur noch in eine tabelle und bei entsprechender nummer gifs zugewiesen werden, aber da werd ich weiter probieren müssen.
eine kleine frage hätte ich noch:
ich habe bspw. 20 links und bei klick auf einen link soll jeweils die entsprechende datei in das array geladen werden. ich denke mal ne funktion mit einer übergabe variable wäre da das richtige, aber es soll möglichst dynamisch sein.
zur erklärung:
es geht um eine wetterseite. zu jeder stadt gibt es wetterdaten und diese werden bei klick auf die entsprechende stadt auf einer detailseite angezeigt, dafür das array-skript. mir geht es jetzt aber noch um die verlinkung zu den detail-seiten, wie gestalte ich diese am pflegeleichtesten, da die städteliste erweiterbar sein muss???
|
|
|
23.11.2006, 15:45
|
#14
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Ohne nun viel zu erklären, hier mal die Umsetzung:
index.php:
PHP-Code:
<?php include "function.php"; echo "<a href=\"$_SERVER[PHP_SELF]?daten=1\">Datensatz1</a><br>"; echo "<a href=\"$_SERVER[PHP_SELF]?daten=2\">Datensatz2</a><br>"; echo "<a href=\"$_SERVER[PHP_SELF]?daten=3\">Datensatz3</a><br>"; echo "<a href=\"$_SERVER[PHP_SELF]?daten=4\">Datensatz4</a><br>"; echo "<a href=\"$_SERVER[PHP_SELF]?daten=5\">Datensatz5</a><br>";
if(isset($_GET['daten']) && $_GET['daten'] != "") read_data($_GET['daten']); ?>
function.php
PHP-Code:
<?php function read_data($id){ switch($id){ case 1: $file = "daten1.txt"; break; case 2: $file = "daten2.txt"; break; case 3: $file = "daten3.txt"; break; case 4: $file = "daten4.txt"; break; case 5: $file = "daten5.txt"; break; } $handle = fopen ($file, "r"); while (!feof($handle)) { $buffer = fgets($handle, 4096); $foo = explode(",", $buffer); global $anzahl; $anzahl = count($foo); for($i = 0; $i < $anzahl; $i++){ global ${"array".$i}; ${"array".$i}[] = $foo[$i]; } } fclose ($handle); show_data(); }
function show_data(){ global $anzahl; for($i = 0; $i < $anzahl; $i++){ global ${"array".$i}; echo "<p>Tabelle No. ".($i+1); echo "<table border=\"1\">"; foreach(${"array".$i} as $lable => $data){ echo "<tr>"; echo "<td>Datensatz ".($lable+1)."</td>"; echo "<td>$data</td>"; echo "</tr>"; } echo "</table></p>"; } } ?>
Geändert von webcreate (23.11.2006 um 15:52 Uhr).
|
|
|
| |