Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/03/2011, 20h48   #1
Invité régulier
 
Inscription : février 2011
Messages : 59
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 59
Points : 6
Points : 6
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 :
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.
dorian06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 20h58   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/03/2011, 21h05   #3
Membre Expert
 
Inscription : septembre 2010
Messages : 1 240
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 240
Points : 1 562
Points : 1 562
Il est bourré de fautes logiques ton code.

Code :
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
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/03/2011, 21h07   #4
Invité régulier
 
Inscription : février 2011
Messages : 59
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 59
Points : 6
Points : 6
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 ?
dorian06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 21h22   #5
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Citation:
, il faut utiliser une fonction comme mysql_fetch_assoc pour lire le résultat de ton COUNT
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 21h26   #6
Invité régulier
 
Inscription : février 2011
Messages : 59
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 59
Points : 6
Points : 6
Par défaut reponse

Je l'ai fais mais toujours le même problème :

Code :
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');
?>
dorian06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 21h26   #7
Membre Expert
 
Inscription : septembre 2010
Messages : 1 240
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 240
Points : 1 562
Points : 1 562
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 :
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.
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 21h32   #8
Invité régulier
 
Inscription : février 2011
Messages : 59
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 59
Points : 6
Points : 6
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 :/
dorian06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 21h34   #9
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 21h41   #10
Invité régulier
 
Inscription : février 2011
Messages : 59
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 59
Points : 6
Points : 6
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 :
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);
dorian06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 21h48   #11
Membre Expert
 
Inscription : septembre 2010
Messages : 1 240
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 240
Points : 1 562
Points : 1 562
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 :
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 ?
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 21h52   #12
Invité régulier
 
Inscription : février 2011
Messages : 59
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 59
Points : 6
Points : 6
Par défaut Reponse

J'ai fais sa :

Code :
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 ?
dorian06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 21h58   #13
Membre Expert
 
Inscription : septembre 2010
Messages : 1 240
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 240
Points : 1 562
Points : 1 562
Tu trouves que cela ressemble à ce que je viens de te montrer ?
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 21h59   #14
Invité régulier
 
Inscription : février 2011
Messages : 59
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 59
Points : 6
Points : 6
Par défaut Reponse

Bah oui c'est sa a pars qu'a la place de resultat j'ai mis alors.
dorian06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 22h04   #15
Membre Expert
 
Inscription : septembre 2010
Messages : 1 240
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 240
Points : 1 562
Points : 1 562
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.
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 22h09   #16
Invité régulier
 
Inscription : février 2011
Messages : 59
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 59
Points : 6
Points : 6
Par défaut Reponse

Ah oui désolé,

Code :
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 ?
dorian06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 22h18   #17
Membre Expert
 
Inscription : septembre 2010
Messages : 1 240
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 240
Points : 1 562
Points : 1 562
T'a résolu un problème mais il y en a d'autres...

if(!($alors['nbr'] == 0)) revient à écrire : if($alors['nbr'] != 0)
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 22h24   #18
Invité régulier
 
Inscription : février 2011
Messages : 59
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 59
Points : 6
Points : 6
Par défaut Reponse

Voila, j'ai modifié certaine chose :

Code :
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
dorian06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 22h36   #19
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Code :
1
2
if($donnees['nbreEntrees'] <= 0){
		{
Tu ne peux pas avoir un count() inférieur à zéro.
et tu as mis deux {{

Code :
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 :
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.";
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 22h47   #20
Membre Expert
 
Inscription : septembre 2010
Messages : 1 240
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 240
Points : 1 562
Points : 1 562
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éalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h54.


 
 
 
 
Partenaires

Hébergement Web