[PHP/SQL] Requetes SQL et Boucle WHILE

Fermé
bmerklen Messages postés 6 Date d'inscription samedi 10 février 2007 Statut Membre Dernière intervention 10 juin 2012 - 10 févr. 2007 à 19:02
Absinthe06 Messages postés 102 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 7 juillet 2010 - 16 juil. 2008 à 13:38
Bonjour,

Je veux récupérer des emails contenus dans un fichier texte et introduire ces emails dans des requètes SQL pour les traiter..

Voila ma procédure:
$fp = fopen("$fichier", "r"); // On ouvre le fichier

while (!feof($fp)) 
{ 
$ligne = fgets($fp,255); // On récupère les lignes du fichier (les emails..)

mysql_query("UPDATE members SET email=NULL WHERE email='$ligne' ");

echo $ligne.'<br />';
}


Mon problème est que cela ne marche pas.. les emails ne sont pas supprimés de ma BDD (Base de Données).

J'ai vérifié à coté, les requetes SQL sont bien formulées.
La connection à la BDD se fait bien.

Voila les symptomes:
- lorsque le dernier des emails contenus dans le fichier est présent dans ma BDD, il est bien supprimé ! mais pas les autres.. En revanche, si je renouvelle l'opération avec le meme fichier, cela ne marche plus.. (car le dernier email a déjà été supprimé..)
- la boucle while explore bien toutes les lignes, car cela m'affiche bien tout les emails..

Visiblement, il ne traite pas toutes les requetes SQL..

Y'a t'il une raison ? Qqn aurait la solution ?

Merci de votre aide :-)

2 réponses

Absinthe06 Messages postés 102 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 7 juillet 2010 11
16 juil. 2008 à 13:38
Salut a toi bmerklen,

pour ton probleme, j'ai une hypothese toute simple : la fonction fgets renvoie la TOTALITE d'une ligne d'un fichier, jusqu'a rencontrer un retour a la ligne (caractere \n). Le probleme justement, c'est qu'il te renvoie le \n avec !! Donc dans ta comparaison entre le champ de la BD et la variable $ligne, tu te retrouves avec un caractere en trop (sauf pour la derniere ligne du fichier, ce qui explique que c'est la seule supprimée). Il faudrait que tu rajoutes un petit élement dans ton code :

$fp = fopen("$fichier", "r"); // On ouvre le fichier

while (!feof($fp)) 
{ 
$ligne = fgets($fp,255); // On récupère les lignes du fichier (les emails..)
$new_ligne = substr($ligne, 0, strlen($ligne-2));

mysql_query("UPDATE members SET email=NULL WHERE email='$new_ligne' ");

echo $ligne.'<br />';
}



ATTENTION, je suis pas sur pour strlen($ligne - 2), si jamais ca marche pas essaye avec - 1, et la ca marchera (sinon je veut bien me faire moine ;))
2
aminega1 Messages postés 17 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 13 octobre 2008 2
17 juin 2008 à 17:07
Salut,
Essaie ce site là dedans tu trouveras tout conçernant PHP & MySQL. Je te conseille de télécharger la documentation en français puis tu sera guidé dans les autres documentations et livres en anglais.
http://hannibalwebmaster.ifrance.com
puis clique sur la rubrique documentation et aprés sur logiciel.
J'espére que tu trouveras tout ce que t'en as besoin.
0