Script de vérification pour avoir un username unique

reddjo Messages postés 3 Date d'inscription jeudi 15 avril 2010 Statut Membre Dernière intervention 24 avril 2010 - 24 avril 2010 à 07:52
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 24 avril 2010 à 17:23
Bonjour à tous,

Je dois créer un site web qui permettrait aux utilisateurs de créer des questionnaires publics et analyser les résultats, un peu de la même façon que Monkey survey.

J'ai créer les pages de login - index - enregistrement.

Cependant, j'aimerais implémenter un script If - Else qui vérifierait si l'username existe déja dans la base de données avant de l'encoder.

voici le code des pages :
[u]
Le Formulaire /u

< method="POST" action= "enregistrement.php">
Username :,
,

----

Password :,
,

----

Nom,
,

----

Prénom,
,

----

Email,



</form>

enregistrement.php

<?php
$user = $_POST['username'];
$pwd = $_POST['password'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$email = $_POST['email'];

// Open connection
$db="survey";
$link = mysql_connect("localhost","root","") or die('Erreur de connexion');
mysql_select_db($db, $link) or die("Select Error: ".mysql_error());

//Query
$sql = "INSERT INTO log (username, password, nom, prenom, email) VALUES ('$user','$pwd','$nom','$prenom','$email')";
$result = mysql_query($sql) or die("Insert Error: ".mysql_error());

//Close
mysql_close($link);

header('Location: index.php?consultandcreate');
?>

Comme vous pouvez le constater le niveau est très basique donc dans la page enregristement j'aimerais qu'avant l'implémentation dans la base de donnée qu'ils verifient si ca n'existe pas déja( Pour préciser l'implémentation fonctionne correctement x) ).
bien entendu j'ai chercher sur le site des possiblitées.

# $sql "SELECT username FROM log WHERE user '$user'";
#
# $row = mysql_fetch_assoc(mysql_query($sql));
#
#
#
# if( $row['user'] == $user ){
#
# print ' Ce pseudo existe déja. Choisissez un nouveau, s'il vous plaît.

';
#
#
# } else {
....

Mais ca ne m'aide pas vraiment, c'est pourquoi je fais appel à vous.


Merci de m'avoir lu

Cordialement, Reddjo.

7 réponses

reddjo Messages postés 3 Date d'inscription jeudi 15 avril 2010 Statut Membre Dernière intervention 24 avril 2010 1
24 avril 2010 à 10:35
MErci pour vos réponses rapides :)

Kohntark, notre professeur aimerait une fonction if - else, le site est guidé par certaines consignes afin d'apprendre à gérer les différentes fonctions etc.

Donc vamos je me suis basé sur ce que tu m'as dit pour modifier le code et rajouter la fonction insert dans le else.


<?php
$user = $_POST['username'];
$pwd = $_POST['password'];
$pwd2 = $_POST['password2'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$email = $_POST['email'];

if(1){
// Open connection
include "surveyconnect.php";

//Query

$sql "SELECT username FROM log WHERE username '$user'";
$row = mysql_fetch_assoc(mysql_query($sql));


if( $row['user'] == $user ){

print "Ce pseudo existe déja. Choisissez un nouveau.";}

else {

$sql2 = "INSERT INTO log (username, password, nom, prenom, email) VALUES ('$user','$pwd','$nom','$prenom','$email')";
$result = mysql_query($sql2) or die("Insert Error: ".mysql_error());


header('Location: index.php');

//Close
mysql_close($link);


}

?>

Remarques : l include du début, c'est juste pour se connecter à la base de données.

Avec ce nouveau code ca ne marche plus du tout j'ai une erreur : parse error ligne 38 ( qui est en faite la dernière ligne : ?>
1
Vamosplaya Messages postés 127 Date d'inscription vendredi 16 octobre 2009 Statut Membre Dernière intervention 10 décembre 2012
24 avril 2010 à 09:51
Bonjour,

Euh..... tu as la réponse dans ton post

après ton else tu fais le insert puisque dans ce cas le username existe pas.


Vamos
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
24 avril 2010 à 10:03
Salut,

Mais ca ne m'aide pas vraiment

Pourquoi donc ?

Plutôt que passer plusieurs requêtes (une pour tester l'existence, une pour l'INSERT) :
- tu définis le champ username comme unique dans la DB
- tu fais ton INSERT
- tu testes l'éventuel code d'erreur retourné (mysql_errno()) :
0 => insertion OK
1062 => erreur, l'username existe déjà


Cordialement,


Kohntark -
0
Vamosplaya Messages postés 127 Date d'inscription vendredi 16 octobre 2009 Statut Membre Dernière intervention 10 décembre 2012
24 avril 2010 à 11:04
ton if(1){ n'est pas fermé

Vamos
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Vamosplaya Messages postés 127 Date d'inscription vendredi 16 octobre 2009 Statut Membre Dernière intervention 10 décembre 2012
24 avril 2010 à 11:06
ou ton else {
$sql2 = "......

Vamos
0
reddjo Messages postés 3 Date d'inscription jeudi 15 avril 2010 Statut Membre Dernière intervention 24 avril 2010 1
24 avril 2010 à 11:21
Merci beaucoup tout fonctionne =)
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
24 avril 2010 à 17:23
Kohntark, notre professeur aimerait une fonction if - else, le site est guidé par certaines consignes afin d'apprendre à gérer les différentes fonctions etc.

Ok ok ... mais ce que je te propose n'empêche en rien un if/else (test sur le rapport d'erreur de mysql) et c'est tout de même bien plus logique selon moi (on limite le nombre de requêtes et on sécurise à la source)

Il semble y avoir pas mal d'erreurs dans ton code et je me demande bien comment il peut fonctionner correctement.
Peux tu nous montrer le résultat final ?

Cordialement,



Kohntark -
0
Rejoignez-nous