Bonjour à tous
Je solicite votre aide pour me dépatouiller de cette galére . En effet j´ai installer un espace membre sur mon site , tous c´est bien passer , j´ai laissez la page d´inscription original du script pour inscrire un 1er membre et cela a fonctionner. Je ne sais aps comemnt j´ai fais mais pour inscrire un 2en membe , j´obtiens l´erreur suivante :
Column count doesn´t match value count at row 1
Voici le script d´inscription :
< ?
require("conf.php3");
switch($action) {
/*------------------------------------------------
-----------------*/
/ * AJOUT DANS MySQL */
/*------------------------------------------------
-----------------*/
case " add";
/ / CONNEXION A LA BASE DE DONNEE
$db_link =
@mysql_connect($sql_serveur,$sql_user,$sql_passwd)
;
if(!$db_link) {echo " Connexion impossible à la base de données < b>$sql_bdd</b> sur le serveur < b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}
/ / TEST SUR LES VALEURS SAISIES
if($pseudo_membre==""){echo " Vous devez choisir un pseudo<br><br><a
href=\"javascript:window.history.back()\">Retour</
a>";exit;}
if($passe_membre==""){echo " Vous devez choisir un mot de passe<br><br>
< a
href=%22javascript:window.history.back()/%22>Retou
r</a>";exit;}
/ / CHAMPS SUPLEMENTAIRES, inspirez-vous des lignes suivantes. Pour qu´un champs soit facultatif, omettez la ligne.
/ /if($email==""){echo " Vous n´avez pas saisi votre email<br><br>
< a
href=%22javascript:window.history.back()/%22>Retou
r</a>";exit;}
/ /if($ville==""){echo " Vous n´avez pas saisi la ville<br><br>
< a
href=%22javascript:window.history.back()/%22>Retou
r</a>";exit;}
/ / ON VERIFIE SI CE PSEUDO EXISTE DEJA
$requete=mysql_db_query($sql_bdd,"select * from membre where pseudo=\"$pseudo_membre\"",$db_link) or die(mysql_error());
$num=mysql_num_rows($requete);
if($num!=0)
{
echo " Ce pseudo existe déjà, veuillez en choisir un autre<br><br>
< a
href=%22javascript:window.history.back()/%22>Retou
r</a>";
}
else
{
// CREATION D´UN IDENTIFIANT ALEATOIRE
$taille = 20;
$lettres = " abcdefghijklmnopqrstuvwxyz0123456789";
srand(time());
for ( $i=0;$i<$taille;$i++)
{
$id.=substr($lettres,(rand()%(strlen($lettres)))
,1);
}
// ON RECHERCHE L´ID MAXIMUM DE LA TABLE
$requete=mysql_db_query($sql_bdd,"select max(id_membre) from membre",$db_link) or die(mysql_error());
$idmax=mysql_result($requete,0,"max(id_membre)");
// INSERTION DANS LA TABLE
$idnew=$idmax+1;
$requete=mysql_db_query($sql_bdd,"insert into membre values
($idnew,\"$id\",\"$pseudo_membre\",\"$passe_membre
\")",$db_link) or die(mysql_error());
// REDIRECTION VERS LA PAGE D´ENTREE DE L´ESPACE MEMBRE
echo " Merci, vous êtes bien enregistré. Cliquez
< a href=%22$zone_membre?id=$id/">ici</a> pour entrer dans votre espace privé.";
}
/ / DECONNEXION MYSQL
mysql_close($db_link);
break;
/*------------------------------------------------
-----------------*/
/ * AFFICHAGE DU FORMULAIRE */
/*------------------------------------------------
-----------------*/
default;
echo " <h2>Nouveau membre</h2>
<form action=%22adduser.php3/%22 method=\"post\">
<input type=\"hidden\" name=\"action\" value=\"add\" size="20">
Chosissez un pseudo<br>
< input type=\"text\" name=\"pseudo_membre\" size="20"><br>
Chosissez un mot de passe<br>
< input type=\"password\" name=\"passe_membre\" size="20"><br>
<input type=\"submit\" value=\"Envoyer\" size="20">
</form>
<font face=\"Verdana\" size=\"2\"><a href=%22index.php/%22>Se connecter</a></font>";
break;
}
? >
Je tiens a précisez que le fichier conf.php3 conteint tous el nécessaire a la connection à la base de donnée .
Voila merci d´avance
j´ai remis la page d´inscription initial et j´ai toujour le meme probléme
![]()
regarde si il n´y a pas un probleme dans ta table
T´as oublié de sélectionner ta base de donnée ![]()
Immortel_tueur => Qu´appelle tu un probléme dans la table
freedix => La bas ed edonné est selectionner :
/ / CONNEXION A LA BASE DE DONNEE
$db_link =
@mysql_connect($sql_serveur,$sql_user,$sql_passwd)
Non la fonction mysql_connect sert à ouvrir une connection à un serveur MySQL.
Par contre, il faut ensuite que tu sélectionnes une base de donnée, avec la fonction mysql_select_db.
Regardes la doc PHP pour plus d´infos sur ces deux fonctions ![]()
en faite il selectionne la base de donnée à cette endroit :
$requete=mysql_db_query($sql_bdd,"insert into membre values
($idnew,\"$id\",\"$pseudo_membre\",\"$passe_membre
\")",$db_link) or die(mysql_error());
Sinon peut tu me dire ou placé la sélection de la base de donnée stp
![]()
Tu peux placer la fonction mysql_query entre ta connexion à ta base de donnée et ta première requête SQL.
C´est pas la fonction mysql_query mais mysql_select_db.
En faite la selction d ela base de donné ce fais juste aprés qu´il ets vérifier si els champs étais vide ou pas . Donc la sélection est bien présente au bonne endroit ou alors peut tu me placer le mysql_select_db. au bonne endroit
C´est lors de l´insertion dans la base de donnée que tu as cette erreur ?
Si oui, essaies de remplacer ta requête par celle-ci :
$requete = mysql_db_query($sql_bdd, "
INSERT INTO membre(idnew, id, pseudo_membre, passe_membre) VALUES(´$idnew´, ´$id´, ´$pseudo_membre´, ´$passe_membre´)") or die(mysql_error());
![]()
j´ai fais ce que tu m´a dit cependant j´obtiens une erreur avec l´affichage du formulaire ::
L´erreur:
Parse error: parse error in
/var/www/free.fr/d/7/adslman205/monkey-land/adduse
r.php3 on line 72
La partie du script :
echo " <h2>Nouveau membre</h2>
<form action=%22adduser.php3/%22 method=\"post\">
<input type=\"hidden\" name=\"action\" value=\"add\" size="20"> < == Line 72
Chosissez un pseudo<br>
< input type=\"text\" name=\"pseudo_membre\" size="20"><br>
Chosissez un mot de passe<br>
< input type=\"password\" name=\"passe_membre\" size="20"><br>
<input type=\"submit\" value=\"Envoyer\" size="20">
</form>
<font face=\"Verdana\" size=\"2\"><a href=%22index.htm/%22>Se connecter</a></font>";
break;
< input type=\"hidden\" name=\"action\" value=\"add\" size="20">
Mets deux \ devant les guillemets qui entourent le nombre 20. PHP crois que tu fermes la fonction echo, et donc après ça n´a plus de sens et il t´affiche une erreur ![]()
Exacte maintenant ca s´affiche bien ( jai du enlever les %22 sinon il me trouver pas le script )
Maintenant quand je veux ajouter un membe il me marque ca :
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ´´, ´, ´, ´)´ at line 1
Pourtant j´ai free ces du php4 donc php3 pase decu je pense
Je vois pas vraiment d´erreur de syntaxe dans la requête
Sinon, dans la doc PHP, c´est écrit :
" Note : Cette fonction est obsolète, et abandonnée depuis PHP 4.0.6. Ne l´utilisez plus ( ou pas!). Alternative recommandée : mysql_select_db() et mysql_query(). "
![]()
Donc je doit remplacer quoi exactement stp ?
Après la connexion à ta base de donnée ( mysql_connect ) , tu rajoutes :
mysql_select_db($sql_bdd, $db_link);
Et tu remplaces ta requete utilisant la fonction mysql_db_query par :
mysql_query($sql_bdd, "
INSERT INTO membre(idnew, id, pseudo_membre, passe_membre) VALUES(´$idnew´, ´$id´, ´$pseudo_membre´, ´$passe_membre´)") or die(mysql_error());
Et puis tu n´avais pas besoin d´assigner ta requête à une variable
Je sais pas si ça va marcher, mais essaies quand même ![]()
j´ai fais ce que tu m´a dit ce qui donne ce script :
< ?
require("conf.php3");
switch($action) {
/*------------------------------------------------
-----------------*/
/ * AJOUT DANS MySQL */
/*------------------------------------------------
-----------------*/
case " add";
/ / CONNEXION A LA BASE DE DONNEE
$db_link =
@mysql_connect($sql_serveur,$sql_user,$sql_passwd)
;
if(!$db_link) {echo " Connexion impossible à la base de données < b>$sql_bdd</b> sur le serveur < b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}
mysql_select_db($sql_bdd, $db_link);
/ / TEST SUR LES VALEURS SAISIES
if($pseudo_membre==""){echo " Vous devez choisir un pseudo<br><br><a
href=\"javascript:window.history.back()\">Retour</
a>";exit;}
if($passe_membre==""){echo " Vous devez choisir un mot de passe<br><br>
< a
href=%22javascript:window.history.back()/%22>Retou
r</a>";exit;}
/ / ON VERIFIE SI CE PSEUDO EXISTE DEJA
$requete=mysql_db_query($sql_bdd,"select * from membre where pseudo=\"$pseudo_membre\"",$db_link) or die(mysql_error());
$num=mysql_num_rows($requete);
if($num!=0)
{
echo " Ce gorille existe déjà, veuillez en choisir un autre<br><br>
< a
href=%22javascript:window.history.back()/%22>Retou
r</a>";
}
else
{
// CREATION D´UN IDENTIFIANT ALEATOIRE
$taille = 20;
$lettres = " abcdefghijklmnopqrstuvwxyz0123456789";
srand(time());
for ( $i=0;$i<$taille;$i++)
{
$id.=substr($lettres,(rand()%(strlen($lettres)))
,1);
}
// ON RECHERCHE L´ID MAXIMUM DE LA TABLE
$requete=mysql_query($sql_bdd,"select max(id_membre) from membre",$db_link) or die(mysql_error()); ==>Ligne 48
$idmax=mysql_result($requete,0,"max(id_membre)");
// INSERTION DANS LA TABLE
$idnew=$idmax+1;
mysql_query($sql_bdd, " INSERT INTO membre(id_membre, id, pseudo_membre, passe_membre) VALUES(´$idnew´, ´$id´, ´$pseudo_membre´, ´$passe_membre´)") or die(mysql_error());
// REDIRECTION VERS LA PAGE D´ENTREE DE L´ESPACE MEMBRE
echo " Merci, vous êtes bien enregistré. Cliquez
< a href=%22$zone_membre?id=$id/">ici</a> pour entrer dans votre espace privé.";
}
/ / DECONNEXION MYSQL
mysql_close($db_link);
break;
/*------------------------------------------------
-----------------*/
/ * AFFICHAGE DU FORMULAIRE */
/*------------------------------------------------
-----------------*/
default;
echo " <h2>Nouveau membre</h2>
<form action=adduser.php3 method=\"post\">
<input type=\"hidden\" name=\"action\" value=\"add\" size=\"20\">
Chosissez un pseudo<br>
< input type=\"text\" name=\"pseudo_membre\" size=\"20\"><br>
Chosissez un mot de passe<br>
< input type=\"password\" name=\"passe_membre\" size=\"20\"><br>
<input type=\"submit\" value=\"Envoyer\" size=\"20\">
</form>
<font face=\"Verdana\" size=\"2\"><a href=%22index.htm/%22>Se connecter</a></font>";
break;
}
? >
Mais ca me met cette erreur :
Warning: Wrong parameter count for mysql_query() in
/var/www/free.fr/d/7/adslman205/monkey-land/adduse
r.php3 on line 48
Voila , encore merci
$requete=mysql_query($sql_bdd,"select max(id_membre) from membre",$db_link) or die(mysql_error());
Enlèvre $sql_dbb et $db_link, ce qui donne :
$requete = mysql_query("SELECT MAX(id_membre) FROM membre") or die(mysql_error());
Quand tu as un problème avec une fonction, regardes la doc php ( php.net), tu verras les paramètres nécessaires à fournir à chaque fonction etc...
![]()