Rechercher : dans
Par :

[PHP/SQL] Requetes SQL et Boucle WHILE

Dernière réponse le 16 jui 2008 à 13:38:39 bmerklen, le 10 fév 2007 à 19:02:54 
 Signaler ce message aux modérateurs

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 :-)
Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « [PHP/SQL] Requetes SQL et Boucle WHILE » dans :
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
Le langage SQL VoirQu'appelle-t-on SQL? SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage de définition de données (LDD, ou en anglais DDL Data Definition Language), un langage de manipulation de données (LMD, ou en anglais DML,...
PHP - Structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1...
SQL - Tri VoirTri des résultats Il est possible en SQL d'organiser les résultats grâce à la clause ORDER BY. La clause ORDER BY est suivie des mots clés ASC ou DESC, qui précisent respectivement si le tri se fait de manière croissante (par défaut) ou...

1

aminega1, le 17 jun 2008 à 17:07:35

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.

Répondre à aminega1

2

 Absinthe06, le 16 jui 2008 à 13:38:39

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 ;))

Répondre à Absinthe06
Collection CommentÇaMarche.net