Php créer variable fichier txt pour maj Mysql [Résolu/Fermé]

Signaler
Messages postés
3
Date d'inscription
jeudi 31 mai 2012
Statut
Membre
Dernière intervention
31 mai 2012
-
Messages postés
3
Date d'inscription
jeudi 31 mai 2012
Statut
Membre
Dernière intervention
31 mai 2012
-
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


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);
Messages postés
3
Date d'inscription
jeudi 31 mai 2012
Statut
Membre
Dernière intervention
31 mai 2012

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

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.
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
Messages postés
3
Date d'inscription
jeudi 31 mai 2012
Statut
Membre
Dernière intervention
31 mai 2012

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.