supprimer une ligne vide [résolu]

supprimer une ligne vide [résolu] - PHP - Programmation

Marsh Posté le 03-02-2006 à 12:59:48    

Salut! j'importe un fichier texte dans une base sql via une routine php, cependant quand les fichiers ont une ligne vide en fin de fichier, j'ai une entrée vide dans ma base. Comment je peux procéder pour supprimer les lignes vides? Merci de vos réponses...


Message édité par bensti le 03-02-2006 à 14:02:21
Reply

Marsh Posté le 03-02-2006 à 12:59:48   

Reply

Marsh Posté le 03-02-2006 à 13:23:55    

Utilise strlen pour tester la longueur de la chaine avant de faire ton insert...

Reply

Marsh Posté le 03-02-2006 à 13:32:29    

oui mais l'insert (le fichier) est variable. Comment detecter la ligne vide et la supprimer juste en retournant la taille de la chaine?

Reply

Marsh Posté le 03-02-2006 à 13:38:48    

tu peux montrer le bout de code qui lit le fichier?

Reply

Marsh Posté le 03-02-2006 à 13:41:46    

if (file_exists($file))
     $fp = fopen("$file", "r" );  
 else
     {  
       echo "<DIV CLASS=\"error\">Fichier introuvable !<br>Importation stoppée.</DIV>";
       exit();
     }
     
     while (!feof($fp))  
    {  
       $ligne = fgets($fp,4096);  
     
   
       $liste = explode( ",",$ligne);
    $liste1 = str_replace("\r", "",$liste);
    $liste2= str_replace("\"", "",$liste1);
         
                   
     
       $nom = $liste2[0];  
       $mail = $liste2[1];  
     
     
       $query = "INSERT INTO $table VALUES('$nom','$mail')";  
       $result= MYSQL_QUERY($query);


Message édité par bensti le 03-02-2006 à 13:42:36
Reply

Marsh Posté le 03-02-2006 à 13:49:21    

Bin en super simple:

Code :
  1. while (!feof($fp)) 
  2.      $ligne = fgets($fp,4096); 
  3.      if(strlen($ligne)){
  4.      ... le reste ...
  5.      }
  6. }

Reply

Marsh Posté le 03-02-2006 à 13:53:21    

t'es puissant mec! peux tu m'expliquer? en effet sur le manuel php srtlen est là pour conter les caractères.
 
 
MERCI MERCI en tous cas! :jap:

Message cité 1 fois
Message édité par bensti le 03-02-2006 à 13:53:38
Reply

Marsh Posté le 03-02-2006 à 14:00:02    

bensti a écrit :

t'es puissant mec! peux tu m'expliquer? en effet sur le manuel php srtlen est là pour conter les caractères.


 [:pingouino]  
 
Bin strlen "compte" le nombre de caractères, si y'en a pas ça retourne 0 et le if foire ...

Reply

Marsh Posté le 03-02-2006 à 14:02:05    

ah ok! il compre les caractères par ligne. j'avais pas vu comme ça si y'en à 0. En effet c'est logique. on peut mettre résolu.
 
P.S:désolé pour "compte".

Reply

Marsh Posté le 03-02-2006 à 14:22:14    

Attention, si tu ne veux pas de ligne "visiblement vide", il faut compter le nombre de caractére sans tenir compte des espaces et caractéres assimilés se trouvant en début et fin de ligne.
 
Pour ça, la fonction trim est utile vu qu'elle retourne la chaine donnée aprés en avoir enlevé ces caractéres.
 

Code :
  1. while (!feof($fp))  {
  2.        $ligne = fgets($fp,4096);
  3.        if(strlen(trim($ligne))){
  4.      ... le reste ...   
  5.        }
  6. }

permet donc de ne pas insérer entre autre les lignes ne contenant que des espaces et des tabulations.


Message édité par omega2 le 03-02-2006 à 14:22:40
Reply

Marsh Posté le 03-02-2006 à 14:22:14   

Reply

Marsh Posté le 03-02-2006 à 14:34:03    

ok!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed