Rechercher : dans
Par :

Eviter doublons dans une base de donnee

Dernière réponse le 18 fév 2009 à 15:22:50 billboy, le 6 jun 2008 à 11:13:44 
 Signaler ce message aux modérateurs

Bonjour,

je créé un formulaire avec un ajout de pseudo. Mon problème est le suivant: si un je saisi un pseudo déjà présent dans la bbd, il s'enregistre quand même. Pourriez-vous m'indiquer comment résoudre ce petit souci?

merci.

Configuration: Windows XP
Firefox 2.0.0.14

Meilleures réponses pour « eviter doublons dans une base de donnee » dans :
SQL - éviter les doublons dans un SELECT VoirProblème Comment éviter les doublons dans les résultats d'une requête SQL ? Solution Il suffit d'utiliser la clause DISTINCT entre SELECT et les champs. Exemple : SELECT distinct id,nom,prenom FROM matable Plus d'informations ...
Eviter les doublons dans Excel VoirEviter les doublons lors d'un encodage dans un colonne de feuille excel: prendre le format conditionnel sur le première cellule sous les titres (par ex A2) choisir la formule suivante : =NB.SI($A$2:$A$21;A2)>1 mettre là la couleur de fond...
Sauvegarde restauration base de données Mysql VoirL'article suivant va présenter la manière la plus facile pour sauvegarder et restaurer les bases de données Mysql. Sauvegarde Pour sauvegarder une base de données existante il est conseillé de créer un dump. Pour dumper toutes les bases de...
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...
Connexion à la base de données avec JDBC VoirConnexion à la base de données L'API (Application Programming Interface) JDBC, c'est-à-dire la bibliothèque de classes JDBC, se charge de trois étapes indispensables à la connexion à une base de données : la création d'une connexion à la...

1

Remad, le 6 jun 2008 à 11:14:47

Met le tuple "pseudo" en clef primaire, sa devrait éviter les doublons

Répondre à Remad

2

mindslight, le 6 jun 2008 à 11:15:27

Bonjour,

le plus simple est de faire une premiere requette afin de verifier
si l'utilisateur n'existe pas deja.

Répondre à mindslight

3

vlmath, le 6 jun 2008 à 11:16:45

Salut,

Il te suffit de mettre ton champs pseudo comme clé primaire (primery key), et les doublons sur cette clef sont interdit.

@Bientôt

Répondre à vlmath

4

billboy, le 6 jun 2008 à 11:17:33

Je ne peut pa metre le pseudo en en cle primaire car je possede un ID.

mindslight, pourais tu m'indiquer quel requette pourai m'aider? merci

Répondre à billboy

5

mindslight, le 6 jun 2008 à 11:20:08

Re,

tu peux aussi utiliser des clefs primaires composites.

Répondre à mindslight

6

mindslight, le 6 jun 2008 à 11:20:59

Quel sont les champs de ta table et le nom de ta table sql ?

Répondre à mindslight

7

billboy, le 6 jun 2008 à 11:21:24

Je suis novice en ph peut tu m'expliquer ce que c'est une cle primaire composite sil te plait?? merci

Répondre à billboy

8

billboy, le 6 jun 2008 à 11:22:19

Ma table:
id
nom
prenom
adress
pseudo
login

Répondre à billboy

9

mindslight, le 6 jun 2008 à 11:23:05

Une clef primaire composite est une clef generer sur plusieurs champs,
mais je pense que de faire une pre-requette est plus simple

Répondre à mindslight

10

mindslight, le 6 jun 2008 à 11:23:33

Merci,

je redige ta requette tout de suite...

Répondre à mindslight

11

billboy, le 6 jun 2008 à 11:27:29

Ok merci

Répondre à billboy

12

mindslight, le 6 jun 2008 à 11:27:42
  • +2

Function user_exists($login)
{
$sql = 'SELECT `id`
FROM `ma table`
WHERE `login` = \'' . addslashes($login) . '\'
LIMIT 1';
$res = mysql_query($sql) or die (mysql_error());
return (mysql_num_rows($res) == 1);
}

Répondre à mindslight

13

billboy, le 6 jun 2008 à 11:32:28

Ok je vais tester sa tout de suite .

Répondre à billboy

14

billboy, le 6 jun 2008 à 11:35:00

Voici mon code :

<?
include ('config.php');
$login=$_POST['login'];
$mdp=$_POST['mdp'];

if(empty($_POST["login"])||empty($_POST["mdp"]))
{
echo "Atention un des champs n'est pas correctement remplit.<a href='adminlogin.php'>Verifier</a>.";
}


else
{
$req=" INSERT INTO jean (login, mdp) values ('$login','$mdp')";
mysql_query($req);
mysql_query($query);
include("enregistrement.php");
}
?>


pourais tu m'indiquer ou je dois mettre la fonction que tu m'a proposer?merci

Répondre à billboy

15

mindslight, le 6 jun 2008 à 11:39:07

<?php
include ('config.php');
$login=$_POST['login'];
$mdp=$_POST['mdp'];

function user_exists($login)
{
$sql = 'SELECT `id`
FROM `ma table`
WHERE `login` = \'' . addslashes($login) . '\'
LIMIT 1';
$res = mysql_query($sql) or die (mysql_error());
return (mysql_num_rows($res) == 1);
}


if(empty($_POST["login"])||empty($_POST["mdp"]))
{
echo "Atention un des champs n'est pas correctement remplit.<a href='adminlogin.php'>Verifier</a>.";
}


else
{
if (user_exists($login))
{
echo('utilisateur deja enregistrer!<br />');
}
else
{
$req=" INSERT INTO jean (login, mdp) values ('$login','$mdp')";
mysql_query($req) or die(mysql_error());
}
include("enregistrement.php");
}
?>

Répondre à mindslight

16

mindslight, le 6 jun 2008 à 11:41:53

Petite remarque pour ameliorer ton code:

- utilise plus de fonction.
- toujours utiliser mysql_query($req) or die(mysql_error());
- protege t'es requette contre les vilains hacker ;-) avec des addslashes() comme dans ma fonction

Répondre à mindslight

17

billboy, le 6 jun 2008 à 11:42:19

Merci beaucoup sa fonctionne . a+

Répondre à billboy

18

 angelusflm, le 18 fév 2009 à 15:22:50

Dans la même mesure, j'aimerai vérifier que mon champs "date" n'est pas déjà dans la base sinon ca retourne une erreur mais pas seulement. J'aimerai en plus effectuer une modification dans la base, si la personne conforme qu'elle souhaite écraser le contenu précédent.

Je suis pour le moment que sur la partie "vérification" du champs qui ne fonctionne pas bien sur :p. Je vous joints mon code qui est un peut plus complexe que le précédent puisque j'ai une boucle "for" qui me permet d'ajouter autant d'entré que d'utilisateurs. En gras le code de vérification


<?php
if(isset($_POST['valider']))
{

$indice = $_POST['numIndice'];
$valider = $_POST['valider'];
$date = $_POST['date'];

function user_exists($date)
{
$sql = 'SELECT date FROM presence WHERE date = \'' . addslashes($date) . '\' LIMIT 1';
$res = mysql_query($sql) or die (mysql_error());
return (mysql_num_rows($res) == 1);
}


if(empty($_POST["date"]))
{
echo "Attention un des champs n'est pas correctement remplit.<a href='accueil.php'>Verifier</a>.";
}


else
{
if (user_exists($date))
{
echo('date deja enregistrer!<br />');
}
else
{ 


if ( $indice > 0 ) {

for ( $i=0; $i < $indice; $i++ )
{

$nservice=$_POST['nservice'.$i];
$agent=$_POST['agent'.$i];
$nchrono=$_POST['nchrono'.$i];
$etat=$_POST['etat'.$i];
$login=$_POST['login'.$i];

$requete ="INSERT INTO presence (id,nservice,date,agent,nchrono,etat,login) values ('','$nservice','$date','$agent','$nchrono','$etat','$login')";

mysql_query($requete);

}

mysql_close();
echo "La date &agrave; bien &eacute;t&eacute; prise en charge pour les ".$indice." agent";

}

}
else
echo "Merci de bien remplir le formulaire";
?>

 vous pouvez retourner au <a href="accueil.php">menu principal</a>

Répondre à angelusflm