Mail - ptite erreur à débusquer

Icha
Invité n'ayant pas de compte PHPfrance

30 juin 2005, 15:39

j'ai un petit prolème avec ma fonction mail, j'ai fais des print et j'ai trouvé mon erreur mais je comprend pas pourquoi ça ne marche pas, je remerci déja d'avance ceux qui voudront bien m'éclairer.
Bien je vous montre :

//connection  à la base
include("Includes/base.php") ;

//variable pour destinataire :
$subject ="Sporting Production: Perte de mot de passe";
$pseudo= $_POST['pseudo'];

//récupération du mail et du mot de passe
$reqadress="select mail from users where user_name='$pseudo'";
$requeteadress= mysql_query($reqadress);

$reqpass="select password from users where user_name='$pseudo'";
$requetepass= mysql_query($reqpass);


$to = $requetepass;


$message = "
<html>
<head>
<title>Mot de passe</title>
</head>
<body>
<p>Bonjour ".$pseudo." </p>
Vous êtes priés de conserver cet e-mail dans vos archives. Les informations
suivantes concernent votre compte:
<br><br>
-----------------------------------------<br>
Votre Pseudo : ".$pseudo."<br>
Votre Mot de passe :".$requetepass."<br>
-----------------------------------------<br>
<br><br>
Conservez les pour accéder au sections protégées de notre site : <url>www.sporting-producion.com</url>
<br><br>
Amicalement<br>
Sporting Production


</body>
</html>";

$reqpseudo= "select user_name from users where user_name='$pseudo'";
$requetpseudo=mysql_query ($reqpseudo);
$pseudonumber =mysql_num_rows ($requetpseudo);

   if($pseudo=="")
    {
      echo "Vous n'avez pas saisi de nom d'utilisateur, veuillez recommencer.<br><br>";
      echo"<a href='mail.php' class='ex1'>Réesayer</a>";
      redirectionrelong ("mail.php");
    }
   else
          if ($pseudonumber>0)
            {
             //envoi du mail :
              mail($to, $subject, $message);
			  print $to;
			  print $subject;
			  print $message;
			  
			
              echo "Un E-Mail contenant votre identifiant et votre mot de passe vous a été envoyé sur votre adresse E-Mail <br><br> Merci de la consulter  ";
              //redirectionrelong  ("index.htm"); //DEMANDER VERIFICATION NOM	/EMPLACEMENT INDEX
            }
          else
	        {
	          echo " Le pseudo que vous avez tapé n'existe pas";
	          echo "<br><br>";
	          echo"<a href='mail.php' class='ex1'>Réesayer</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp";
	        }

?>
Mon erreur est au niveaux de ses deux requetes d'après mes print, parce que pour tout resultats de ses deux, j'ai un Resource id #6 à l'affichage :
$reqadress="select mail from users where user_name='.$pseudo.'";
$requeteadress= mysql_query($reqadress);

$reqpass="select password from users where user_name='.$pseudo.'";
$requetepass= mysql_query($reqpass);
Mon erreur doit être con mais je la trouve pas

VaN
Mammouth du PHP | 1107 Messages

30 juin 2005, 15:42

Si je m'abuse, les requetes SQL avec du php dedans c'est soit comme ça :
$reqadress="select mail from users where user_name="'.$pseudo.'""; 
$requeteadress= mysql_query($reqadress); 

$reqpass="select password from users where user_name="'.$pseudo.'""; 
$requetepass= mysql_query($reqpass); 
soit directement comme ça :
$reqadress="select mail from users where user_name='$pseudo'"; 
$requeteadress= mysql_query($reqadress); 

$reqpass="select password from users where user_name='$pseudo'"; 
$requetepass= mysql_query($reqpass); 
donc gaffe aux "

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

30 juin 2005, 15:45

VaN en est pas loin même si il y a des pb de syntaxes

en effet, le . est l'agent de concatenation PHP, si tu veux insérer des variable SQL dans une chaine, tu doit
- fermer la chaine
- concatener la variable
- ouvrir la chaine

tes requetes doivent donc s'écrire :
$reqadress="select mail from users where user_name='".$pseudo."'";
$requeteadress= mysql_query($reqadress);

$reqpass="select password from users where user_name='".$pseudo."'";
$requetepass= mysql_query($reqpass);
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

30 juin 2005, 15:55

Désolé si ma question et con mais je voudrais comprendre (je vous remerci déja pour vos éclaircissement)
mais lorsque j'ai fais ça :
$reqpseudo= "select user_name from users where user_name='$pseudo'";
$requetpseudo=mysql_query ($reqpseudo);
$pseudonumber =mysql_num_rows ($requetpseudo);
C'est très bien passé pour la comparaison à la base, et pourtant j'ai pas concaténé?


Oui mais non ça marche toujours pas

j'ai toujours mon Resource id #6 à la place de ses deux champs et j'ai en plus un mesage d'erreur

Code : Tout sélectionner

Warning: mail() expects parameter 1 to be string, resource given in f:\www\blabla\mailverif.php on line 77
Ligne qui correspond a mon mail()

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

30 juin 2005, 16:01

ca fonctionne même sans la concaténation mais je conseille de concatenation, c'est plus lisible (séparation chaine/variable) et ca évite des erreurs quand tu utilise des tableaux

Ensuite,c'est quoi l'erreur ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

30 juin 2005, 16:04

J'ai compris ton erreur :

au début du script, tu fait ça :
$reqpass="select password from users where user_name='$pseudo'";
$requetepass= mysql_query($reqpass);

$to = $requetepass; 
alors que tu devrais faire ça :
$reqpass="select password from users where user_name='$pseudo'";
$requetepass= mysql_query($reqpass);
$a_requete = mysql_fetch_array($requetepass);

$to = $a_requete["password"]; 
même si je doute de la conception vu que tu vas envoyer un mail au mot de passe de l'utilisateur :langue:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 104 Messages

30 juin 2005, 16:06

Salut,

Quand je lis :

$requetepass= mysql_query($reqpass);
$to = $requetepass;

... et ton message d'erreur je me dis que la solution au problème est grosse comme une maison mais j'ai 11/10 à l'oeil gauche alors forcément ça aide.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

30 juin 2005, 16:07

Désolé si ma question et con mais je voudrais comprendre (je vous remerci déja pour vos éclaircissement)
mais lorsque j'ai fais ça :
$reqpseudo= "select user_name from users where user_name='$pseudo'";
$requetpseudo=mysql_query ($reqpseudo);
$pseudonumber =mysql_num_rows ($requetpseudo);
C'est très bien passé pour la comparaison à la base, et pourtant j'ai pas concaténé?


Oui mais non ça marche toujours pas

j'ai toujours mon Resource id #6 à la place de ses deux champs et j'ai en plus un mesage d'erreur

Code : Tout sélectionner

Warning: mail() expects parameter 1 to be string, resource given in f:\www\blabla\mailverif.php on line 77
Ligne qui correspond a mon mail()
Pour ton second souci : il te dit que le 1er paramètre de la fonction mail (ce qui est juste après la parenthèse) doit être une chaîne de caractères.

Pour le 1er souci, tu as Resource id#6 car tu n'as pas traité les résultats de ta requête...il manque la boucle while qui va extraire les données.
$reqpass="select password from users where user_name='$pseudo'";
$requetepass= mysql_query($reqpass);
$to = $requetepass;


Tu mets les résultats dans $to...
regarde le tutorial sur PHP/MySQL
Attention : la variable $res ne contient pas les données elles-mêmes, mais seulement un pointeur permettant de retrouver vos données, à l'aide d'une autre fonction.

Il existe plusieurs fonctions permettant de recupérer ces données :
Modifié en dernier par mere-teresa le 30 juin 2005, 16:09, modifié 1 fois.
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Invité
Invité n'ayant pas de compte PHPfrance

30 juin 2005, 16:09

D'accord merci du renseignement

Il m'affiche correctement les champs message et pseudo, mais pour le mail du destinataire et le mot de passe il semble ne pas les trouvé j'ai toujorus ce ressource id...donc il m'envois pas mon mail puisqu'il ne semble pas trouver ses champs, d'ou je suppose l'ereur sur le mail($to, $subject, $message);

En clair mon print ressemble à un truc du genre :
Resource id #6 ( a la place de mon destinataire)
Perte de mot de passe
Bonjour youp

Vous êtes priés de conserver cet e-mail dans vos archives. Les informations suivantes concernent votre compte:

-----------------------------------------
Votre Pseudo : youp
Votre Mot de passe :Resource id #6
-----------------------------------------


Conservez les pour accéder au sections protégées de notre site : www.youp.com

Amicalement
Youp
Warning: mail() expects parameter 1 to be string, resource given in f:\www\sporting-production\mailverif.php on line 82
J'ai mis toute ma page dans mon premier post

Eléphant du PHP | 104 Messages

30 juin 2005, 16:09

Y'a pas à dire, Zeus est le plus rapide ! Tonnerre de Zeus !

Invité
Invité n'ayant pas de compte PHPfrance

30 juin 2005, 16:10

Olé j'avais pas vu toutes ses reponses, j'essaye tout ça et je vous dis

Merci

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

30 juin 2005, 16:10

Tes 2 problèmes sont liés.
Une fois que tu auras traité les résultats de ta requête (tu n'auras plus le pointeur mais les données dans ta variable) tu verras s'afficher le destinataire, comme par magie.

Clique donc sur le lien du tutorial
...et va au
4- Affichage des données
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

30 juin 2005, 16:11

@fggdm le truc qui m'impressionne moi, personnellement, tonerre de moi :langue:, c'est que en 3mn, j'ai eu le temps de relire mon post, relire le code, trouver l'erreur et rediger la solution :shock:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

30 juin 2005, 16:23

Clique donc sur le lien du tutorial
Je vais lire ça

Merci d'avoir pris le temps de me repondre tout le monde, ça marche maintenant :wink:

Passez une bonne fin de journée je retourne continuer mon boulot



[RESOLU]

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

30 juin 2005, 16:39

J'ai ouvert un autre post pour la suite
http://www.phpfrance.com/forums/voir_sujet-5192.php
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.