schon wieder php

Seite 1 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/schon_wieder_php_25422/page_1 - zur Vollversion wechseln!


jives schrieb am 09.02.2002 um 16:14

Also, ich möchte userdaten aus einer stinknormalen textdatei auslesen die so aufgebaut ist:
user=ort usw.

Der Code ist jetzt nur für die 1. Zeile gedacht, mit 2 eintägen:
$fd=fopen("beisp.dat","r");
$line=fgets($fd);
$userdata=explode("=",$line);
echo "$line - $userdata[0] - $userdata[1]";

Nur ich bekomm weder was für $line, noch für $userdata zurück :(
Was stimmt da nicht? Thx im voraus


Nurmi schrieb am 09.02.2002 um 16:59

also i hob des einmal so gemacht:
die ganze datei in eine variable übergeben und dann einfach alle Werte zwischen den ENTER Zeichen (das Kasterl [])
als Zeile genommen...

Wennst den Code unbedingt brauchst such i dir erm außa..(PM)

MfG NuRmi


jives schrieb am 09.02.2002 um 17:37

Nichts anderes sollte das obere Script machen :)
Datei zum lesen öffnen, lesen bis zum Zeilenende, die Variable in ein Array aufsplitten und dann kann ich mit dem Array weitermachen. Nur leider funktioniert es nicht :(


Nurmi schrieb am 09.02.2002 um 18:55

$inhalt = file("dateiXYZ.txt");
$zahl = count($inhalt);
$z="1";
while($z < $zahl){
$nr =$inhalt[$z];
$z++;
$pic =$inhalt[$z];
$z++;
$datum = $inhalt[$z];
$z++
}

i hobs so gmocht....


jives schrieb am 09.02.2002 um 22:00

thx, das script funktioniert :) Warum meins nicht geht würd mich aber wirklich interessieren.
Aber wenn ich das hier mache:
<?php
$inhalt = file("user1.usr");
$zahl = count($inhalt);
$z="0";
while($z < $zahl){
$user=$inhalt[$z];
$z++;
$ort=$inhalt[$z];
$z++;
}
echo "$user";
if ($user=="mueller" & $ort=="Wien"){
echo "<br>ok";}
?>
Kommt statt:
"mueller
ok"
nur
"mueller"
Obwohl die Daten stimmen, also in der Datei
"mueller
Wien" steht :confused:


Nurmi schrieb am 09.02.2002 um 22:12

string trim (string str)

löscht unsichtbare Zeichen..blablabla...

probier des amoi muaßt wahrscheinlich des ENTER zeichen weglöschen....


jives schrieb am 09.02.2002 um 22:18

Welches Enter-Zeichen meinst du? Die Kasterl bei $inhalt[]?
Das geht ja net, dann hab ich keinen Index mehr fürn Array.
Und wtf ist string trim?
Ich programmier erst seit 2 Tagen php, also nicht böse sein wenn ichs net check ;)


Vir@s schrieb am 10.02.2002 um 05:14

Zitat von KaZaa
Welches Enter-Zeichen meinst du? Die Kasterl bei $inhalt[]?
Das geht ja net, dann hab ich keinen Index mehr fürn Array.
Und wtf ist string trim?
Ich programmier erst seit 2 Tagen php, also nicht böse sein wenn ichs net check ;)

Er meint des '\n' am ende von der ersten Zeile!

BTW:

Code: PHP
function get_line ($file) {
	$read_again = true;
	$buffer_size = 4096;
	$full = "";
	while ((!feof ($file)) && ($read_again)) {
		$read_again = false;
		$line = fgets ($file, $buffer_size);
		$full .= $line;
		if (strlen($line) >= ($buffer_size - 1)) {
			if ($line[($buffer_size - 2)] != '\n') {
				$read_again = true;
			}
		}
	}
	return $full;
}

des is ne funktion von "mir" (mit hilfe von php.net)! Ließt genau eine Zeile immer aus! $file is einfach der pointer auf eine geöffnete Datei (also einfach die var die beim aufmachen def. wird)!

Vielleicht hilft des!


jives schrieb am 10.02.2002 um 12:58

Thx, ich werd das mal ausprobieren. :)
Nur lustigerweise macht fgets() nix anderes als die Daten einer Datei auszulesen bis eine vorgegebene Länge, das ZEILENENDE der das Ende der Datei erreicht ist. Also wieso machst du des so kompliziert in einer Funktion?
Und es zipft mich ärgstens an das mein Code net geht und i net den blassesten Schimmer hab warum :mad: Damnit


Vir@s schrieb am 10.02.2002 um 22:42

Zitat von KaZaa
Thx, ich werd das mal ausprobieren. :)
Nur lustigerweise macht fgets() nix anderes als die Daten einer Datei auszulesen bis eine vorgegebene Länge, das ZEILENENDE der das Ende der Datei erreicht ist. Also wieso machst du des so kompliziert in einer Funktion?
Und es zipft mich ärgstens an das mein Code net geht und i net den blassesten Schimmer hab warum :mad: Damnit

Klar könnt ich mit fgets auslesen, nur mit der funktion muss ich die Länge der Zeile vorher ned wissen, und ich bekomm den string gleich schön ohne '\n' am schluß :)

Könnt natürlich auch fgets($fp,999999999999999); machen - aber so is es schöner :)


jives schrieb am 11.02.2002 um 19:55

Ich muss aber ehrlich zugeben dass mir deine function zu hoch ist, bzw. dass ich nicht mit ihr umgehen kann :(
Irgendwie scheint auch nicht das Auslesen das Problem zu sein, weil das geht bei mir in der Zwischenzeit schon:

beisp.dat:
wert1,wert2
hallo,welt
1,2
ende,ende

code1:
<?php
$fd = fopen ("beisp.dat", "r");
while (!feof($fd)) {
$line = fgets($fd, 4096);
$userdata=explode(",",$line);
echo $userdata[0];
}
fclose ($fd);
?>

gibt: http://home.pages.at/kazaa/test/test.php

code2:
<?php
$fd = fopen ("beisp.dat", "r");
while (!feof($fd)) {
$line = fgets($fd, 4096);
$userdata=explode(",",$line);
echo $userdata[1];
}
fclose ($fd);
?>

gibt: http://home.pages.at/kazaa/test/test2.php

Aber wenn ich mit "if" Abfrage wirds intersessant:
<?php
$fd = fopen ("beisp.dat", "r");
while (!feof($fd)) {
$line = fgets($fd, 4096);
$userdata=explode(",",$line);
if ($userdata[0]=="1"){
echo "ok";
break;
}
}
fclose ($fd);
?>

funktioniert: http://home.pages.at/kazaa/test/test3.php

Aber die 2. Abfrage geht nicht mehr:
<?php
$fd = fopen ("beisp.dat", "r");
while (!feof($fd)) {
$line = fgets($fd, 4096);
$userdata=explode(",",$line);
if ($userdata[1]=="2"){
echo "ok";
break;
}
}
fclose ($fd);
?>

http://home.pages.at/kazaa/test/test4.php

Vielleicht versuchts ihr mir das eh die ganze Zeit zu erklären, aber ich überreiss net ganz was ihr mit dem "\n" meints :(


Philipp schrieb am 11.02.2002 um 21:40

Ersetzte: $line = fgets($fd, 4096);

durch: $line = rtrim(fgets($fd, 4096));

:)


Philipp schrieb am 11.02.2002 um 21:59

Und hier eine optimiertere Variante des Scripts:

Code: PHP
<?php
if (file_exists("beisp.dat")) { 
 $fd = file("beisp.dat");
    for($i=0;$i<count($fd);$i++) {
       $userdata = explode(",",rtrim($fd[$i]));
       if ($userdata[1]=="2") {
           echo "ok";
           exit;
       }
    }
 } else {
   echo "Kann Datei beisp.dat nicht öffnen";
   exit;
}
?>


jives schrieb am 11.02.2002 um 22:47

BIG THX, es funktioniert! :) Muss gleich mal nachsehen was rtrim() ist ;)
EDIT: Was mich verwundert hat ist, dass er die Leerzeichen nicht ausgibt. Aber jetzt ist alles klar.


jives schrieb am 13.02.2002 um 21:41

Kaum ist ein Problem gelöst, komm ich schon wieder nicht weiter :D :(
Ich möchte mit include() eine .php / .shtml Datei einfügen, die auf einem anderen Server liegt. Die .php Datei wird vom Server geparst, aber das sollte nix machen, da php beim include-Befehl ja in html umschaltet. Nur leider funktioniert
include("http://www.beispiel.url/beispiel.php");
nicht, obwohl die Funktion enabled ist und es laut Referenz gehen müsste. Wenn ich die Datei auf den lokalen Server lege, ist das kein Problem. Aber als Übergangslösung muss ich das so machen :(
Hat jemand eine Idee was da los ist?




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025