Php créer variable fichier txt pour maj Mysql

Résolu
piersoleil Messages postés 3 Statut Membre -  
piersoleil Messages postés 3 Statut Membre -
Bonjour à tous,

Je dois récupérer les lignes d'un fichier texte (elles correspondent à une adresse email) pour mettre à jour une table dans une base de données Mysql.

Exemple de lignes récupérées dans le fichier texte "Email_Pro a_supprimer.txt"

toto@exemple.com
bidon@msn.fr
lorie@live.fr

Voilà mon script php

$fichier = file("Email_Pro a_supprimer.txt"); // Nom du fichier à afficher, son adresse de localisation 

$total = count($fichier);// Nombre total des lignes du fichier

for($i = 0; $i < $total; $i++) 
{ // Départ de la boucle
$ligne=$fichier[$i];//On récupère dans la variable $ligne chaque enregistrement
echo $ligne.'<br>';//pour vérification, on affiche le contenu de la variable ligne
		
	

mysql_query("UPDATE EMAIL_PRO SET Stop='Oui' WHERE Email='$ligne'");//On met à jour la table

}


L'affichage de la variable $ligne donne bien une adresse email par ligne.
Par contre, dans la clause WHERE Email='$ligne' la variable $ligne n'est pas reconnue.

Merci d'avance pour votre aide.
Cordialement

4 réponses

  1. Utilisateur anonyme
     
    Bonjour

    echo $ligne,' ',strlen($ligne),'<br>';//pour vérification, on affiche le contenu de la variable ligne

    Tu verras sans doute que la ligne est un peu plus longue que le texte que tu lis.
    Si j'en crois la doc PHP, la fonction file laisse le caractère de retour chariot à la fin de chaque ligne, tu ne le vois pas à l'affichage, mais il empêche l'égalité de la comparaison dans le WHERE.
    Tu n'as qu'à le supprimer avec $ligne=rtrim($ligne);
    0
  2. piersoleil Messages postés 3 Statut Membre
     
    Merci beaucoup pour ta réponse.

    J'ai inséré ton code :
    $fichier = file("Email_Pro a_supprimer.txt"); // Nom du fichier à afficher, son adresse de localisation 
    
    $total = count($fichier); // Nombre total des lignes du fichier
    
    for($i = 0; $i < $total; $i++) 
    { // Départ de la boucle
    $ligne=$fichier[$i];//On récupère dans la variable $ligne chaque enregistrement
    $ligne=rtrim($ligne); //On supprime le caratère retour chariot
    echo $ligne.'<br>';//pour vérification, on affiche le contenu de la variable ligne
    		
    	
    
    mysql_query("UPDATE EMAIL_PRO SET Stop='Oui' WHERE Email='$ligne'");//On met à jour la table
    }
    
    


    A l'affichage écran, le retour chariot a dû disparaitre, mais le WHERE ne capte toujours pas.

    Merci encore pour ton aide.
    Cordialement
    0
  3. Utilisateur anonyme
     
    As-tu affiché la longueur pour voir si elle est bonne ?
    Remplace rtrim par trim (sans r au début), il y a peut-être des line-feed au début des lignes.
    0
    1. Utilisateur anonyme
       
      Tu peux aussi essayer
      mysql_query("UPDATE EMAIL_PRO SET Stop='Oui' WHERE Email='$ligne'") or die(mysql_error()) ;//On met à jour la table

      pour voir s'il y a une erreur mysql
      0
  4. piersoleil Messages postés 3 Statut Membre
     
    Bravo, tu as trouvé la solution.
    Mille remerciements.
    Pour la communauté, j'affiche le script final qui fonctionne.
    $fichier = file("Email_Pro a_supprimer.txt"); // Nom du fichier à afficher, son adresse de localisation 
    
    $total = count($fichier); // Nombre total des lignes du fichier
    
    for($i = 0; $i < $total; $i++) 
    { // Départ de la boucle
    $ligne=$fichier[$i];//On récupère dans la variable $ligne chaque enregistrement
    $ligne=trim($ligne); //On supprime les espaces inutiles
    echo $ligne.'<br>';//pour vérification, on affiche le contenu de la variable ligne		
    	
    
    mysql_query("UPDATE EMAIL_PRO SET Stop='Oui' WHERE Email='$ligne'");//On met à jour la table
    }
    

    Bons codes à tous.
    0