PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 03-03-2010 00:30:42

floriangendrot
Membre
Inscription : 03-03-2010
Messages : 11

Envoi de formulaire inscription foireux [pour un newbie]Merci d'avance

Bonjour,
Premier post sur ce forum, qui je crois va m'apporter beaucoup à l'avenir.
Je viens donc exposé en bon débutant un problème qui peut s'avérer facile pour les initiés mais qui est difficile pour un néophyte dans mon genre.
PROBLEME : J'essai de faire fonctionner un formulaire d'inscription à une newsletter.
Il fonctionne de la facon suivante :
- 1 si les champs sont remplis, 2 on verifie que les deux mails sont identiques, 3 si l'utilisateur (mail) existe deja dans la base de donnee > message d'erreur, si il n'existe pas on l'insert dans la BDD.
Il semble que l'erreur se situe au niveau de la 3eme etape.

Merci d'avance de votre aide.
Voici le code :

<?php
// si tout les champs sont remplis on continu
if (!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['courriel']) && !empty($_POST['verification_courriel'])){

  //si les deux courriels sont identiques on continu
  if ($_POST['courriel'] == $_POST['verification_courriel']){
    $courriel = $_POST['courriel'];
    //on parcours l'ensemble des courriel pr voir si l'adresse existe deja
    $retour = mysql_query("SELECT COUNT(*) FROM newsletter WHERE courriel = '$courriel'");
    if(mysql_num_rows($retour) > 0){
      //le compte existe
      echo 'Impossible d\'ajouter ce compte, il existe dejà dans la BDD';}
    //si le compte n'existe pas on l'insert
    else{
      mysql_query("INSERT INTO newsletter VALUES('', '" . $_POST['nom'] . "', '" . $_POST['prenom'] . "',  '" . $_POST['courriel'] . "', '" . '1' . "', '" . time() . "')");
      echo "L'inscription s'est bien déroulée";}

  }else{echo 'Vos deux mails diffèrent, il faut saisir les mêmes courriels, vérifiez cette information';}
}else{echo 'Veuillez remplir tous les champs';}
?>

Hors ligne

#2 03-03-2010 00:56:51

floriangendrot
Membre
Inscription : 03-03-2010
Messages : 11

Re : Envoi de formulaire inscription foireux [pour un newbie]Merci d'avance

Petit complément d'information : je copie colle ce a quoi ressemble la table…

CREATE TABLE `newsletter` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nom` varchar(50) NOT NULL,
  `prenom` varchar(50) NOT NULL,
  `courriel` varchar(70) NOT NULL,
  `inscrit` tinyint(1) NOT NULL,
  `timestamp` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8

Hors ligne

#3 03-03-2010 01:52:35

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Envoi de formulaire inscription foireux [pour un newbie]Merci d'avance

[code : php]
<?php
// si tout les champs sont remplis on continu
if (!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['courriel']) && !empty($_POST['verification_courriel'])){
    if ($_POST['courriel'] == $_POST['verification_courriel']){ //si les deux courriels sont identiques on continu
        $courriel = $_POST['courriel'];
        //on parcours l'ensemble des courriel pr voir si l'adresse existe deja
        if(current(mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM newsletter WHERE courriel = '$courriel'"))) > 0){
            //le compte existe
            echo "Impossible d'ajouter ce compte, il existe déjà dans la BDD";
        }
        else{ //si le compte n'existe pas on l'insert
            mysql_query("INSERT INTO newsletter VALUES(NULL,'{$_POST['nom']}=','{$_POST['prenom']}=','{$_POST['courriel']}', '1' , time()") or die ("Erreur : " . mysql_error());
            echo "L'inscription s'est bien déroulée";
        }
    }
    else{
        echo 'Vos deux mails diffèrent, il faut saisir les mêmes courriels, vérifiez cette information';
    }
}else{
    echo 'Veuillez remplir tous les champs';
}
?>
[/code]

çà devrai fonctionner wink

a++

Dernière modification par Pierrot (03-03-2010 03:10:38)

Hors ligne

#4 03-03-2010 02:12:29

floriangendrot
Membre
Inscription : 03-03-2010
Messages : 11

Re : Envoi de formulaire inscription foireux [pour un newbie]Merci d'avance

Bonsoir,
Merci de ton aide.
J'ai testé ton script, ca ne fonctionne pas chez moi !
Petite question : que veut dire : '{$_POST['nom']=' est-ce une autre manière d'insérer ?
Ne peut on pas le faire autrement qu'avec un countrow pour facilitere les choses ?


J'ai effectué quelques autres tests
$retour = mysql_query("SELECT COUNT(*) AS courriel FROM newsletter WHERE courriel = '$courriel'"); > me retourne 'Resource id #10 ' quand j'execute le script dans wamp
SELECT COUNT(*) AS courriel FROM newsletter WHERE courriel = '$courriel' > me retourne ce que j'attend (a savoir un nombre) quand j'execute directement en sql depuis mon gestionnaire de base de donnée
A noter que ces test ont été fait avec un texte fixe et non la variable $courriel wink

>> partant de la, ou est le probleme
>> que veut dire Resource id #10 ??
>> pourquoi deux réponse pour la meme requete

A bientot
florian

Dernière modification par floriangendrot (03-03-2010 02:48:31)

Hors ligne

#5 03-03-2010 03:13:28

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Envoi de formulaire inscription foireux [pour un newbie]Merci d'avance

j'ai modifié wink
a++

Hors ligne

#6 03-03-2010 03:19:32

floriangendrot
Membre
Inscription : 03-03-2010
Messages : 11

Re : Envoi de formulaire inscription foireux [pour un newbie]Merci d'avance

Merci de ton aide Pierrot, j'ai trouvé une solution entre temps… l'erreur se située au niveau de ma requete
Jolie nuit blanche, merci php

extrait de code suffisant a la compréhension :

  $retour = mysql_query("SELECT COUNT(*) AS[b] nbre_entree[/b] FROM newsletter WHERE courriel = '$courriel'");
    $donnees = mysql_fetch_array($retour);
    $NombreEntree = [b]$donnees['nbre_entree'];[/b]
   

   
  if($NombreEntree  > 0){
      //le compte existe
      echo 'Impossible d\'ajouter ce compte, il existe dejà. Vous pouvez vous inscrire avec une autre adresse mail';

Comment marquer que le pb est résolu ?

Dernière modification par floriangendrot (03-03-2010 03:21:51)

Hors ligne

Pied de page des forums