Comparaison de requete SQL
Résolu
smoutsmout
Messages postés
160
Date d'inscription
Statut
Membre
Dernière intervention
-
smoutsmout Messages postés 160 Date d'inscription Statut Membre Dernière intervention -
smoutsmout Messages postés 160 Date d'inscription Statut Membre Dernière intervention -
Bonjour bonjour,
Voila, je fais une petite application php, je doit récupérer des données dans un formulaire et les entrer dans une base de données SQLServer. Jusque là rien de compliqué.
Mais avant d'enregistrer les données je voudrais vérifier si l'enregistrement n'existe pas déjà.
Pour cela je me base sur 3 champs (nom, prénom et date de naissance).
Je ne sais pas comment m'y prendre pour ce contrôle.
Si quelqu'un a une idée....
Merci d'avance pour votre aide.
Voila, je fais une petite application php, je doit récupérer des données dans un formulaire et les entrer dans une base de données SQLServer. Jusque là rien de compliqué.
Mais avant d'enregistrer les données je voudrais vérifier si l'enregistrement n'existe pas déjà.
Pour cela je me base sur 3 champs (nom, prénom et date de naissance).
Je ne sais pas comment m'y prendre pour ce contrôle.
Si quelqu'un a une idée....
Merci d'avance pour votre aide.
A voir également:
- Comparaison de requete SQL
- Comparaison million milliard - Accueil - Technologies
- Logiciel comparaison photo gratuit - Télécharger - Photo & Graphisme
- Logiciel sql - Télécharger - Bases de données
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Java
- Sql lister les tables ✓ - Forum Programmation
32 réponses
Tu fais un select basé sur ces 3 champs : si tu as 0 ligne en retour, c'est que l'enregistrement existe déjà. Sinon, tu peux lancer la requête d'insertion.
D'accord.
Et comment je fais pour savoir si il y a un résultat ?
Ca peut paraitre débile comme question mais je suis pas trop douée,lol.
Et comment je fais pour savoir si il y a un résultat ?
Ca peut paraitre débile comme question mais je suis pas trop douée,lol.
Tu peux faire simplement le test après avoir affecté le résultat de ta requète dans
$resultat:
if(mssql_num_rows($resultat) == 0) { //Enregistrement présent dans la base }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai fait ca.
Dans le formulaire je saisi des champs qui n'exixtent pas dans la base donc il devrait ajouter l'enregistrement.
Je n'ais pas de message d'erreur mais il ne se passe rien dans ma base de données.
<?php
//script de connexion à la base sous SQLServer
include("connexion.inc");
//connexion à la base de données
$con=mssql_connect($host,$user,$pass)or die ("Probleme de connexion au serveur");
mssql_select_db($BDD,$con)or die ("Problème d'accès à la base de données bdd_test_pilotes");
//récupération des données formulaire
$table="pilotes";
$nom=""; if(!empty($_POST["fnom"]))
$pays=$_POST["fnom"];
$prenom=""; if(!empty($_POST["fprenom"]))
$pays=$_POST["fprenom"];
$date=""; if(!empty($_POST["fdate"]))
$pays=$_POST["fdate"];
// Recherche le numero du pays
$query = "SELECT nom, prenom, date_naissance FROM $table WHERE nom='$nom, prenom=$prenom, date_naissance=$date'";
if(($nom!='')&&($prenom!='')&&($date!=''))
{
$result = mssql_query($query);
if (mssql_num_rows($result) == 0)
{
$query1 = "insert into $table (code, nom, prenom, date_naissance) values ('000002', $nom, $prenom, $date)";
}
else
{
echo "Enregistrement déjà présent dans la base de données.";
}
}
@mssql_close(); // Fermeture de la connexion
?>
Ou est le probleme ?
Dans le formulaire je saisi des champs qui n'exixtent pas dans la base donc il devrait ajouter l'enregistrement.
Je n'ais pas de message d'erreur mais il ne se passe rien dans ma base de données.
<?php
//script de connexion à la base sous SQLServer
include("connexion.inc");
//connexion à la base de données
$con=mssql_connect($host,$user,$pass)or die ("Probleme de connexion au serveur");
mssql_select_db($BDD,$con)or die ("Problème d'accès à la base de données bdd_test_pilotes");
//récupération des données formulaire
$table="pilotes";
$nom=""; if(!empty($_POST["fnom"]))
$pays=$_POST["fnom"];
$prenom=""; if(!empty($_POST["fprenom"]))
$pays=$_POST["fprenom"];
$date=""; if(!empty($_POST["fdate"]))
$pays=$_POST["fdate"];
// Recherche le numero du pays
$query = "SELECT nom, prenom, date_naissance FROM $table WHERE nom='$nom, prenom=$prenom, date_naissance=$date'";
if(($nom!='')&&($prenom!='')&&($date!=''))
{
$result = mssql_query($query);
if (mssql_num_rows($result) == 0)
{
$query1 = "insert into $table (code, nom, prenom, date_naissance) values ('000002', $nom, $prenom, $date)";
}
else
{
echo "Enregistrement déjà présent dans la base de données.";
}
}
@mssql_close(); // Fermeture de la connexion
?>
Ou est le probleme ?
$table="pilotes"; $nom=""; if(!empty($_POST["fnom"])) $pays=$_POST["fnom"]; $prenom=""; if(!empty($_POST["fprenom"])) $pays=$_POST["fprenom"]; $date=""; if(!empty($_POST["fdate"])) $pays=$_POST["fdate"];
Ton code d'affectation des données du formulaire (ci-dessus) n'est pas clair du tout : pourquoi affectes-tu à la suite 3 valeurs différentes à la suite à $pays?? Et pourquoi cette variable s'appelle-t-elle pays? :-)
Je te suggère donc pour que cela fonctionne:
$table="pilotes"; $nom=""; if(!empty($_POST["fnom"])) $nom=$_POST["fnom"]; $prenom=""; if(!empty($_POST["fprenom"])) $prenom=$_POST["fprenom"]; $date=""; if(!empty($_POST["fdate"])) $date=$_POST["fdate"];
oups sorry.
le truc c'est pas ca, c'était pas la bonne sauvegarde.
c'est ca en fait :
$table="pilotes";
$nom=""; if(!empty($_POST["fnom"]))
$nom=$_POST["fnom"];
$prenom=""; if(!empty($_POST["fprenom"]))
$prenom=$_POST["fprenom"];
$date=""; if(!empty($_POST["fdate"]))
$date=$_POST["fdate"];
c'est sur que c'était pas logique lol.
le truc c'est pas ca, c'était pas la bonne sauvegarde.
c'est ca en fait :
$table="pilotes";
$nom=""; if(!empty($_POST["fnom"]))
$nom=$_POST["fnom"];
$prenom=""; if(!empty($_POST["fprenom"]))
$prenom=$_POST["fprenom"];
$date=""; if(!empty($_POST["fdate"]))
$date=$_POST["fdate"];
c'est sur que c'était pas logique lol.
Bonjour
Les apostrophes doivent être autour de chaque valeur de champ :
de plus, ce test if(($nom!='')&&($prenom!='')&&($date!='')) est absurde : c'est toi qui as mis de valeurs dans les variables $nom, $prenom, etc...
Ne crois pas qu'elles sont modifiées par la requête.
Ce qu'il faut c'est vérifier si la requête te renvoie au moins une ligne de résultat, ce qui doit pouvoir se faire par un SELECT COUNT(*) from $table etc...
Les apostrophes doivent être autour de chaque valeur de champ :
$query = "SELECT nom, prenom, date_naissance FROM $table WHERE nom='$nom', prenom='$prenom', date_naissance='$date'";
de plus, ce test if(($nom!='')&&($prenom!='')&&($date!='')) est absurde : c'est toi qui as mis de valeurs dans les variables $nom, $prenom, etc...
Ne crois pas qu'elles sont modifiées par la requête.
Ce qu'il faut c'est vérifier si la requête te renvoie au moins une ligne de résultat, ce qui doit pouvoir se faire par un SELECT COUNT(*) from $table etc...
D'ailleurs, il y a une erreur de syntaxe, les conditions doivent être reliées par des AND
$query = "SELECT nom, prenom, date_naissance FROM $table WHERE nom='$nom' AND prenom='$prenom' AND date_naissance='$date'";
Je veux bien te croire si tu dis que c'est absurde, je sais pas a quoi ca sert ca.
J'ai repris le code d'une autre appli pour faire ca, comme y avait ca et je ne savais pas à quoi ca sert j'ai préféré pas y toucher.
Donc si je te suis bien, dans $query, je doit mettre la requete select count(*)
c'est ca ?
J'ai repris le code d'une autre appli pour faire ca, comme y avait ca et je ne savais pas à quoi ca sert j'ai préféré pas y toucher.
Donc si je te suis bien, dans $query, je doit mettre la requete select count(*)
c'est ca ?
Pardon, je crois bien que j'avais lu ton script un peu trop vite. Il n'est pas absurde.
Oublie tout ce que j'ai dit, sauf la remarque sur les apostrophes message 9
Les apostrophes doivent être autour de chaque valeur de champ :
mais il faut aussi exécuter ta requête $query1 si tu veux qu'elle fasse quelque chose dans ta base !
i
Oublie tout ce que j'ai dit, sauf la remarque sur les apostrophes message 9
Les apostrophes doivent être autour de chaque valeur de champ :
$query = "SELECT nom, prenom, date_naissance FROM $table WHERE nom='$nom', prenom='$prenom', date_naissance='$date'";
mais il faut aussi exécuter ta requête $query1 si tu veux qu'elle fasse quelque chose dans ta base !
i
f (mssql_num_rows($result) == 0) { $query1 = "insert into $table (code, nom, prenom, date_naissance) values ('000002', $nom, $prenom, $date)"; mssql_query($query1); }
$query = "SELECT nom, prenom, date_naissance FROM ".$table." WHERE nom='".$nom."' AND prenom='".$prenom".' AND date_naissance='".$date."'"; $rs=mssql_query($query, $con); if(mssql_num_rows($rs)!=0) { echo("Utilisateur déja enregistré"); } else { mssql_query("INSERT INTO ".$table." (nom, prenom, date_naissance) VALUES ('".$nom."', '".$prenom."', '".$date."')", $con); }
si ton champ code est en auto increment ou serial, tu ne dois pas le mettre dan ta requête
décidément, je n'y arriverai pas... Il faut bien les AND aussi
$query = "SELECT nom, prenom, date_naissance FROM $table WHERE nom='$nom' AND prenom='$prenom' AND date_naissance='$date'";
$query = "SELECT nom, prenom, date_naissance FROM $table WHERE nom='$nom' AND prenom='$prenom' AND date_naissance='$date'";
j'ai bien mis les apostrophes.
et j'ai rajouté la ligne que tu m'a dit.
Mais il ne se passe rien dans la base.
et j'ai pas de message d'erreur c'est déjà bien. hi
et j'ai rajouté la ligne que tu m'a dit.
Mais il ne se passe rien dans la base.
et j'ai pas de message d'erreur c'est déjà bien. hi
toto : J'ai bien rajouté les and aussi tkt, lol. ca fait rien.
niahoo : dsl ta solution ne marche pas non plus
C'est le néant aucune action, la requete insert ne s'effectue pas
mystère....lol
niahoo : dsl ta solution ne marche pas non plus
C'est le néant aucune action, la requete insert ne s'effectue pas
mystère....lol
essaie de lui rajouter des signalemens, comme ça:
$query = "SELECT nom, prenom, date_naissance FROM ".$table." WHERE nom='".$nom."' AND prenom='".$prenom".' AND date_naissance='".$date."'"; $rs=mssql_query($query, $con); if(mssql_num_rows($rs)!=0) { echo("Utilisateur déja enregistré"); } else { if(!mssql_query("INSERT INTO ".$table." (nom, prenom, date_naissance) VALUES ('".$nom."', '".$prenom."', '".$date."')", $con)) { echo("samarshpa"); } else { echo("c bon"); } }