Eviter doublons dans une base de donnee
Résolu/Fermé
A voir également:
- Eviter doublons dans une base de donnee
- Formules excel de base - Guide
- Supprimer les doublons excel - Guide
- Doublons photos - Guide
- Périphérique système de base ✓ - Forum Pilotes (drivers)
- Échec inscription base gigaset ✓ - Forum telephonie fixe
18 réponses
mindslight
Messages postés
87
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
29 octobre 2009
12
6 juin 2008 à 11:27
6 juin 2008 à 11:27
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);
}
{
$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);
}
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
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 à bien été 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>
Remad
Messages postés
1662
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
27 juillet 2012
680
6 juin 2008 à 11:14
6 juin 2008 à 11:14
Met le tuple "pseudo" en clef primaire, sa devrait éviter les doublons
mindslight
Messages postés
87
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
29 octobre 2009
12
6 juin 2008 à 11:15
6 juin 2008 à 11:15
Bonjour,
le plus simple est de faire une premiere requette afin de verifier
si l'utilisateur n'existe pas deja.
le plus simple est de faire une premiere requette afin de verifier
si l'utilisateur n'existe pas deja.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
vlmath
Messages postés
793
Date d'inscription
vendredi 20 octobre 2006
Statut
Contributeur
Dernière intervention
4 septembre 2011
160
6 juin 2008 à 11:16
6 juin 2008 à 11:16
Salut,
Il te suffit de mettre ton champs pseudo comme clé primaire (primery key), et les doublons sur cette clef sont interdit.
@Bientôt
Il te suffit de mettre ton champs pseudo comme clé primaire (primery key), et les doublons sur cette clef sont interdit.
@Bientôt
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
mindslight, pourais tu m'indiquer quel requette pourai m'aider? merci
mindslight
Messages postés
87
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
29 octobre 2009
12
6 juin 2008 à 11:20
6 juin 2008 à 11:20
re,
tu peux aussi utiliser des clefs primaires composites.
tu peux aussi utiliser des clefs primaires composites.
mindslight
Messages postés
87
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
29 octobre 2009
12
6 juin 2008 à 11:20
6 juin 2008 à 11:20
quel sont les champs de ta table et le nom de ta table sql ?
je suis novice en ph peut tu m'expliquer ce que c'est une cle primaire composite sil te plait?? merci
mindslight
Messages postés
87
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
29 octobre 2009
12
6 juin 2008 à 11:23
6 juin 2008 à 11:23
une clef primaire composite est une clef generer sur plusieurs champs,
mais je pense que de faire une pre-requette est plus simple
mais je pense que de faire une pre-requette est plus simple
mindslight
Messages postés
87
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
29 octobre 2009
12
6 juin 2008 à 11:23
6 juin 2008 à 11:23
merci,
je redige ta requette tout de suite...
je redige ta requette tout de suite...
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
<?
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
mindslight
Messages postés
87
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
29 octobre 2009
12
6 juin 2008 à 11:39
6 juin 2008 à 11:39
<?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");
}
?>
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");
}
?>
mindslight
Messages postés
87
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
29 octobre 2009
12
6 juin 2008 à 11:41
6 juin 2008 à 11:41
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
- 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