PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Datei einlesen und weiterverarbeiten (http://www.selfphp.de/forum/showthread.php?t=7977)

LudwigB 17.06.2004 21:53:51

Datei einlesen und weiterverarbeiten
 
Hallo,

ich arbeite an einem php-script, bei dem eine Datei Zeile für Zeile eingelesen wird, bei Übereinstimmung eines Eintrags, soll ein anderer string aus dieser Zeile für eine weitere Berechnung ausgelesen werden.
Konkret wird aus einem anderen script (mit POST) eine Variable übertragen (input1 und input2 - die beiden werden auch korrekt übertragen). In der "datei.txt" befinden sich ca. 10000 Zeilen (mit jeweils 8 getrennten Werten pro Zeile).
Mein script sollte nun folgendes machen: die Variable $input1 (wurde eingegeben und wird auch korrekt übertragen, das hab ich schon getestet) soll mit den Einträgen verglichen werden und bei Übereinstimmung sollen zwei weitere Werte aus der Zeile für die weitere Verarbeitung im php-script bereitgestellt werde. (für $input2 dasselbe nochmal. Leider funktioniert es so nicht. Die Datei wird zwar korrekt eingelesen (und ich kann mir auch die Variablen z.B. von buffer[3] anzeigen lassen, aber der Vergleich funktioniert nicht, bekomme ich keine Variablen $x1, $y1,... (und den passenden Eintrag gibt es, also $input == $buffer[3] müsste er finden).
Wahrscheinlich ist es ein einfacher Anfängerfehler, aber ich finde keine Lösung dafür. Ich bin für jede Hilfe dankbar.

PHP-Code:

//datei einlesen 
$handle fopen ("datei.txt""rb"); 

// zeile für zeile einlesen 
   
while (!feof ($handle)) { 
$buffer fgets($handle4096); 
$buffer explode("t"$buffer); 
$buffer[0]; 
$buffer[1]; 
$buffer[2]; 
$buffer[3]; 
$buffer[4]; 
$buffer[5]; 
$buffer[6]; 
$buffer[7]; 

      if (
$input1 == $buffer[3])  {  $x1=$buffer[1] ; 
$y1=$buffer[2] ; } 

       
     if (
$input2 == $buffer[3])  { $x1=$buffer[1]; 
$y2=$buffer[2];} 
                    } 


feuervogel 17.06.2004 23:10:22

schau dir mal file() an...damit sollte der schleifdurchlauf etwas simpler werden.

zweitens:

was soll

$buffer[0];

$buffer[1];

$buffer[2];

$buffer[3];

$buffer[4];

$buffer[5];

$buffer[6];

$buffer[7];

???

drittens:

if( !$input1 || !$input2 )
die( "input1 oder input2 ist leer" );

if ( $buffer[3] == $input1 ) {
$x1=$buffer[1] ;
$y1=$buffer[2] ;
echo "eins";
} elseif ( $buffer[3] == $input2 ) {
$x1=$buffer[1];
$y2=$buffer[2];
echo "zwei";
}

mach das mal bitte so...aber ohne die dateistruktur zu sehen, ist das sehr schwer...poste doch mal 10 zeilen...

LudwigB 17.06.2004 23:48:18

Hallo,

Danke mal für die Antwort, ich poste hier kurz die Dateistruktur, den Rest mache ich morgen - muss früh raus.

Derzeit interessieren mich nur der zweite, dritte und vierte Eintrag. Also bei übereinstimmung (von $input1) mit 'Name1a' sollen 148 als Variable x1 und 1 als Variable y1 verwendet werden; bei 'Name1f' dann wären es 3 und 2, usw. (Die anderen Einträge in der Datei sind - vorerst- ohne Bedeutung für mich, werden evtl. später mal genutzt)


148 148 1 'Name1a' 1 'Name2a' 'Name3a' 2771
149 149 1 'Name1b' 1 'Name2b' 'Name3b' 3823
150 150 1 'Name1c' 1 'Name2c' 'Name3c' 2506
151 1 2 'Name1d' 2 'Name2d' 'Name3d' 97
152 2 2 'Name1e' 2 'Name2e' 'Name3e' 97
153 3 2 'Name1f' 2 'Name2f' 'Name3f' 97


lg,
Ludwig

feuervogel 18.06.2004 19:02:12

es scheint da probleme mit dem tab t zu geben. der trennt die wohl nicht richtig oder sowas...habs jetzt mals so probiert und ich ich die spalten von hand per tab-taste trenne gehts...

PHP-Code:

<?PHP

$vergla        
"'Name1a'";
$verglb        "'Name1b'";

$farr     file"./text.txt" );

foreach( 
$farr as $v ) {

    
$varr     explode("t"$v ); 

    
print_r$varr );
    echo 
"<br>";
    
    if ( 
$varr[3] == $vergla ) {
        
$x1=$varr[1] ;
        
$y1=$varr[2] ;
        } elseif ( 
$varr[3] == $verglb ) {
        
$x1=$varr[1];
        
$y2=$varr[2];
        } 
    
}

echo 
$x1 " und " $y1;;
echo 
"<br>";
echo 
$x2 " und " $y2;

?>

txt-datei sieht so aus:

148 148 1 'Name1a' 1 'Name2a' 'Name3a' 2771
149 149 1 'Name1b' 1 'Name2b' 'Name3b' 3823
150 150 1 'Name1c' 1 'Name2c' 'Name3c' 2506
151 1 2 'Name1d' 2 'Name2d' 'Name3d' 97
152 2 2 'Name1e' 2 'Name2e' 'Name3e' 97
153 3 2 'Name1f' 2 'Name2f' 'Name3f' 97


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:34:10 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.