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.
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);
$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.
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
}