8791 sujets

Développement web côté serveur, CMS

Salut tout le monde.

J'essaie de creer un formulaire pour faire un espace membre. Au niveau l'inscription, quand on entre les donnees, ca n'enregistre rien sur ma table de mysql

Voici le code source:

[code]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title> Espace membre</title>
</head>
<body>
<font face="Verdana" size="2">
<center>
<?php
require("conf.php");

switch($action) {
/*-----------------------------------------------------------------*/
/*	AJOUT DANS MySQL			*/
/*-----------------------------------------------------------------*/

case "add";

// CONNEXION A LA BASE DE DONNEE
$db_link = @mysql_connect($mysql_serveur,$mysql_user,$mysql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>$mysql_bdd</b> sur le serveur <b>$mysql_server</b><br>Vérifiez les paramètres du fichier conf.php"; exit;}

// TEST SUR LES VALEURS SAISIES
if($pseudo==""){echo "Vous devez choisir un pseudo<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
if($passe==""){echo "Vous devez choisir un mot de passe<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
// CHAMPS SUPLEMENTAIRES, inspirez-vous des lignes suivantes. Pour qu'un champs soit facultatif, omettez la ligne.
if($age==""){echo "Vous n'avez pas saisi votre age<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
if($email==""){echo "Vous n'avez pas saisi votre email<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
if($pays==""){echo "Vous n'avez pas saisi votre pays<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
if($filmpref==""){echo "Vous n'avez pas saisi votre film préféré<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}


// ON VERIFIE SI CE PSEUDO EXISTE DEJA
$requete=mysql_db_query($mysql_bdd,"select * from membre where pseudo=\"$pseudo\"",$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=\"javascript:window.history.back()\">Retour</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($mysql_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($mysql_bdd,"insert into membre values ('','$pseudo','$passe','$age','$email','$pays','$filmpref')",$db_link) or die(mysql_error());
	// CHAMPS SUPLEMENTAIRES, complétez la requête précédente en ajoutant les variables et en respectant l'ordre des colonnes de la table. Exemple :
	// insert into membre values ($idnew,\"$id\",\"$pseudo_membre\",\"$passe_membre\",\"$email\",\"$ville\")
	
	// REDIRECTION VERS LA PAGE D'ENTREE DE L'ESPACE MEMBRE
	echo "Merci, vous êtes bien enregistré. Cliquez <a href=\"$zone_membre?pseudo=$pseudo\">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.php\" method=\"post\">
	<input type=\"hidden\" name=\"action\" value=\"add\">
	Chosissez un pseudo<br><input type=\"text\" name=\"pseudo\"><br>
	Chosissez un mot de passe<br><input type=\"password\" name=\"passe\"><br>
	Age<br><input type=\"text\" name=\"age\"><br>
	Votre email<br><input type=\"text\" name=\"email\"><br> 
	Pays<br><input type=\"text\" name=\"pays\"><br>
	Film préfére<br><input type=\"text\" name=\"filmpref\"><br>
	<input type=\"submit\" value=\"Envoyer\">
	</form>
	<font face=\"Verdana\" size=\"2\"><a href=\"index.htm\">Se connecter</a></font>";
break;
}
?>
</center>
</font>
</body>
</html>
 


voila,je pense qu'il y a une erreur dans ce code 


voila,je pense qu'il y a une erreur dans ce code mais je vois pas.
Please help! Smiley bawling
Bonjour

Je suis pas allé très loin dans le code.

Juste au début tu as


<?php
case "add";
?>


Peut-etre qu'en remplassant le ; par : ca marchera mieux Smiley cligne
bonjour ,

comme nous sommes sur un forum traitant des bonnes pratiques et du respect des standards du web :


<body>
<font face="Verdana" size="2">
<center>

Une petite lecture
s'impose Smiley cligne

Concernant le mélange php et syntaxe html , utilise les simple et double guillemet pour éviter d'échapper autant de caratère et ainsi rendre ton code plus lisible

et surtout place le style autre part que directement dans le html ...une feuille de style par exemple

...on y verra déjà plus clair !
Modifié par kzone (13 Aug 2008 - 13:33)
Modérateur
Salut,

Je fais une apparition vite fait pour indiquer quelques petites pétouilles à mon avis :

* default : non pas ;
* Pas de mise en forme html. Le CSS le fait très bien.
* Je crois qu'il est préférable de remplacer switch($action) par switch($_POST['action']). $action="" dans le code que je vois.
* Il me semble que la balise <br> en xhtml s'écrit plutôt <br/> ainsi que le tag input s'écrit : <input type="text" name="mon_nom" value="" />.
* Quand il y a trop d'html, je pense que ce serait plus simple de faire ceci par exemple (la relecture du code source html est nettement plus simple lors d'un débuggage) :


//code php
default:
//debut html
?>
<h2>Nouveau membre</h2>
	<form action="adduser.php" method="post">
	<input type="hidden" name="action" value="add" />
	Chosissez un pseudo<br /><input type="text" name="pseudo" /><br />
	Chosissez un mot de passe<br /><input type="password" name="passe" /><br />
	Age<br /><input type="text" name="age" /><br />
	Votre email<br /><input type="text" name="email" /><br /> 
	Pays<br /><input type="text" name="pays" /><br />
	Film préfére<br /><input type="text" name="filmpref" /><br />
	<input type="submit" value="Envoyer" />
	</form>
	<font face="Verdana" size="2"><a href="index.htm">Se connecter</a></font>

<?php
//debut php
break;



++ et bonne vacances @ tous
Modifié par Nolem (13 Aug 2008 - 15:11)
pour rappel la balise <br /> ne sert pas à la mise en page ; il faut utiliser dans ce cas les paragraphes (exemple):

<form action="...">
  <p>
    <label for="nom">Nom :</label>

    <input type="text" id="nom" />
  </p>
</form>



Deuxième lecture pour la soirée : Utilisation des formulaires

a écrit :

<br> en xhtml s'écrit plutôt <br/>

je crois que c'est même

<br /> // avec un espace


++
Désolé tout le monde parce que j'ai reposté une deuxieme fois pour le meme sujet. Mais j'ai essaye tout ce que vous m'avez dit et ca marche toujours pas.

Quand j'appuie sur le bouton envoyer, y a rien qui se passe.

Merci quand meme pour ceux qui ont essayé d'apporter des solutions Smiley langue
je te conseille de reprendre ton script au début (à zéro Smiley langue )
et avant de passer quoi que ce soit à ta base , de tester juste ton script pour récupérer les données venant de ton formulaire .

Commence par le bouton de soumission de ton formulaire :


....
<form action='tonscript.php' method='post>
     <p>
         <input type='submit' name='form' value='send' />
</form>

....

// gestion de tes données venant du fomulaire
if($_POST['formu'] == 'send')
    echo 'envoi de données';


... si cela ne fonctionne pas , pas besoin d'aller plus loin !
Enfin le principe c'est de ne pas coder toute ton application et de tester à la fin ; tu perdras plus de temps à débugger qu'à autre chose !

autre point : intercepte les erreurs php en utilisant les 'filtres' , par exemple error_reporting à E_ALL qui te donneront énormément d'informations sur tes erreurs

voilà et bon courage