Php créer variable fichier txt pour maj Mysql

Résolu/Fermé
piersoleil Messages postés 3 Date d'inscription jeudi 31 mai 2012 Statut Membre Dernière intervention 31 mai 2012 - 31 mai 2012 à 13:28
piersoleil Messages postés 3 Date d'inscription jeudi 31 mai 2012 Statut Membre Dernière intervention 31 mai 2012 - 31 mai 2012 à 15:03
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

A voir également:

4 réponses

Utilisateur anonyme
31 mai 2012 à 13:38
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
piersoleil Messages postés 3 Date d'inscription jeudi 31 mai 2012 Statut Membre Dernière intervention 31 mai 2012
31 mai 2012 à 14:32
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
Utilisateur anonyme
31 mai 2012 à 14:54
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
Utilisateur anonyme
31 mai 2012 à 15:01
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
piersoleil Messages postés 3 Date d'inscription jeudi 31 mai 2012 Statut Membre Dernière intervention 31 mai 2012
31 mai 2012 à 15:03
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