2012-11-21 7 views
0

J'ai besoin d'afficher uniquement le dernière occurrence lorsque les lignes sont le même numéro de série.php Afficher la dernière occurrence à partir du fichier txt

Ce sont les lignes de mon fichier txt:

ID| NAME | SERIAL 
1; John; 00001; 
2; Mike; 00002; 
3; John; 00001; 


// open file 
    $file = fopen("Data.txt","r"); 

    // loop lines 
    while(!feof($file)){ 
     $line = fgets($file); 
     $explode_line = explode(";",$line); 
     $id = $explode_line[0]; 
     $serial = $explode_line[1]; 

     if ($serial == $_POST['serial'])) { 
      echo $id . ' - ' . $serial; 
     } 
    } 

    fclose($file); 

Résultat doit être:
3; John; 00001;

et non:
1; John; 00001;
3; John; 00001;

+0

Où est la question? Quelle est la sortie de votre code? Que devrait-il être? – Jens

+0

pourquoi n'utilisez-vous pas mysql? –

+0

Copie possible: http://stackoverflow.com/questions/1062716/php-returning-the-last-line-in-a-file – Albz

Répondre

0

La méthode la plus simple consiste à stocker les données dans un tableau de lignes; ou, si vous avez besoin qu'une seule ligne, un seul tuple:

$file = fopen("Data.txt","r"); 

$result = false; 

// loop lines 
while(!feof($file)) 
{ 
    // Use trim here 
    $line = trim(fgets($file)); 

    $explode_line = explode(";",$line); 
    $id = $explode_line[0]; 
    $serial = $explode_line[1]; 
    if ($serial == $_POST['serial'])) 
    { 
     $result = array('id' => $id, 'serial' => $serial); 
    } 
} 
fclose($file); 

if ($result) 
{ 
    echo $result['id'] . ' - ' . $result['serial']; 
} 
+0

Je dois montrer seulement la dernière occurrence s'il y a le même numéro de série. – Jimmy

+0

Et c'est ainsi. S'il y a une correspondance, '$ result' est rempli et ne contient que les derniers résultats. À la fin de la boucle, si quelque chose a été trouvé, '$ result' est évalué à true et la sortie est imprimée. Essayez-le. – LSerni

0

Juste une variable écraser $myId qui est définie en dehors de la boucle. Cela contiendra toujours la dernière occurrence après la fin de la boucle.

$file = fopen("Data.txt","r"); 

    $myId = ''; 

    while(!feof($file)){ 
     $line = fgets($file); 
     $explode_line = explode(";",$line); 
     $id = $explode_line[0]; 
     $serial = $explode_line[1]; 

     if ($serial == $_POST['serial'])) { 
      $myId = $id; 
     } 
    } 

    fclose($file); 

    if($myId != '') 
    { 
     echo htmlspecialchars($myId). ' - ' . htmlspecialchars($_POST['serial']); 
    } 
0

Essayez cette/c'est votre variante avec aussi peu que possible les modifications /:

// open file 
    $file = fopen("Data.txt","r"); 
$str = '';  

    // loop lines 
    while(!feof($file)){ 
     $line = fgets($file); 
     $explode_line = explode(";",$line); 
     $id = $explode_line[0]; 
     $serial = $explode_line[1]; 

     if ($serial == $_POST['serial'])) { 
      $str = $id . ' - ' . $serial; 
     } 
    } 

    echo $str; 

    fclose($file); 
0

Vous pouvez essayer;

// open file 
    $file = fopen("Data.txt","r"); 

    // loop lines 
    while(!feof($file)){ 
     $line = fgets($file); 
     $explode_line = explode(";",$line); 
     $id = $explode_line[0]; 
     $serial = $explode_line[1]; 
     if ($serial == $_POST['serial'])) { 
     $ret_id = $id; 
     $ret_serial = $serial; 
     }   
     } 
    fclose($file); 
    echo $ret_id . ' - ' . $ret_serial; 
Questions connexes