Besoin d'aide pour script php

Fermé
paulo93700 Messages postés 35 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 21 décembre 2008 - 21 févr. 2008 à 01:37
paulo93700 Messages postés 35 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 21 décembre 2008 - 23 févr. 2008 à 03:49
Bonjour,

Mon problème est le suivant :
Je travaille sur deux page ;
Une page d’inscription (email nom mot de passe…)
Sur ma base de donné, email est désigné comme clé primaire
Quand une personne s’inscrit la deuxième page affiche sa suite de l’inscription ;
Mais si la personne s’inscrit avec une adresse déjà présente dans ma table de BDD
Je voudrais que sur la deuxième page il soi affiché …email déjà utiliser…

Mon script :


<?php //envoi des donnés du formulaire précédent dans la BDD
$email =($_POST['email']);
$mdp =($_POST['mdp']);
$nom =($_POST['nom']);
$type =($_POST['type']);

// conection a la base de donné
mysql_connect("localhost", "root", "");
mysql_select_db("clic-un-club");

// on enregistre le message
mysql_query("INSERT INTO prospect VALUES('$email','$mdp','$nom','$type')");

//on ferme la BDD
mysql_close();

?>



<?php // si e-mail existe déja
mysql_connect("localhost", "root", "");
mysql_select_db("clic-un-club");
$reponse = mysql_query("SELECT * FROM prospect");

while ($donnees = mysql_fetch_array($reponse))

if ($donnees['e-mail'] == $email) //si il existe une email identique sur la BDD
{
echo "email déjà utiliser";
}
else // sinon
{
echo "suite de l'inscription";
}

// Déconnexion de MySQL
mysql_close();
?>


Pouvez-vous m’aider SVP sa me serait très utile par ce que je me creuse la tête mais sa marche pas
MERCI :)
A voir également:

5 réponses

a mon avis tu devrait modifié ton deuxième script, avec ça ça devrait mieux marché.
<?php // si e-mail existe déjà
mysql_connect("localhost", "root", "");
mysql_select_db("clic-un-club");
$reponse = mysql_query("SELECT * FROM prospect where e-mail='".$email."'");

if (mysql_num_rows($reponse)) //si il existe une email identique sur la BDD
{
echo "email déjà utiliser";
}
else // sinon
{
echo "suite de l'inscription";
}

// Déconnexion de MySQL
mysql_close();
?>

Au lieux de vérifié si il existe un email pareille dans la bdd tu regarde combien il en existe de pareille, et si il n'y en a au moins un tu dit que l'email est déjà utilisé.
0
paulo93700 Messages postés 35 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 21 décembre 2008 1
21 févr. 2008 à 17:20
Je te remercie Galoo ;
Mais il y a un souci apparemment :

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\wamp\www\Clic-un-club.com\envoi.php on line 43
suite de l'inscription

Sur la ligne:
if (mysql_num_rows($reponse))

Je ne voie pas vraiment le problème
(en même temps je suis qu’un débutant)

script:

<?php // si e-mail existe déjà
mysql_connect("localhost", "root", "");
mysql_select_db("clic-un-club");
$reponse = mysql_query("SELECT * FROM prospect where e-mail='".$email."'");

if (mysql_num_rows($reponse)) //si il existe une email identique sur la BDD
{
echo "email déjà utiliser";
}
else // sinon
{
echo "suite de l'inscription";
}

// Déconnexion de MySQL
mysql_close();
?>


Merci d'avance pour vos réponse
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 févr. 2008 à 18:41
Bonsoir,

Il y a des grosses erreurs dans cette partie:
if (mysql_num_rows($reponse)) //si il existe une email identique sur la BDD
{
echo "email déjà utiliser";
}
else // sinon
{
echo "suite de l'inscription";
}


On ne met pas les commentaires entre la fonction et { !!!!

Ensuite qu'il y ait des résultats correpondants au mail ou pas mysql_num_rows sera toujours true (même égal à 0)

Alors essayes:

if (mysql_num_rows($reponse)>0){ //si il existe une email identique sur la BDD
	echo "email déjà utilisé";
}
else{ // sinon   (même remarque)
	echo "suite de l'inscription";
} 
0
cwadmin Messages postés 9 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 22 février 2008 > Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017
21 févr. 2008 à 18:58
personnellement alain , le script que j'ai fournit en bas de page est en parfait état de fonctionnement, même tester ... j'avé un peu de temps devant moi ^^

Alors pour les commentaires entre les fonctions oui c'est pas propre mais sa marche, sa n'a rien à voir.

L'histoire du mysqlnumrow qui est toujours true c'est totallement faux ... si tu cale un mysqlfetchassoc entre deux.

voilà ... bref ... et pour une tel réponse t'aurai pu répondre à la suite du topic comme moi je l'ai fais ^^ au lieu de casser l'ordre des réponses :P
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894 > cwadmin Messages postés 9 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 22 février 2008
21 févr. 2008 à 20:51
He bien y a du boulot !
0
cwadmin Messages postés 9 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 22 février 2008
21 févr. 2008 à 18:05
ton problème est simple paulo, tu ne peux pas mettre directement mysqlnumrow sur une variable utilisant mysqlquery ... par exemple tu fais passer ta variable $reponse dans un mysql_fetch_assoc puis tu le stocke dans une autre variable.

Tien voilà à quoi devrai ressembler ton script ...

<?php // si e-mail existe déjà

//ID SQL//
mysql_connect("localhost", "root", "");
mysql_select_db("clic-un-club");
//Fin//

//Requete//
$reponse = mysql_query("SELECT * FROM prospect where e-mail='".$email."'");
$reponse_assoc = mysql_fetch_assoc($reponse);
//Fin//

if ($reponse_assoc) //si il existe une email identique sur la BDD
{
echo "email déjà utiliser";
}
else // sinon
{
echo "suite de l'inscription";
}

// Déconnexion de MySQL
mysql_close();
?>

voilà je pense que sa devrait marcher ;)
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 févr. 2008 à 21:55
ton problème est simple paulo, tu ne peux pas mettre directement mysqlnumrow sur une variable utilisant mysqlquery
En es tu certain ??


Extrait du site www.php.net

Example#1 Exemple avec mysql_num_rows()

<?php

$link = mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db("database", $link);

$result = mysql_query("SELECT * FROM table1", $link);
$num_rows = mysql_num_rows($result);

echo "$num_rows Rows\n";

?>

0
cwadmin Messages postés 9 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 22 février 2008 > Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017
22 févr. 2008 à 11:06
Ben quoi tu crée une variable $num_rows qui utilise mysqlnumrows sur une variable ($result) utilisant utilisant mysqlquery, cette exemple c'est exactement ce que j'ai dit ...
0
paulo93700 Messages postés 35 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 21 décembre 2008 1
22 févr. 2008 à 00:13
Ree ;
J’ai testé toute les solutions que vous m’avait données et encor merci pour vos réponses 
La solution du commentaire numéro 3 : par cwadmin,
Elle a un problème au niveau de la ligne :



<?php // si e-mail existe déjà

//ID SQL//
mysql_connect("localhost", "root", "");
mysql_select_db("clic-un-club");
//Fin//

//Requete//
$reponse = mysql_query("SELECT * FROM prospect where e-mail='".$email."'");
$reponse1 = mysql_fetch_assoc($reponse);
//Fin//

if ($reponse1) //si il existe une email identique sur la BDD
{
echo "email déjà utiliser";
}
else // sinon
{
echo "suite de l'inscription";
}

// Déconnexion de MySQL
mysql_close();
?>



SA me die:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\wamp\www\Clic-un-club.com\envoi.php on line 47
suite de l'inscription

Pouvez vous m’éclairé SVP?
Merci beaucoup .
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
22 févr. 2008 à 10:00
Bonjour,

Dans ton premier post tu mets:

Une page d’inscription (email nom mot de passe…)
Sur ma base de donné, email est désigné comme clé primaire


Donc j'en déduit que le nom de ton champ email dans ta table est email, et dans ta requette tu mets e-mail=

ça ne peut pas fonctionner et comme tu n'as pas mis de trace d'erreur tu ne t'en rend compte que pour la commande suivante.
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource Veut dire que la resource $reponse n'est pas valide a cause du pb ci dessus.

S'il te plait essayes au moins cette solution:

<?php 
//recupération de la valeur postée
$email=$_POST['email']; // si le champ correspondant de ton formulaire est bien email sinon modifies
// connexion à la base
mysql_connect("localhost", "root", "") or die ("Pb connexion au serveur Mysql ".mysql_error());
mysql_select_db("clic-un-club") or die ("Pb selection base Mysql ".mysql_error());

//Requete
$req="SELECT * FROM prospect WHERE email='".$email."'";
$reponse = mysql_query($req) or die ("Pb de requette ".mysql_error());
// Déconnexion de MySQL    // oui on peut déja se deconnecter de mysql
mysql_close();

//les résultats de la requette sont stockés en mémoire dans une zone spécifique, on y accéde pour des commdes mysql_...., c'est un peu comme un array
// comme mysql_num_rows() =nbr de resultats  mysql_field_name ()=noms des champs   mysql_fetch_array() = sort chaque ligne sous forme d'un array et déplace le pointeur sur la ligne suivante
//pour t'en conforter vas voir le site:  https://www.php.net/manual/fr/ref.mysql.php

// test si e-mail existe déjà
//ce qui nous interresse c'est de savoir si on a en a trouvé un
//et je persiste et signe on peut tout a fait faire mysql_num_rows () juste après mysql_query()
if(mysql_num_rows($reponse)>0){
	//si il existe une email identique sur la BDD
	echo "email déjà utilisé";
}else{
	// sinon
	echo "suite de l'inscription";
}
?>
0
cwadmin Messages postés 9 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 22 février 2008
22 févr. 2008 à 11:23
oui le problème si situe au niveau de la variable $email (c'est pas mon script) ... ce qui crée une erreur dans ta requête ... donc pour résumer ...

-vérifie si ta requête sql est correcte (bonne table, bon sa sa doit être bon ; les champs de ta table par exemple ici : e-mail)
-vérifie si tu n'a pas oublié de mettre la variable $email avant le script ... même affiche le (echo) pour être sur qu'il récupère correctement les data via le post.

Au pire si sa marche pas avec mon bout de script ce que je doute, essaye celui d'alain ... il à l'air d'avoir pris le temps de te pondre un script complet avec les débuggeur sql en die.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
paulo93700 Messages postés 35 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 21 décembre 2008 1
23 févr. 2008 à 03:49
J'ai réussi !!! MERCI A VOUS !!!


<?php

//recupération de la valeur postée
$email =($_POST['email']);
$mdp =($_POST['mdp']);
$nom =($_POST['nom']);
$type =($_POST['type']);

// connexion à la base
mysql_connect("localhost", "root", "") or die ("Pb connexion au serveur Mysql ".mysql_error());
mysql_select_db("clic-un-club") or die ("Pb selection base Mysql ".mysql_error());

//Requete
$req="SELECT * FROM prospect WHERE email='".$email."'";
$reponse = mysql_query($req) or die ("Pb de requette ".mysql_error());
// Déconnexion de MySQL // oui on peut déja se deconnecter de mysql
mysql_close();

if(mysql_num_rows($reponse)>0){ //si il existe une email identique sur la BDD

echo "email déjà utilisé";
}
else{ // sinon

echo

"Validation de votre inscription </p>
Email:$email
</p>
Mot de Passe:$mdp
</p>
Nom du contact:$nom
</p>
Type de structure:$type"
;
}

?>



J'ai réussi !!! MERCI A VOUS !!!
0