Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/04/2011, 21h10   #1
Invité de passage
 
Inscription : avril 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 28
Points : 2
Points : 2
Par défaut verification d'un champ

salut à tous ,
je veux vérifier si un champ saisi existe déjà dans la base ou non ..
voici le champ saisi :
Code php :
$_POST['cin_client']
je veux le vérifier avec les données existant dans la base de données , voici la requête :
Code php :
$verification=$bdd->query('select CIN_Client from personne_physique');

comme vous voyez j'ai toute la démarche , mais je sais pas quoi utiliser pour faire la vérification ...
et merci d'avance
goldray est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 22h04   #2
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 568
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 568
Points : 2 493
Points : 2 493
Bonjour,

Peut-être un comptage du nombre d'enregistrement ?
Code :
SELECT COUNT(*) FROM personne_physique WHERE cin_client = ?
__________________
Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

F.A.Q. : Java, PHP, (X)HTML / CSS

N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 23h00   #3
Invité de passage
 
Inscription : avril 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 28
Points : 2
Points : 2
peut étre , je suis entrain de l'essayer ..
mais j'ai une petite probléme , au niveau de l'ajout d'in cin_client au niveau de l'interface je veux insérer cin_client =01478523 mais à la base de données MYSQL je trouve ce cin_client sans le chiffre 0 c.a.d 1478523 ???
c'est quoi le problèème !!!!!
goldray est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 23h44   #4
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Ca n'est pas très bon de vérifier si une ligne existe déja en base ou non (j'imagine que tu parlais bien d'une ligne et non d'une colonne derrière enregistrement)
Il est préferable de lancer directement le traitement, et si la ligne n'existe pas le traitement ne se fera pas.

Si l'objectif est d'update si la ligne existe et d'insert si elle n'existe pas alors la norme propose MERGE, mais MySql lui ne propose que ON DUPLICATE KEY qui est moins flexible.

Citation:
je veux insérer cin_client =01478523 mais à la base de données MYSQL je trouve ce cin_client sans le chiffre 0 c.a.d 1478523 ???
Probablement un problème de type de données, si cin_client est de type integer alors le 0 devant le nombre disparaît... et c'est normal, donc si avoir un 0 en 1er caractère est important (comme pour un numéro de teléphone) il faut choisir le type VARCHAR, sinon oublier le 0 devant.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2011, 00h16   #5
Invité de passage
 
Inscription : avril 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 28
Points : 2
Points : 2
salut ,
pour le probléme de "0" j'ai utilisé le type varchar est tout va bien

j'ai un formulaire un insérer dans 2 tables , la 1ére table posséde un clé primaire qui s'incrémente automatique ,méme si il ya une ligne qui existe déja dans cette table il accepte c'est ça le probléme ..donc qu niveau de la 2éme table elle posséde un clé primaire nommé CIN_Client il empéche la duplication ...
donc puisque Id du 1ére table est un clé étrangére du 2éme table ...
donc je veux faire un test par exemple si le num CIN_Client a saisi existe dans la 2éme table donc on affiche un messge "Enregistrement existe deja !"
si non l'insértion se fait !! voici ma proposition mais elle est fausse :
mais peut vous pouvez la modifier
Code :
1
2
3
4
5
6
$verif=$bdd->query('select count(*) from personne_physique where CIN_Client=$_POST[\'cin_client\'] ');
$nbre=mysql_num_rows($verif);
if ($nbre==0)
//insertion se réalise
else 
//enregistrement existe déja !!
d'aprés MYSQL la faute est au niveau de la ligne en gras
j'attend vos avis ..
goldray est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2011, 11h02   #6
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Citation:
la 1ére table posséde un clé primaire qui s'incrémente automatique ,méme si il ya une ligne qui existe déja dans cette table il accepte c'est ça le probléme
Il faut créer une contrainte d'unicité (généralement matérialisée par un index unique) sur la ou les colonnes nécessaires à l'identification de la ligne.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2011, 19h01   #7
Invité de passage
 
Inscription : avril 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 28
Points : 2
Points : 2
@skuatamad:
salut , le problème que la table ne peut posséder un clé unique voici tous les attributs de la table : Id_Client,Adresse_Client,tel_Client ....
Donc puisque cette table posséde une relation avec d'autre table c.a.d le id_Client est le clé étrangère dans une table pour cela j'ai utilisé la fonction "mysql_num_rows() " c'est la solution puisque si elle renvoi un entier > 0 c.a.d le tuple existe déja .. mais le probléme j'utilisa la notion PDO(PHP DATA OBJECTS ) avec la quelle je peux utiliser la fonction "mysql-num_rows() " c'est ça le problème ..donc est ce que vous connaissez une fonction relative à celle qui marche avec PDO .....
merci d'avance
goldray est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2011, 21h39   #8
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Je comprends mal ton explication, désolé.

Mais si tu utilises mysql_num_rows comme précédemment posté alors c'est faux...
Citation:
mysql_num_rows — Retourne le nombre de lignes d'un résultat MySQL
Donc sur un count(*) le nombre de lignes retourné sera invariablement 1, quelque soit le nombre de lignes dans la table... par contre la valeur retournée, elle, sera différente.
Citation:
Donc puisque cette table posséde une relation avec d'autre table
Quelque soit la relation avec d'autres tables, s'il y a une logique métier qui dit que les lignes d'une table ne doivent pas être doublonnée en fonction de certaine(s) colonne(s) alors il faut une contrainte d'unicité sur cette/ces colonne(s)...il n'y a rien à faire d'autres...

STP, pour éviter de commenter inutilement une situation, poste les DDL des tables en questions avec les logiques métiers associés, alors nous pourrons te proposer la meilleure solution.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2011, 01h56   #9
Invité de passage
 
Inscription : avril 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 28
Points : 2
Points : 2
salut je vais explique en détaille qu'est ce que je veux ....
j'ai une interface nommé ajout client , cette interface présente les champs suivants :
Nom Client ,Prénom Client,CIN Client,Tel Client,GSM Client et Adresse Client
...
et j'ai 2 tables au niveau de ma base la 1ére nommée clients d'attributs :Id_Client,Tel_Client,Gsm_Client et Adresse_Client ..et la 2éme table nommée personne_physique d'attributs :CIN_Client,Nom_Client,Prenom_Client,Id_Client(clé étrangère) ...
je veux avant d'insérer un nouveau tuple à ma base , faire un vérification à la l'aide de l'attribut CIN_Client(unique) ...puisque si je vais insérer un tuple déja existant aux 2 tables , le probléme il va se duppliqué au niveau de la table clients !!!

Donc ma proposition est de vérifier si le le CIN_Client de nouveau tuple n'existe pas à la table personne_physique ,pour que l'insertion se réalisera ..si non 1message d'erreur s'affichera ...

Citation:
$verif=$bdd->query('select CIN_Client from personne_physique where CIN_Client=$_POST[\'cin_client\'] ');
//c'est la requete

donc comment je vérifier la réponse envoi par la requete dans l'objet ou la variable $verif ??????????
merci d'avance
goldray est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2011, 02h47   #10
Invité de passage
 
Inscription : avril 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 28
Points : 2
Points : 2
j'ai résolu le probléme enfiiiiiiiiiiiiiiiiiiif

merci à tousssssssssssssssssssssssssssssssssssssssss

voici la solution :
Code :
1
2
3
4
5
6
7
8
9
10
11
$verif=$bdd->prepare('select * from personne_physique where CIN_Client="'.$_POST['cin_client'].'"');
$verif->execute();
$nbre=$verif->rowCount();
IF($nbre==0)
{
//insertion
}
else
{
//message d'erreur
}
et désolé pour le dérangement
goldray est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h25.


 
 
 
 
Partenaires

Hébergement Web