PHP - inserer des mails d'un fichier texte à

tarik -  
 tarik -
Bonjour,a tous

J’ai un script pour insérer des données provenant d'un fichier texte dans ma base de données.
Mais il me ramène un bug que je ne sais comment résoudre.
Voici mon code :
<? php
include('connect.php');
if (!$fp = fopen("mail.txt","r"))//mail.txt est un fichier text qui contient l'ensemble des enregistrement
{
echo "Echec de l'ouverture du fichier";
exit;
}
else
{
while(!feof($fp))
{
// On récupère une ligne
$Ligne = fgets($fp,255);

// On affiche la ligne
echo $Ligne;
$sql="insert into lettre (email) values ('$Ligne')";
$res=mysql_query($sql) or die( "Echec de selection" );
$tot=mysql_num_rows($res) or die( "Echec de selection2" );

}

echo " $tot mails ont été insérés dans la base";


fclose($fp); // On ferme le fichier
}

?>

Puis le message kil me ramène :

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampplite\htdocs\testons_recuperation_mail\inser.php on line 27
Echec de selection2



Si quelqu'un peut m'aider il me sauvera la vie !!
Merci infiniment d'avance
A voir également:

4 réponses

Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Bonsoir:

mysql_num_rows ( resource result )

Récupère le nombre de lignes d'un jeu de résultat. Cette commande n'est disponible que pour les requêtes SELECT. Pour récupérer le nombre de lignes affectées par une requête INSERT, UPDATE ou DELETE, utilisez la fonction mysql_affected_rows
0
tarik
 
oui, j'ai utilisez la fonction mysql_affected_rows.
mais j'ai toujours un message d'erreur:

Warning: mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource in C:\xampplite\htdocs\testons_recuperation_mail\inser.php on line 27
Echec de selection2
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894 > tarik
 
Ce message veut dire que l'erreur est dans la ou les lignes avant

la ressource retournée par la requête n'est pas explotable

$sql="insert into lettre (email) values ('$Ligne')";
$res=mysql_query($sql) or die( "Echec de selection" );


essayes pour voir:

$sql="insert into lettre (email) values ('$Ligne')";
$res=mysql_query($sql) or die( "Echec de selection" ); 
echo "Retour requete: ".$res;
0
tarik
 
il fonction bien lorske j'utilise :
echo "Retour requete: ".$res;
0
mistu17 Messages postés 97 Date d'inscription   Statut Membre Dernière intervention   18
 
Bonjour,

En cherchant sur différents site, ils ne passent aucun paramètre aux fonctions mysql_num_row() ou mysql_affected_row().

A essayer !
0
tarik > mistu17 Messages postés 97 Date d'inscription   Statut Membre Dernière intervention  
 
ok sa marche.
mais il me ramené un message me disant:
1 mails ont été insérés dans la base
pourtant j'ai insérer plus de 30 mail qui trouve dans ma base de donnée
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
C'est normal, tu as une erreur de principe, a chaque boucle d'écriture du mail dans la base tu charges la variable $tot, ce qui écrase a chaque fois avec mysql_affected_rows() qui vaut 1

il faut ajouter à chaque boucle comme ça:

<?php
include('connect.php');
if (!$fp = fopen("mail.txt","r"))//mail.txt est un fichier text qui contient l'ensemble des enregistrement
{
echo "Echec de l'ouverture du fichier";
exit;
}
else
{
//init variable $tot
$tot=0;
while(!feof($fp))
{
// On récupère une ligne
$Ligne = fgets($fp,255);

// On affiche la ligne
echo $Ligne;
$sql="insert into lettre (email) values ('$Ligne')";
$res=mysql_query($sql) or die( "Echec de selection" );
$tot = $tot + mysql_affected_row(); //le paramettre est le link, si rien c'est celui par defaut, donc tu n'en mets pas

}

echo " $tot mails ont été insérés dans la base";


fclose($fp); // On ferme le fichier
}

?>
0
tarik
 
ok, sa marche a merveille.
mais ma dernier préoccupation es de pouvoir insérer dans ma bd après analyse ke les mails ki ont une bonne sémantique de l'e-mail puis vérifier a chaque ";" considérer le mail suivant comme une nouvelle entrer.
merci
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Vas voir sur G.. il existe plein de bouts de scripts php pour vérifier l'adresse mail
0
tarik
 
ok merci bocou a vous
0