Login unique et redirection

Résolu
blackvault Messages postés 16 Date d'inscription vendredi 24 février 2006 Statut Membre Dernière intervention 8 mars 2006 - 24 févr. 2006 à 13:43
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 24 févr. 2006 à 14:19
Mon problème est le suivant: je souhaite faire en sorte que les membres
qui s'inscrivent sur mo site ait tous un identifiant (login)
différentles uns des autres. Je fais donc dans mon code php pour
ajouter un utilisateur un test vérifiant si le login choisi correspond
déj àa qqun dans la base de donnees "utilisateur". Problème: si le
futur membre incsrit un login déjà utilisé il n'est pas inscrit dans ma
base de données mais pourtant après cliquer sur "enregistrer mes
informations" le lien lui demandant de recommencer car le login est
déjà utiliser ne s'affiche pas (pire il est écrit Bonjour "prenom"
etc...)

Pouvez vous m'indiquer ce que je dois changer dans mon code (dans ma table, mon php)??



PS: j'ai mis dans ma table utilisateur le caractère UNIQUE à login en pensant que ca servirait a qq chose...

PS: vous comprenez bien que je débute totalement en php!



Voici ma base de données utilisateur (ou membre)

--

-- Structure de la table `utilisateur`

--



CREATE TABLE `utilisateur` (

`id` int(5) NOT NULL auto_increment,

`nom` varchar(30) NOT NULL default '',

`prenom` varchar(30) NOT NULL default '',

`password` varchar(15) NOT NULL default '',

`membre` char(1) NOT NULL default '',

`mail` varchar(30) NOT NULL default '',

`tel` int(10) NOT NULL default '0',

`newsletter` int(1) NOT NULL default '0',

`login` varchar(15) NOT NULL default '',

PRIMARY KEY (`id`),

UNIQUE KEY `login` (`login`) //ai-je besoin de mettre UNIQUE????

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;



voici mon code php pour ajouter un utilisateur:



<?

/* prend les informations soumises par l'utilisateur et les integre

dans la base de données

*/



require_once("connexion2.php");

//connexion à la bd

$nom=$_POST['nom'];

$login=$_POST['login'];

$mail=$_POST['mail'];

$prenom=$_POST['prenom'];

$pass=$_POST['pass'];

$telephone=$_POST['telephone'];

$query2="SELECT login FROM utilisateur WHERE login=$login";

$res=TRUE;

$res=mysql_query($query2);

echo $res;

if ($res==TRUE) { ?> [?page=inscription login
déjà pris veuillez en trouve un autre]' <? // je veux que
quand le login est déjà utilisé par qqun d'autre un lien s'affiche pour
lui signifier de recommencer.... et ca marche pas!! }

else{

if (preg_match("/\@eleves\.enpc\.fr$/",$mail))

{

$query="INSERT INTO
utilisateur(nom,mail,login,prenom,password,tel,membre) VALUES
('$nom','$mail','$login','$prenom','$pass','$telephone','1')";

mysql_query($query);

//echo $query;

}

else

{

$query="INSERT INTO
utilisateur(nom,mail,login,prenom,password,tel,membre) VALUES
('$nom','$mail','$login','$prenom','$pass','$telephone','0')";

mysql_query($query);

//echo $query;

}

?>



Inscription








Bonjour

<? $select="SELECT prenom from utilisateur where utilisateur.prenom= '$prenom'";

$ret=mysql_query($select);

$verif=mysql_fetch_object($ret);

echo $prenom; ?>



Tu es bien inscrit(e) sur le site du Bitum*



<?

}

?>



et voici mon formulaire pour l'inscription d'un utilisateur du site



Formulaire d'inscription


<form action="?page=ajout_utilisateurs" method='post'>

Nom :,

,

----

Pr&eacutenom :,

,

----

Login :,

,

----

T&eacutel&eacutephone :,

,

----

Mail :,

,

----

Password :,

,

----

&nbsp;,


Attention si tu es élève

</form>

4 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
24 févr. 2006 à 14:19
Non non, tu as un problème au niveau de la détection. Et c'est normal là :

$query2="SELECT login FROM utilisateur WHERE login='$login'";
$res=mysql_query($query2);
if (mysql_num_rows ($res) > 0) {
// login déjà pris
}
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
24 févr. 2006 à 14:00
Hello,

if ($res==TRUE)

mysql_query () renvoie une ressource si la requête a fonctionné, ou false si elle a échoué.
Fais plutôt ceci :


$query2="SELECT login FROM utilisateur WHERE login=$login";
$res=mysql_query($query2);
if (mysql_num_rows ($res) > 0) {
// login déjà pris
}
0
blackvault Messages postés 16 Date d'inscription vendredi 24 février 2006 Statut Membre Dernière intervention 8 mars 2006
24 févr. 2006 à 14:12
ca ne semble pas marcher... il me renvoi toujours sur la page où il me dit "Bonjour "prenom" t ues bien inscrit patati patata"

et il me un warning (avant bien sur): Warning: mysql_num_rows(): supplied argument is not a valid MySQL result
resource in x:\eleves\7promo\trousseau.de clés\kit\ajout_utilisateurs.php



en gros l'unicité du login je l'ai, ca c bon je pense, le problème
c'est que la page disant, apres l'inscription, que le login est deja
utilisé ne s'affiche pas...
0
blackvault Messages postés 16 Date d'inscription vendredi 24 février 2006 Statut Membre Dernière intervention 8 mars 2006
24 févr. 2006 à 14:12
peux tu m'aider encore stp?
0
Rejoignez-nous