ecriture sur une table

Eléphant du PHP | 119 Messages

28 juin 2011, 03:47

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

devlop78
Invité n'ayant pas de compte PHPfrance

28 juin 2011, 04:04

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.

Eléphant du PHP | 119 Messages

28 juin 2011, 04:09

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.

Eléphant du PHP | 209 Messages

28 juin 2011, 06:45

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.
--
Eric

Eléphant du PHP | 119 Messages

28 juin 2011, 06:56

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..

Eléphant du PHP | 209 Messages

28 juin 2011, 06:59

L'erreur est forcément ici :

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

Eléphant du PHP | 119 Messages

28 juin 2011, 07:04

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 ..

Eléphant du PHP | 209 Messages

28 juin 2011, 07:06

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' ?
--
Eric

Eléphant du PHP | 119 Messages

28 juin 2011, 07:18

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 ..

Eléphant du PHP | 209 Messages

28 juin 2011, 07:21

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 ?
--
Eric

Eléphant du PHP | 119 Messages

28 juin 2011, 07:25

tu m'excusera mais je ne suis pas une fleche en php :oops:

Eléphant du PHP | 209 Messages

28 juin 2011, 08:30

Tu es tout excusé :-)

ok...

Tu as remplacé $sql_bdd par $db_link partout ?
--
Eric

Eléphant du PHP | 119 Messages

28 juin 2011, 08:39

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;
}
?>

Eléphant du PHP | 209 Messages

28 juin 2011, 08:47

oops, je me suis planter de fonction....

je regarde plus en détail.
--
Eric

Eléphant du PHP | 209 Messages

28 juin 2011, 08:51

Lol,

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