IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

système de parrainage [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 59
    Points : 18
    Points
    18
    Par défaut système de parrainage
    Salut à tous,

    J'ai mis un système de parrainage sur mon site, à l'inscription il y a un champ "Pseudo du parrain" qui est obligatoire pour l'inscription, si le pseudo du parrain est un vrai pseudo après vérification dans la BDD, ça ajoute 100 crédits au Pseudo du parrain et ça inscrit le nouvel utilisateur mais si le pseudo du parrain n'existe pas dans la BDD, ça dit "Ce parrain n'existe pas" et ça n'ajoute pas 100 crédits au parrain.

    Mais il y a un problème, quand je m'inscris sur mon site avec un pseudo de parrain qui existe, ça n'ajoute pas l'utilisateur à la BDD et ça dit "Ce parrain n'existe pas" alors qu'il existe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    <?php
    	include('includes/header.php');
    	if(connecte())
    	{ // il est connecté
     
    ?>
     
    	<p>Vous êtes déjà connéctés - Impossible de vous inscrire une seconde fois !</p>
     
    <?PHP
    	} 
    	elseif(!connecte() AND isset($_POST['valider'])) { // il est pas connécté et a validé le formulaire
     
    		$erreur = array();
     
    		if (empty($_POST['pseudo'])) 
    		{
    		   $erreur[] = 'Le champ Pseudo ne doit pas être vide.';
    		}
     
    		if (empty($_POST['mdp'])) 
    		{
    		   $erreur[] = 'Le champ Mot de passe ne doit pas être vide.';
    		}
     
    		if ($_POST['mdpConfirm'] != $_POST['mdp']) 
    		{
    		   $erreur[] = 'Les deux motes ne passe ne sont pas identiques.';
    		}
     
    		if (empty($_POST['email'])) 
    		{
    		   $erreur[] = 'Le champ Email ne doit pas être vide.';
    		}
     
    		if (empty($_POST['parrain'])) 
    		{
    		$erreur[] = 'Le champ parrain ne doit pas être vide.';
    		}
     
    		if (!count($erreur)) 
    		{
     
    			$pseudo = securiserVariable($_POST['pseudo']);
    			$mdp = HoloHash($_POST['mdp']);
    			$email = securiserVariable($_POST['email']);
    			$ip = $_SERVER['REMOTE_ADDR'];
     
    			$retour = mysql_query("SELECT COUNT(*) AS nbreEntrees FROM users WHERE pseudo='".$pseudo."'");
    			$donnees = mysql_fetch_array($retour);
    			if($donnees['nbreEntrees'] <= 0)
    			{
    				$creditsAjouter = 100; // Nombre de crédits à ajouter
     
    				$reponse= mysql_query("SELECT COUNT(*) AS pseudo FROM users WHERE pseudo='".mysql_real_escape_string($_POST['parrain'])."'");
     
    				{
    					echo "Ce parrain n'existe pas!";
    				}
     
    				if($reponse == 1)
    				{
    					mysql_query("UPDATE users SET nbrCredits = nbrCredits + $creditsAjouter WHERE pseudo = '".mysql_real_escape_string($_POST['parrain'])."'"); // On met à jour le nombre de crédits du parrain
    					mysql_query("INSERT INTO users VALUES ('','".$pseudo."','".$mdp."','".$email."','".$ip."','','')");	
     
    					echo 'L\'inscription s\'est déroulée avec succès, vous pouvez maintenant vous connecter.';
    					}
    			}
    			else 
    			{ // Le pseudo n'existe pas donc c'est un pseudo bidon
     
    				$erreur[] = 'Ce pseudo est déjà pris par une autre personne';
    			}
     
    		}
    		else 
    		{
     
    			$nbrErreur = count($erreur);
    			echo '<h3>Il y a '.$nbrErreur.' détectés.</h3>';
    			 echo '<h3>Liste des erreurs :</h3><ul>';
    			 foreach($erreur as $erreur) echo "<li>$erreur</li>";
    			 echo '</ul>';
    			 echo'Merci de re-remplir le formulaire.';
    			 echo'
    			 <br/>
    			 <br/>
    			<form method="post">
    			<fieldset>
    			<legend>Inscription - MaxComs</legend>
    		
    			<label for="pseudo">Pseudo :</label>
    			<input type="text" value="" id="pseudo" name="pseudo"/>
    			<br/>
    			<br/>
    
    			<label for="mdp">Mot de passe :</label>
    			<input type="password" value="" id="mdp" name="mdp"/>
    			<br/>
    			<br/>
    
    			<label for="mdpConfirm">Mot de passe (confirm) :</label>
    			<input type="password" value="" id="mdpConfirm" name="mdpConfirm"/>
    			<br/>
    			<br/>	
    			
    			<label for="email">Votre Email</label>
    			<input type="text" value="" id="email" name="email"/>
    			<br/>
    			<br/>
    			
    			<label for="parrain">Pseudo du parrain :</label>
    			<input type="text" value="" id="parrain" name="parrain"/>
    			<br/>
    			<br/>
    			
    			<label for="valider">&nbsp;</label>
    			<input type="submit" name="valider" value=" Valider l\'inscription "/>
    			<br/>
    			<br/>
    			
    			</fieldset>
    			</form>';
    		}
     
     
    	} 
    	else 
    	{ // il est pas connécté et n'a pas validé le formulaire
    ?>
     
    		<p>Voici ci-dessous le formulaire d'inscription à Maxcoms.</p>
    		<p><br><b>Merci de remplir tous les champs (il sont tous obligatoire) !<br><br>
    		</form><fieldset>
    		<legend><b>ATTENTION :</b></legend>Il est obliger de donnez le pseudo du parrain, c'est à dire le pseudo de la personne qui vous a fais connaître ce site !</fieldset></b></p>
     
    		<form method="post">
    		<fieldset>
    		<legend>Inscription - MaxComs</legend>
     
    		<label for="pseudo">Pseudo :</label>
    		<input type="text" value="" id="pseudo" name="pseudo"/>
    		<br/>
    		<br/>
     
    		<label for="mdp">Mot de passe :</label>
    		<input type="password" value="" id="mdp" name="mdp"/>
    		<br/>
    		<br/>
     
    		<label for="mdpConfirm">Mot de passe (confirmation) :</label>
    		<input type="password" value="" id="mdpConfirm" name="mdpConfirm"/>
    		<br/>
    		<br/>	
     
    		<label for="email">Votre Email :</label>
    		<input type="text" value="" id="email" name="email"/>
    		<br/>
    		<br/>
     
    		<label for="parrain">Pseudo du parrain :</label>
    		<input type="text" value="" id="parrain" name="parrain"/>
    		<br/>
    		<br/>
     
    		<label for="valider">&nbsp;</label>
    		<input type="submit" name="valider" value=" Valider l'inscription "/>
    		<br/>
     
     
    <?php
    	}
     
    	include('includes/footer.php');
    ?>
    Merci beaucoup !
    Dorian.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu n'as mis aucune condition pour l'affichage de "Ce parrain n'existe pas", tu as juste des { } dans le vide.

    De plus mysql_query() ne retourne pas le resultat du COUNT, il faut utiliser une fonction comme mysql_fetch_assoc pour lire le résultat.

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Il est bourré de fautes logiques ton code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $reponse= mysql_query("SELECT COUNT(*) AS pseudo FROM users WHERE pseudo='".mysql_real_escape_string($_POST['parrain'])."'");
     
    				{
    					echo "Ce parrain n'existe pas!";
    				}
     
    				if($reponse == 1)
    				{//...
    comment veux-tu que cela fonctionne ?

    EDIT arf grillé par Sabotage

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 59
    Points : 18
    Points
    18
    Par défaut Reponse
    Merci de vos réponse,

    Mais en faite je suis débutant et cela fais 1 mois que je suis sur cette page d'inscription que je n'arrive pas à faire marcher que faut-il faire pour qu'elle marche sans problème SVP ?

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    , il faut utiliser une fonction comme mysql_fetch_assoc pour lire le résultat de ton COUNT

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 59
    Points : 18
    Points
    18
    Par défaut reponse
    Je l'ai fais mais toujours le même problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    <?php
    	include('includes/header.php');
    	if(connecte())
    	{ // il est connécté
     
    ?>
     
    	<p>Vous êtes déjà connéctés - Impossible de vous inscrire une seconde fois !</p>
     
    <?PHP
    	} 
    	elseif(!connecte() AND isset($_POST['valider'])) { // il est pas connécté et a validé le formulaire
     
    		$erreur = array();
     
    		if (empty($_POST['pseudo'])) 
    		{
    		   $erreur[] = 'Le champ Pseudo ne doit pas être vide.';
    		}
     
    		if (empty($_POST['mdp'])) 
    		{
    		   $erreur[] = 'Le champ Mot de passe ne doit pas être vide.';
    		}
     
    		if ($_POST['mdpConfirm'] != $_POST['mdp']) 
    		{
    		   $erreur[] = 'Les deux motes ne passe ne sont pas identiques.';
    		}
     
    		if (empty($_POST['email'])) 
    		{
    		   $erreur[] = 'Le champ Email ne doit pas être vide.';
    		}
     
    		if (empty($_POST['parrain'])) 
    		{
    		$erreur[] = 'Le champ parrain ne doit pas être vide.';
    		}
     
    		if (!count($erreur)) 
    		{
     
    			$pseudo = securiserVariable($_POST['pseudo']);
    			$mdp = HoloHash($_POST['mdp']);
    			$email = securiserVariable($_POST['email']);
    			$ip = $_SERVER['REMOTE_ADDR'];
     
    			$retour = mysql_query("SELECT COUNT(*) AS nbreEntrees FROM users WHERE pseudo='".$pseudo."'");
    			$donnees = mysql_fetch_array($retour);
    			if($donnees['nbreEntrees'] <= 0)
    			{
    				$creditsAjouter = 100; // Nombre de crédits à ajouter
     
    				$reponse= mysql_fetch_assoc("SELECT COUNT(*) AS pseudo FROM users WHERE pseudo='".mysql_real_escape_string($_POST['parrain'])."'");
     
    				if($reponse == 1)
    				{
    					mysql_query("UPDATE users SET nbrCredits = nbrCredits + $creditsAjouter WHERE pseudo = '".mysql_real_escape_string($_POST['parrain'])."'"); // On met à jour le nombre de crédits du parrain
    					mysql_query("INSERT INTO users VALUES ('','".$pseudo."','".$mdp."','".$email."','".$ip."','','')");	
     
    						echo 'L\'inscription s\'est déroulée avec succès, vous pouvez maintenant vous connecter.';
    				} 
    				else 
    				{
    					echo "Ce parrain n'existe pas!";
    				}	
    			}
    			else 
    			{ // Le pseudo n'existe pas donc c'est un pseudo bidon
     
    				$erreur[] = 'Ce pseudo est déjà pris par une autre personne';
    			}
     
    		}
    		else 
    		{
     
    			$nbrErreur = count($erreur);
    			echo '<h3>Il y a '.$nbrErreur.' détectés.</h3>';
    			 echo '<h3>Liste des erreurs :</h3><ul>';
    			 foreach($erreur as $erreur) echo "<li>$erreur</li>";
    			 echo '</ul>';
    			 echo'Merci de re-remplir le formulaire.';
    			 echo'
    			 <br/>
    			 <br/>
    			<form method="post">
    			<fieldset>
    			<legend>Inscription - MaxComs</legend>
    		
    			<label for="pseudo">Pseudo :</label>
    			<input type="text" value="" id="pseudo" name="pseudo"/>
    			<br/>
    			<br/>
    
    			<label for="mdp">Mot de passe :</label>
    			<input type="password" value="" id="mdp" name="mdp"/>
    			<br/>
    			<br/>
    
    			<label for="mdpConfirm">Mot de passe (confirm) :</label>
    			<input type="password" value="" id="mdpConfirm" name="mdpConfirm"/>
    			<br/>
    			<br/>	
    			
    			<label for="email">Votre Email</label>
    			<input type="text" value="" id="email" name="email"/>
    			<br/>
    			<br/>
    			
    			<label for="parrain">Pseudo du parrain :</label>
    			<input type="text" value="" id="parrain" name="parrain"/>
    			<br/>
    			<br/>
    			
    			<label for="valider">&nbsp;</label>
    			<input type="submit" name="valider" value=" Valider l\'inscription "/>
    			<br/>
    			<br/>
    			
    			</fieldset>
    			</form>';
    		}
     
     
    	} 
    	else 
    	{ // il est pas connécté et n'a pas validé le formulaire
    ?>
     
    		<p>Voici ci-dessous le formulaire d'inscription à Maxcoms.</p>
    		<p><br><b>Merci de remplir tous les champs (il sont tous obligatoire) !<br><br>
    		</form><fieldset>
    		<legend><b>ATTENTION :</b></legend>Il est obliger de donnez le pseudo du parrain, c'est à dire le pseudo de la personne qui vous a fais connaître ce site !</fieldset></b></p>
     
    		<form method="post">
    		<fieldset>
    		<legend>Inscription - MaxComs</legend>
     
    		<label for="pseudo">Pseudo :</label>
    		<input type="text" value="" id="pseudo" name="pseudo"/>
    		<br/>
    		<br/>
     
    		<label for="mdp">Mot de passe :</label>
    		<input type="password" value="" id="mdp" name="mdp"/>
    		<br/>
    		<br/>
     
    		<label for="mdpConfirm">Mot de passe (confirmation) :</label>
    		<input type="password" value="" id="mdpConfirm" name="mdpConfirm"/>
    		<br/>
    		<br/>	
     
    		<label for="email">Votre Email :</label>
    		<input type="text" value="" id="email" name="email"/>
    		<br/>
    		<br/>
     
    		<label for="parrain">Pseudo du parrain :</label>
    		<input type="text" value="" id="parrain" name="parrain"/>
    		<br/>
    		<br/>
     
    		<label for="valider">&nbsp;</label>
    		<input type="submit" name="valider" value=" Valider l'inscription "/>
    		<br/>
     
     
    <?php
    	}
     
    	include('includes/footer.php');
    ?>

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par dorian06 Voir le message
    Merci de vos réponse,

    Mais en faite je suis débutant et cela fais 1 mois que je suis sur cette page d'inscription que je n'arrive pas à faire marcher que faut-il faire pour qu'elle marche sans problème SVP ?
    Ben oui mais avant de programmer mieux vaut commencer par faire des tutos. Là ton code est tout en vrac avec des phrases qui s'affichent en plein milieu de ton code php, et tu ne maîtrise pas les requêtes, etc. Un tuto avec code complet et fonctionnel ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    <?php
    // Indique le bon format des entêtes (par défaut apache risque de les envoyer au standard ISO-8859-1)
    header('Content-type: text/html; charset=UTF-8');
     
    /* Création d'une fonction - utilisée dans la récupération des variables - qui teste la configuration get_magic_quotes_gpc du serveur.
    Si oui, supprime avec la fonction stripslashes les antislashes "\" insérés dans les chaines de caractère des variables gpc (GET, POST, COOKIE) */
    function Verif_magicquotes ($chaine)
    {
    if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);
     
    return $chaine;
    }
     
    // Initialisation du message de réponse
    $message = null;
     
     
    // Si le formulaire est envoyé
    if (isset($_POST['pseudo']))
    {
     
        /* Récupération des variables issues du formulaire
        Teste l'existence les données post en vérifiant qu'elles existent, qu'elles sont non vides et non composées uniquement d'espaces.
        (Ce dernier point est facultatif et l'on pourrait se passer d'utiliser la fonction trim())
        En cas de succès, on applique notre fonction Verif_magicquotes pour (éventuellement) nettoyer la variable */
        $pseudo = (isset($_POST['pseudo']) && trim($_POST['pseudo']) != '')? Verif_magicquotes($_POST['pseudo']) : null;
        $pass = (isset($_POST['pass']) && trim($_POST['pass']) != '')? Verif_magicquotes($_POST['pass']) : null;
     
     
        // Si $pseudo et $pass différents de null
        if(isset($pseudo,$pass))
        {
             /* Connexion au serveur : dans cet exemple, en local sur le serveur d'évaluation
             A MODIFIER avec vos valeurs */
             $hostname = "localhost";
             $database = "nom_de_votre_base";
             $username = "root";
             $password = "";
     
             $connection = mysql_connect($hostname, $username, $password) or die(mysql_error());
     
             // Connexion à la base
             mysql_select_db($database, $connection);
     
             // Indique à mySql de travailler en UTF-8 (par défaut mySql risque de travailler au standard ISO-8859-1)
             mysql_query("SET NAMES 'utf8'");
     
             // Préparation des données pour les requêtes à l'aide de la fonction mysql_real_escape_string
             $nom = mysql_real_escape_string($pseudo);
             $password = mysql_real_escape_string($pass);
     
     
             // Requête pour compter le nombre d'enregistrements répondant à la clause : champ du pseudo de la table = pseudo posté dans le formulaire
             $requete = "SELECT count(*) as nb FROM membres WHERE pseudo = '".$nom."'";
     
             // Exécution de la requête
             $req_exec = mysql_query($requete) or die(mysql_error());
     
             // Création du tableau associatif du résultat
             $resultat = mysql_fetch_assoc($req_exec);
     
     
             // nb est le nom de l'allias associé à count(*) et retourne le résultat de la requête dans le tableau $resultat;
             if ($resultat['nb'] == 0)
             // Résultat du comptage = 0 pour ce pseudo, on peut donc l'enregistrer
             {
                 // Pour enregistrer la date actuelle (date/heure/minutes/secondes) on peut utiliser directement la fonction mysql : NOW()
                 $insertion = "INSERT INTO membres(pseudo,pass,date_enregistrement) VALUES('".$nom."', '".$password."', NOW())";
     
                 // Exécution de la requête d'insertion
                 $inser_exec = mysql_query($insertion) or die(mysql_error());
     
                 /* Si l'insertion s'est faite correctement (une requête d'insertion retourne "true" en cas de succès, je peux donc utiliser
                 l'opérateur de comparaison strict '==='  c.f. http://fr.php.net/manual/fr/language.op ... arison.php) */
                 if ($inser_exec === true)
                 {
                     /* Démarre la session et enregistre le pseudo dans la variable de session $_SESSION['login']
                     qui donne au visiteur la possibilité de se connecter.  */
                     session_start();
                     $_SESSION['login'] = $pseudo;
     
                     // A MODIFIER Remplacer le '#' par l'adresse de votre page de destination, sinon ce lien indique la page actuelle.
                     $message = 'Votre inscription est enregistrée. <a href = "#">Cliquez ici pour vous connecter</a>';
                 }    
             }
             else
             {   // Le pseudo est déjà utilisé
                 $message = 'Ce pseudo est déjà utilisé, changez-le.';
             }
        }
        else
        {    // Au moins un des deux champs "pseudo" ou "mot de passe" n'a pas été rempli
             $message = 'Les champs "Pseudo" et "Mot de passe" doivent être remplis.';
        }
    }
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Formulaire d'inscription - tutoriel PHP France</title>
     
    <style type="text/css">
    <!--
    body, p, h1,form, input {
    margin:0;
    padding:0;
    }
    body {
    background-color:#FFFFFF
    }
    #inscription {
    width:380px;
    background:#FFFFFF;
    margin:20px auto;
    font-family: Arial, Helvetica, sans-serif;
    font-size:1em;
    border:2px solid #333333;
    }
    #inscription h1 {
    text-align:center;
    font-size:1.2em;
    background:#333333;
    padding-bottom:5px;
    margin-bottom:15px;
    color:#FFFFFF;
    letter-spacing:0.05em;
    }
    #inscription p {
    padding-top:15px;
    padding-right:50px;
    text-align:right;
    }
    #inscription input {
    margin-left:30px;
    width:150px;
    }
    #inscription #valider {
    width:155px;
    font-size:0.8em;
    }
    #inscription #message {
    height:27px;
    font-size:0.7em;
    font-weight:bold;
    text-align:center;
    padding:10px 0 0 0;
    }
    -->
    </style>
    </head>
    <body>
    <div id = "inscription">
        <form action = "#" method = "post">
        <h1>Inscription</h1>
        <p><label for = "pseudo">Pseudo : </label><input type = "text" name = "pseudo" id = "pseudo" /></p>
        <p><label for = "pass">Mot de passe : </label><input type = "password" name = "pass" id = "pass" /></p>
        <p><input type = "submit" value = "Envoyer" id = "valider" /></p>
        </form>
        <p id = "message"><?php if(isset($message)) echo $message ?></p>
    </div>
    </body>
    </html>
    Quand tu l'auras tout compris il ne te sera pas difficile d'ajouter ta condition de parrainage.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 59
    Points : 18
    Points
    18
    Par défaut Reponse
    Mais j'ai déjà lu plusieurs tuto mais je n'arrive quand même pas à corriger le code quelle est le soucis STP aide moi

    Sa fais 1 mois que personne n'a su m'aider :/

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    mysql_fetch_assoc ne s'utilise pas du tout comme ça.
    Quand tu utilises une fonction que tu ne connais, regarde la doc
    http://fr2.php.net/manual/fr/functio...etch-assoc.php

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 59
    Points : 18
    Points
    18
    Par défaut Reponse
    Je suis allez voir mais je comprend toujours pas :/
    La doc est assez compliqué.

    Peut tu m'éxplicer en plus clair STP ?

    Il faut faire comme sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $reponse= mysql_query("SELECT COUNT(*) AS pseudo FROM users WHERE pseudo='".mysql_real_escape_string($_POST['parrain'])."'");
     
    $alors  = mysql_fetch_assoc($reponse);

  11. #11
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par dorian06 Voir le message
    Mais j'ai déjà lu plusieurs tuto mais je n'arrive quand même pas à corriger le code quelle est le soucis STP aide moi

    Sa fais 1 mois que personne n'a su m'aider :/
    Suffit pas de les lire, il faut aussi les comprendre et t'appliquer un peu plus longtemps...

    Un extrait du tuto que je t'ai donné en lien plus haut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
             // Requête pour compter le nombre d'enregistrements répondant à la clause : champ du pseudo de la table = pseudo posté dans le formulaire
             $requete = "SELECT count(*) as nb FROM membres WHERE pseudo = '".$nom."'";
     
             // Exécution de la requête
             $req_exec = mysql_query($requete) or die(mysql_error());
     
             // Création du tableau associatif du résultat
             $resultat = mysql_fetch_assoc($req_exec);
     
     
             // nb est le nom de l'allias associé à count(*) et retourne le résultat de la requête dans le tableau $resultat;
             if ($resultat['nb'] == 0)
             // Résultat du comptage = 0 pour ce pseudo, on peut donc l'enregistrer
             {//...
    Ici on compte si le résultat retourne 0 mais peut être pourrais-tu l'adapter à tes besoins ?

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 59
    Points : 18
    Points
    18
    Par défaut Reponse
    J'ai fais sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $creditsAjouter = 100; // Nombre de crédits à ajouter
     
    				$reponse= mysql_query("SELECT COUNT(*) AS pseudo FROM users WHERE pseudo='".mysql_real_escape_string($_POST['parrain'])."'");
    				$alors  = mysql_fetch_assoc($reponse);
    				if(!($alors['nbr'] == 1)){
    echo"Ce parrain n'existe pas !";
     
    				if(!($alors['nbr'] == 0)){
    					mysql_query("UPDATE users SET nbrCredits = nbrCredits + $creditsAjouter WHERE pseudo = '".mysql_real_escape_string($_POST['parrain'])."'"); // On met à jour le nombre de crédits du parrain
    					mysql_query("INSERT INTO users VALUES ('','".$pseudo."','".$mdp."','".$email."','".$ip."','','')");	
     
    						echo 'L\'inscription s\'est déroulée avec succès, vous pouvez maintenant vous connecter.';
    Pouvez-vous me corriger ?

  13. #13
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Tu trouves que cela ressemble à ce que je viens de te montrer ?

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 59
    Points : 18
    Points
    18
    Par défaut Reponse
    Bah oui c'est sa a pars qu'a la place de resultat j'ai mis alors.

  15. #15
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Faut regarder un peu plus haut. Si je fais if ($resultat['nb'] == 0) c'est que l'index "nb" est quelque part dans mes champs de résultat de la requête.

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 59
    Points : 18
    Points
    18
    Par défaut Reponse
    Ah oui désolé,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $creditsAjouter = 100; // Nombre de crédits à ajouter
     
    				$reponse= mysql_query("SELECT COUNT(*) AS nbr FROM users WHERE pseudo='".mysql_real_escape_string($_POST['parrain'])."'");
    				$alors  = mysql_fetch_assoc($reponse);
    				if(!($alors['nbr'] == 0)){
    echo"Ce parrain n'existe pas !";
     
    				if(!($alors['nbr'] == 1)){
    					mysql_query("UPDATE users SET nbrCredits = nbrCredits + $creditsAjouter WHERE pseudo = '".mysql_real_escape_string($_POST['parrain'])."'"); // On met à jour le nombre de crédits du parrain
    					mysql_query("INSERT INTO users VALUES ('','".$pseudo."','".$mdp."','".$email."','".$ip."','','')");	
     
    						echo 'L\'inscription s\'est déroulée avec succès, vous pouvez maintenant vous connecter.';
    C'est sa ?

  17. #17
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    T'a résolu un problème mais il y en a d'autres...

    if(!($alors['nbr'] == 0)) revient à écrire : if($alors['nbr'] != 0)

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 59
    Points : 18
    Points
    18
    Par défaut Reponse
    Voila, j'ai modifié certaine chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    <?php
    include('includes/header.php');
    if(connecte()){ // il est connécté
     
    ?>
     
    	<p>Vous êtes déjà connéctés - Impossible de vous inscrire une seconde fois !</p>
     
    <?php
    } elseif(!connecte() AND isset($_POST['valider'])) { // il est pas connécté et a validé le formulaire
     
    	$erreur = array();
     
    	if (empty($_POST['pseudo'])) {
    	   $erreur[] = 'Le champ Pseudo ne doit pas être vide.';
    	}
     
    	if (empty($_POST['mdp'])) {
    	   $erreur[] = 'Le champ Mot de passe ne doit pas être vide.';
    	}
     
    	if ($_POST['mdpConfirm'] != $_POST['mdp']) {
    	   $erreur[] = 'Les deux motes ne passe ne sont pas identiques.';
    	}
     
    	if (empty($_POST['parrain'])) {
    	   $erreur[] = 'Le champ pseudo du parrain ne doit pas être vide.';
    	}
     
    	if (!count($erreur)) {
     
    		$pseudo = securiserVariable($_POST['pseudo']);
    		$mdp = HoloHash($_POST['mdp']);
    		$email = securiserVariable($_POST['email']);
    		$ip = $_SERVER['REMOTE_ADDR'];
     
    		$retour = mysql_query("SELECT COUNT(*) AS nbreEntrees FROM users WHERE pseudo='".$pseudo."'");
    		$donnees = mysql_fetch_array($retour);
    		if($donnees['nbreEntrees'] <= 0){
    		{
     
    	$creditsAjouter = 100; // Nombre de crédits à ajouter
     
    				$reponse= mysql_query("SELECT COUNT(*) AS nbr FROM users WHERE pseudo='".mysql_real_escape_string($_POST['parrain'])."'");
    				$alors  = mysql_fetch_assoc($reponse);
    				if($alors['nbr'] != 0)
    echo"Ce parrain n'existe pas !";
     
    				if($alors['nbr'] != 1)
    					mysql_query("UPDATE users SET nbrCredits = nbrCredits + $creditsAjouter WHERE pseudo = '".mysql_real_escape_string($_POST['parrain'])."'"); // On met à jour le nombre de crédits du parrain
    					mysql_query("INSERT INTO users VALUES ('','".$pseudo."','".$mdp."','".$email."','".$ip."','','')");	
     
    						echo 'L\'inscription s\'est déroulée avec succès, vous pouvez maintenant vous connecter.';
     
    		} else {
    		echo'Ce pseudo est déjà pris par une autre personne';
    		}
     
    	}else {
     
    		$nbrErreur = count($erreur);
    		echo '<h3>Il y a '.$nbrErreur.' erreurs détectés.</h3>';
    		 echo '<h3>Liste des erreurs :</h3><ul>';
    		 foreach($erreur as $erreur) echo "<li>$erreur</li>";
    		 echo '</ul>';
    		 echo'Merci de re-remplir le formulaire.';
    		 echo'
    		 <br/>
    		 <br/>
    		<form method="post">
    	<fieldset>
    	<legend>Inscription - MaxComs</legend>
    	
    	<label for="pseudo">Pseudo :</label>
    	<input type="text" value="" id="pseudo" name="pseudo"/>
    	<br/>
    	<br/>
    
    	<label for="mdp">Mot de passe :</label>
    	<input type="password" value="" id="mdp" name="mdp"/>
    	<br/>
    	<br/>
    
    	<label for="mdpConfirm">Mot de passe (confirm) :</label>
    	<input type="password" value="" id="mdpConfirm" name="mdpConfirm"/>
    	<br/>
    	<br/>	
    	
    	<label for="parrain">Pseudo du Parrain :</label>
    	<input type="text" value="" id="parrain" name="parrain"/>
    	<br/>
    	<br/>
    	
    	<label for="valider">&nbsp;</label>
    	<input type="submit" name="valider" value=" Valider l\'inscription "/>
    	<br/>
    	<br/>
    	
    	</fieldset>
    	</form>';
    	}
     
     
    } else { // il est pas connécté et n'a pas validé le formulaire
    ?>
     
    	<p>Voici ci-dessous le formulaire d'inscription à Maxcoms.</p>
    	<p><br><b>Merci de remplir tous les champs (il sont tous obligatoire) !<br><br>
    	</form><fieldset>
    	<legend><b>ATTENTION :</b></legend>Ne mettez surtout pas le meme mot de passe que celui de votre blog !</fieldset></b></p>
     
    	<form method="post">
    	<fieldset>
    	<legend>Inscription - MaxComs</legend>
     
    	<label for="pseudo">Pseudo :</label>
    	<input type="text" value="" id="pseudo" name="pseudo"/>
    	<br/>
    	<br/>
     
    	<label for="mdp">Mot de passe :</label>
    	<input type="password" value="" id="mdp" name="mdp"/>
    	<br/>
    	<br/>
     
    	<label for="mdpConfirm">Mot de passe (confirmation) :</label>
    	<input type="password" value="" id="mdpConfirm" name="mdpConfirm"/>
    	<br/>
    	<br/>	
     
    	<label for="Parrain">Pseudo du Parrain :</label>
    	<input type="text" value="" id="Parrain" name="Parrain"/>
    	<br/>
    	<br/>
     
    	<label for="valider">&nbsp;</label>
    	<input type="submit" name="valider" value=" Valider l'inscription "/>
    	<br/>
     
     
    <?php
    }
     
    include('includes/footer.php');
    ?>
    Et regarde le message d'érreur que sa me dit :

    Parse error: syntax error, unexpected T_ELSE in /home/maxcomsf/public_html/register.php on line 55

  19. #19
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if($donnees['nbreEntrees'] <= 0){
    		{
    Tu ne peux pas avoir un count() inférieur à zéro.
    et tu as mis deux {{

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if($alors['nbr'] != 0)
    echo"Ce parrain n'existe pas !";
    Si le compte est différent de zéro, alors c'est que tu as eu des correspondances.

    Tu as juste a reprendre ce que t'as indiqué Arciweb :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if($alors['nbr'] == 0) {
       echo"Ce parrain n'existe pas !";
    } 
    else {
      mysql_query("UPDATE users SET nbrCredits = nbrCredits + $creditsAjouter WHERE pseudo = '".mysql_real_escape_string($_POST['parrain'])."'"); // On met à jour le nombre de crédits du parrain
    }
    echo "L'inscription s\'est déroulée avec succès, vous pouvez maintenant vous connecter.";

  20. #20
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Ben oui ça veut dire qu'il y a un ELSE qui ne devrait pas se trouver à la ligne 55. Plus généralement que le code précédent le ELSE fait qu'il n'est pas dans le bon contexte. Problème d'équilibrage des accolades {} peut-être...

    Sinon if($alors['nbr'] != 1)... ça veut dire si le nombre de parrains trouvé est différent de 1 alors tu fais ton update et ton insertion... C'est vraiment ça que tu veux ?

    EDIT j'avais pas vu la réponse de sabotage... Pendant que je postais j'avais eu une erreur serveur 500 et j'ai donc attendu un peu avant d'envoyer ma réponse (qui n'a plus tout son intérêt après sa proposition de correction)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Espace membre, parrainage et système de points
    Par okoweb dans le forum Langage
    Réponses: 7
    Dernier message: 20/05/2009, 18h40
  2. Espace membre, parrainage et système de point
    Par okoweb dans le forum Langage
    Réponses: 7
    Dernier message: 11/05/2009, 16h18
  3. [système] Comment ajouter un item dans le context menu de Windows ?
    Par ddmicrolog dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 29/06/2005, 17h03
  4. [Système] Vider le Presse Papier
    Par babe dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/09/2002, 17h46
  5. IA avec le système de note
    Par scorpiwolf dans le forum C
    Réponses: 4
    Dernier message: 06/05/2002, 12h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo