Page 1 sur 2

ecriture sur une table

Posté : 28 juin 2011, 03:47
par olivxii
bonjour, j'ai un formulaire d'espace membre, j'ai donc crée ma table :
CREATE TABLE membre (
   id_membre int(10),
   id varchar(20),
   pseudo varchar(20),
   passe varchar(20),
   email varchar(100),
   ville varchar(200)
);
ensuite j'ai un formulaire d'inscription :
<?
require("conf.php");

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.php"; 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=\"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($ville==""){echo "Vous n'avez pas saisi la ville<br><br><a href=\"javascript:window.history.back()\">Retour</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=\"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($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\",\"$email\",\"$ville\")",$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é. vous pouvez vous connecter a votre espace et commencer a <b>heberger</b>,identifiez vous avec votre <b>pseudo</b> et <b>password</b><br> pour tout probléme ou aide sur le fonctionnement de l'hebergeur, utiliser le <b>forum</b></a> mis a votre disposition";
	}



break;


/*-----------------------------------------------------------------*/
/*	AFFICHAGE DU FORMULAIRE			*/
/*-----------------------------------------------------------------*/

default;
echo "	
	<form action=\"adduser.php\" method=\"post\">
	<input type=\"hidden\" name=\"action\" value=\"add\">
	Chosissez un pseudo<br><input type=\"text\" name=\"pseudo_membre\"><br>
	Chosissez un mot de passe<br><input type=\"password\" name=\"passe_membre\"><br>
	<! -- CHAMPS SUPLEMENTAIRES, décommentez les 2 lignes suivantes -->
	Votre Email<br><input type=\"text\" name=\"email\"><br> 
	Votre Ville<br><input type=\"text\" name=\"ville\"><br> 
	<input type=\"submit\" value=\"Envoyer\">
	</form>
	";
break;
}
?>
le soucis est qu'il n'ecrit pas sur la table, mon dossier config est bien renseigné et je n'est pas de message d'erreur.

merci

Re: ecriture sur une table

Posté : 28 juin 2011, 04:04
par devlop78
C'est le moment d'apprendre à débueuger ...

Essaie de voir si tout se déroule comme prévu ,avec des "echo" par exemple, des exit, etc, afin de voir quel parcours il prend, s'il va bien dans tel if, etc.

Re: ecriture sur une table

Posté : 28 juin 2011, 04:09
par olivxii
en faite j'ai ecrit manuelement sur la table, mais quand j'essais de me connecter il me dit identifiant ou mot de passe incorect .. comme si il ne comuniquait pas avec la bdd.

Re: ecriture sur une table

Posté : 28 juin 2011, 06:45
par epommate2
Bon... il y a énormément de boulot.

En premier lieu, il faut que tu active toutes les erreurs.

Est-ce que ton error_reporting est à E_ALL|E_STRICT ?

Ensuite, enlève le @ devant mysql_connect (et n'utilise pas les @ de manière générale, sauf s'il y a une excellente raison)

** Puis, sauf erreur de ma part, on dirait bien qu'il manque la sélection de la BD (http://www.php.net/manual/fr/function.m ... ect-db.php) **

Enfin, mais cela n'a rien à voir avec ton problème, enlève moi cet horrible switch-case et fait deux fichiers : un pour l'affichage du formulaire, l'autre pour le traitement.

Re: ecriture sur une table

Posté : 28 juin 2011, 06:56
par olivxii
j'ai retiré les @ mais toujours pareil, j'avais deja ce code sur un autre site a l'epoque et il fonctionnais tres bien, j'ai l'impression qu'il n'y a pas de connexion entre la bdd..

Re: ecriture sur une table

Posté : 28 juin 2011, 06:59
par epommate2
L'erreur est forcément ici :

on dirait bien qu'il manque la sélection de la BD

Re: ecriture sur une table

Posté : 28 juin 2011, 07:04
par olivxii
j'ai essayé comme ca :
// CONNEXION A LA BASE DE DONNEE
$link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if (!$link) {
   die('Impossible de se connecter : ' . mysql_error());
}
// Rendre la base de données foo, la base courante
$db_selected = mysql_select_db('foo', $link);
if (!$db_selected) {
   die ('Impossible de sélectionner la base de données : ' . mysql_error());
mais pareil ..

Re: ecriture sur une table

Posté : 28 juin 2011, 07:06
par epommate2
Il faut en générale lire ou au moins survoler les pages du manuel ...

J'imagine que ta base de données ne s'appelle pas 'foo' ?

Re: ecriture sur une table

Posté : 28 juin 2011, 07:18
par olivxii
oops ..
// CONNEXION A LA BASE DE DONNEE
$link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if (!$link) {
   die('Impossible de se connecter : ' . mysql_error());
}
// Rendre la base de données p796_5, la base courante
$db_selected = mysql_select_db('p796_5', $link);
if (!$db_selected) {
   die ('Impossible de sélectionner la base de données : ' . mysql_error());
mais pareil et pas de message d'erreur ..

Re: ecriture sur une table

Posté : 28 juin 2011, 07:21
par epommate2
Bon, c'est truffé d'erreur, dans ton premier script, le lien qui sort de mysql_connect s'appelle $db_link et après tu utilise la variable $sql_bdd pour parler de cette connexion ...

Ce qui est étonnant c'est qu'il n'affiche pas d'erreur....

Tu es sur d'avoir mis le error_reporting à E_ALL ?

Re: ecriture sur une table

Posté : 28 juin 2011, 07:25
par olivxii
tu m'excusera mais je ne suis pas une fleche en php :oops:

Re: ecriture sur une table

Posté : 28 juin 2011, 08:30
par epommate2
Tu es tout excusé :-)

ok...

Tu as remplacé $sql_bdd par $db_link partout ?

Re: ecriture sur une table

Posté : 28 juin 2011, 08:39
par olivxii
je comprend pas pourquoi remplacer sql_bdd par db_link ?
<?
/*-----------------------------------------------------------------*/
/*	VARIABLES A MODIFIER			*/
/*-----------------------------------------------------------------*/

// SERVEUR SQL
$sql_serveur="***************";

// LOGIN SQL
$sql_user="nexxupload2";

// MOT DE PASSE SQL
$sql_passwd="*********";

// NOM DE LA BASE DE DONNEES
$sql_bdd="nexxupload2";

// REDIRECTION VERS UNE PAGE ERREUR AU CAS OU LE LOGIN ET MOT DE PASSE SONT INVALIDES
$url_erreur="erreur.htm";

// PAGE PRINCIPALE PROTEGEE PAR MOT DE PASSE
$zone_membre="gallery.php";
?>
<?

require("conf.php");

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

case "add";

// CONNEXION A LA BASE DE DONNEE
$db_link= mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if (!$link) {
   die('Impossible de se connecter : ' . mysql_error());
}
// Rendre la base de données nexxupload2, la base courante
$db_selected = mysql_select_db('nexxupload2', $link);
if (!$db_selected) {
   die ('Impossible de sélectionner la base de données : ' . mysql_error());
}
// 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=\"javascript:window.history.back()\">Retour</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=\"javascript:window.history.back()\">Retour</a>";exit;}
if($ville==""){echo "Vous n'avez pas saisi la ville<br><br><a href=\"javascript:window.history.back()\">Retour</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=\"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($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\",\"$email\",\"$ville\");",$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?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.php\" method=\"post\">
	<input type=\"hidden\" name=\"action\" value=\"add\">
	Chosissez un pseudo<br><input type=\"text\" name=\"pseudo_membre\"><br>
	Chosissez un mot de passe<br><input type=\"password\" name=\"passe_membre\"><br>
	<! -- CHAMPS SUPLEMENTAIRES, décommentez les 2 lignes suivantes -->
	Votre email<br><input type=\"text\" name=\"email\"><br>
	Ville<br><input type=\"text\" name=\"ville\"><br> 
	<input type=\"submit\" value=\"Envoyer\">
	</form>
	<font face=\"Verdana\" size=\"2\"><a href=\"index.htm\">Se connecter</a></font>";
break;
}
?>

Re: ecriture sur une table

Posté : 28 juin 2011, 08:47
par epommate2
oops, je me suis planter de fonction....

je regarde plus en détail.

Re: ecriture sur une table

Posté : 28 juin 2011, 08:51
par epommate2
Lol,

il manque un :
if (isset($_POST['action'])){
$action = $_POST['action'];
} else  {
$action = "";
}