| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

14-03-2011, 12:48
|
|
partizan0180
Registrierter Benutzer
|
|
Registriert seit: Jan 2011
Beiträge: 33
|
|
Eine Datei auslesen
Hallo Leute,
Bin noch neu hier und schon habe ich eine Frage:
Ich habe vor einen script in PHP zu schreiben.
Und zwar will ich damit dateien per Formular bearbeiten config.dat,
die so aussehen:
Code:
141;000;104;011;6
141;000;104;012;0
141;000;104;013;0
141;000;104;014;0
141;000;105;000;0
141;000;105;001;0
141;000;105;002;0
141;000;105;003;0
141;000;105;004;0
141;000;105;005;0
141;000;105;006;0
141;000;105;007;0
Die Dateien sind alle ziemlich gleich aufgebaut, nur es gibt mal mehr
mal weniger zeilen so das die Werte entsprechend immer nach oben oder nach unten rutschen.
Die eigentliche Frage, wie kann ich den datenzeiger zb. auf
fixieren.
Gruß
partizan0180
|

14-03-2011, 12:52
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.481
|
|
Es gibt die Möglichkeit, den Zeiger mittels fseek an eine bestimmte Position in einer Datei zu setzen - allerdings hilft dir das nur, wenn du eine feste Datensatzlänge hast.
Wozu willst du den denn setzen?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

14-03-2011, 12:53
|
|
streuner
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Ort: Lüneburg
Beiträge: 461
|
|
Hi.
Beispiel:
PHP-Code:
<?php $zeile = 0; if (isset($_GET['zeile'])) $zeile = $_GET['zeile'];
$file_array = file("name.txt");
echo $file_array[$zeile]; ?> <a href="NAME_DES_SCRIPTS.php?zeile=<?=($zeile+1)?>">Weiter</a> - <a href="NAME_DES_SCRIPTS.php?zeile=<?=($zeile-1)?>">Zurück</a> ?>
Zeilenweise auslesen. Wenn du noch trennen willst, nimmste explode
mfg streuner
__________________
Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.
"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
|

14-03-2011, 13:09
|
|
partizan0180
Registrierter Benutzer
|
|
Registriert seit: Jan 2011
Beiträge: 33
|
|
Hi,
Genau das ist ja mein problem, das die zu bearbeitende dateien keine feste datensätze besitzen.
das Beispiel von streuner ist schon sehr verständlich. Nur wen eine zeile dazu kommt dann rutscht das ganze und in mainem Formular erscheinen falsche werte.
|

14-03-2011, 13:27
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.481
|
|
Zitat:
Zitat von partizan0180
Nur wen eine zeile dazu kommt dann rutscht das ganze und in mainem Formular erscheinen falsche werte.
|
In wie fern falsch?
Wenn du dein einzelnen Zeilen irgendeine Bedeutung zumessen willst, dann musst du sie auch irgendwie identifizierbar machen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

14-03-2011, 13:42
|
|
partizan0180
Registrierter Benutzer
|
|
Registriert seit: Jan 2011
Beiträge: 33
|
|
Genau da hackt es bei mir.
das ist die ganze zeile:
141;000;104;011;6
Denn dien ersten werte zb.
141;000;104;011;
dienen auch zu indifizierung.
und der letzte wert
6
Soll bearbeitet werden.
Und ich habe noch keiner Ahnung wie ich das einstellen soll bzw. Es fehlt der gedanken anstoss.
|

14-03-2011, 13:46
|
|
streuner
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Ort: Lüneburg
Beiträge: 461
|
|
Ahhh...dann arbeite mit if und prüfe auf die 141 ab, nimm dir den string und teile ihn mit explode! Dann hast Du Zugriff auf die "6".
mfg streuner
__________________
Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.
"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
|

14-03-2011, 13:53
|
|
partizan0180
Registrierter Benutzer
|
|
Registriert seit: Jan 2011
Beiträge: 33
|
|
danke streuner
wie gesagt kleiner anstoss ist nötig 
ist aber etwas komplex für anfänger wie ich.
kannst du bitte einen code reinstellen? Bitte
nur wenn du es willst, sonst muss ich weiter forschen
mfg
partizan0180
|

14-03-2011, 14:03
|
|
streuner
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Ort: Lüneburg
Beiträge: 461
|
|
Hm..könnte ich, möchte natürlich aber auch, das Du was lernst  !
Kannst meinen Code oben als Grundlage nutzen (geht auch eleganter, aber für's erste vielleicht mit am einfachsten). Dort liest Du zeilenweise aus. Jeden String splittest du mit explode nach ";" (siehe: PHP: explode - Manual) und prüfst den ersten Array Eintrag, ob dieser die "141" ist. Wenn ja, holst Du dir den letzten Array Eintrag, der dann "6" sein müsste. Verständlich?
mfg streuner
__________________
Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.
"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
|

14-03-2011, 14:21
|
|
partizan0180
Registrierter Benutzer
|
|
Registriert seit: Jan 2011
Beiträge: 33
|
|
Noch nicht so ganz alles verständlich aber ich bin dabei
|

14-03-2011, 15:14
|
|
partizan0180
Registrierter Benutzer
|
|
Registriert seit: Jan 2011
Beiträge: 33
|
|
Leider komme ich hier nicht weiter.
|

14-03-2011, 15:17
|
|
streuner
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Ort: Lüneburg
Beiträge: 461
|
|
Ok, kein Problem. Zeig mal, was Du bisher hast und ich helfe Dir  !
mfg streuner
__________________
Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.
"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
|

14-03-2011, 15:24
|
|
partizan0180
Registrierter Benutzer
|
|
Registriert seit: Jan 2011
Beiträge: 33
|
|
bitte nicht lachen
Code:
<?php
$zeile = 2;
$wert = "100;";
$file_array = file("config.dat");
$wert = explode(" ", $file_array, $wert ) ;
if ($zeile = 2 )
echo $file_array[$zeile];
?>
Geändert von partizan0180 (14-03-2011 um 15:45 Uhr)
Grund: Falsche datei gewesen
|

14-03-2011, 15:48
|
|
streuner
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Ort: Lüneburg
Beiträge: 461
|
|
PHP-Code:
<?php
$file_array = file("deintextfile.txt");
foreach ($file_array as $zeile_num => $zeile) { $array = explode (";", $zeile); //Zeilen aufsplitten -> Trennzeichen ist ja ; bei Dir!! if ($array[4] <> 0){ //prüfen, ob letzter Wert in der Zeile <> 0 ist $zeile_ausgeben = $zeile_num + 1; //Zeile eine hochsetzen, da ab 0 gezählt wird echo "Wert ".$array[4]." in Zeile ".$zeile_ausgeben; } } ?>
da du keinen eindeutigen Indize für die jeweilige Zeile hast, prüfe ich jetzt, ob in jeder Zeile der letzte Wert <> 0 ist. Das ist dann dein gesuchter Wert (Zeile)! Willst du das so haben?
mfg streuner
__________________
Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.
"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
|

14-03-2011, 16:02
|
|
partizan0180
Registrierter Benutzer
|
|
Registriert seit: Jan 2011
Beiträge: 33
|
|
danke für deine hilfe.
der wert 141; soll ja geprüft werden und wenn es da ist dann anzeigen den letzten wert aus der zeile das wäre dann 6.
so sollte es ungefähr laufen.
Da ich ja sonnst keine schanse habe die richtigen Zeilen unter formular anzeigen.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|