Comparaison de requete SQL

Résolu/Fermé
smoutsmout Messages postés 160 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 9 janvier 2009 - 8 janv. 2009 à 14:24
smoutsmout Messages postés 160 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 9 janvier 2009 - 8 janv. 2009 à 18:01
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.

32 réponses

smoutsmout Messages postés 160 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 9 janvier 2009
8 janv. 2009 à 17:16
Avant j'y rentrais de sur, maintenant on dirais que non.

voici le code :

<?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"]))
$nom=$_POST["fnom"];
$prenom=""; if(!empty($_POST["fprenom"]))
$prenom=$_POST["fprenom"];
$date=""; if(!empty($_POST["fdate"]))
$date=$_POST["fdate"];

//controle
$query = "SELECT nom, prenom, date_naissance FROM".$table."WHERE nom='".$nom."' AND prenom='".$prenom."' AND date_naissance='".$date."'";

if(($nom!='')&&($prenom!='')&&($date=''))
{
$result = mssql_query($query, $con);
if (mssql_num_rows($result) != 0)
{
echo "Enregistrement déjà présent dans la base de données.";

}
else
{
if(!mssql_query("insert into ".$table."(code, nom, prenom, date_naissance) values ('000002', '".$nom."', '".$prenom."', '".$date."')", $con))
{
echo("erreur");
}
else
{
echo("c'est bon");
}
}
}

@mssql_close(); // Fermeture de la connexion
?>
0
Benno Messages postés 151 Date d'inscription jeudi 1 mars 2007 Statut Membre Dernière intervention 13 avril 2009 112
8 janv. 2009 à 17:25
Essaye ceci... (code reformaté avec quelques modifs)... Et dis moi ce qui s'affiche.

<?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"]))
{
	$nom=$_POST["fnom"];
}
$prenom="";
if(!empty($_POST["fprenom"]))
{
	$prenom=$_POST["fprenom"];
}
$date="";
if(!empty($_POST["fdate"]))
{
	$date=$_POST["fdate"];
}

//Test des valeurs reçues
echo("Nom : " . $nom . "<br />Prenom : " . $prenom . "<br />Date naiss. :" . $date);

//Requete SQL pour test
$query = "SELECT * FROM " . $table . " WHERE nom='" . $nom . "' AND prenom='" . $prenom . "' AND date_naissance='" . $date . "'";

if(($nom!='')&&($prenom!='')&&($date=''))
{
	$result = mssql_query($query, $con);
	if (mssql_num_rows($result) != 0)
	{
		echo "Enregistrement déjà présent dans la base de données.";
	}
	else
	{
		if(!mssql_query("INSERT INTO " . $table . "(code, nom, prenom, date_naissance) VALUES ('000002', '" . $nom . "', '" . $prenom . "', '" . $date . "')", $con))
		{
			echo("erreur");
		}
		else
		{
			echo("c'est bon");
		}
	}
}

mssql_close(); // Fermeture de la connexion
?>
0
smoutsmout Messages postés 160 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 9 janvier 2009
8 janv. 2009 à 17:28
ya du mieu

Ca m'affiche les champs saisis dans le formulaire.
0
Benno Messages postés 151 Date d'inscription jeudi 1 mars 2007 Statut Membre Dernière intervention 13 avril 2009 112
8 janv. 2009 à 17:32
Et ce code affiche quoi:

<?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"]))
{
	$nom=$_POST["fnom"];
}
$prenom="";
if(!empty($_POST["fprenom"]))
{
	$prenom=$_POST["fprenom"];
}
$date="";
if(!empty($_POST["fdate"]))
{
	$date=$_POST["fdate"];
}

//Test des valeurs reçues
echo("Nom : " . $nom . "<br />Prenom : " . $prenom . "<br />Date naiss. :" . $date);

//Requete SQL pour test
$query = "SELECT * FROM " . $table . " WHERE nom='" . $nom . "' AND prenom='" . $prenom . "' AND date_naissance='" . $date . "'";

if(($nom!="")&&($prenom!="")&&($date!=""))
{
	$result = mssql_query($query, $con);
	echo("Nb enregistrement(s) trouv&eacute;(s): ". mssql_num_rows($result));
	if (mssql_num_rows($result) != 0)
	{
		echo "Enregistrement déjà présent dans la base de données.";
	}
	else
	{
		if(!mssql_query("INSERT INTO " . $table . "(code, nom, prenom, date_naissance) VALUES (NULL, '" . $nom . "', '" . $prenom . "', '" . $date . "')", $con))
		{
			echo("erreur");
		}
		else
		{
			echo("c'est bon");
		}
	}
}

mssql_close(); // Fermeture de la connexion
?>
0

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

Posez votre question
Attention à la faute de frappe dans le code de Benno
if(($nom!='')&&($prenom!='')&&($date!=''))
0
smoutsmout Messages postés 160 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 9 janvier 2009
8 janv. 2009 à 17:38
euh pareil, les champs du formulaires
0
Benno Messages postés 151 Date d'inscription jeudi 1 mars 2007 Statut Membre Dernière intervention 13 avril 2009 112
8 janv. 2009 à 17:45
Bien vu l'erreur vient sans doute de cet oubli!
0
Benno Messages postés 151 Date d'inscription jeudi 1 mars 2007 Statut Membre Dernière intervention 13 avril 2009 112
8 janv. 2009 à 17:41
Une dernière tentative...:

<?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"]))
{
	$nom=$_POST["fnom"];
}
$prenom="";
if(!empty($_POST["fprenom"]))
{
	$prenom=$_POST["fprenom"];
}
$date="";
if(!empty($_POST["fdate"]))
{
	$date=$_POST["fdate"];
}

//Test des valeurs reçues
echo("Nom : " . $nom . "<br />Prenom : " . $prenom . "<br />Date naiss. :" . $date);

//Requete SQL pour test
$query = "SELECT * FROM " . $table . " WHERE nom='" . $nom . "' AND prenom='" . $prenom . "' AND date_naissance='" . $date . "'";

if(strlen($nom)!=0)&&(strlen($prenom)!=0)&&(strlen($date)!=0))
{
	$result = mssql_query($query, $con);
	echo("Nb enregistrement trouv&eacute;(s): ". mssql_num_rows($result));
	if (mssql_num_rows($result) != 0)
	{
		echo "Enregistrement déjà présent dans la base de données.";
	}
	else
	{
		if(!mssql_query("INSERT INTO " . $table . "(code, nom, prenom, date_naissance) VALUES ('000002', '" . $nom . "', '" . $prenom . "', '" . $date . "')", $con))
		{
			echo("erreur");
		}
		else
		{
			echo("c'est bon");
		}
	}
}

mssql_close(); // Fermeture de la connexion
?>
0
smoutsmout Messages postés 160 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 9 janvier 2009
8 janv. 2009 à 17:47
ah ! changement ...

en plus des champs j'ai : NB enregistrements trouvés = 0 erreur
0
Benno Messages postés 151 Date d'inscription jeudi 1 mars 2007 Statut Membre Dernière intervention 13 avril 2009 112
8 janv. 2009 à 17:50
Attention la requete INSERT INTO a la fin a été modifiée, recopie bien tout:

<?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"]))
{
	$nom=$_POST["fnom"];
}
$prenom="";
if(!empty($_POST["fprenom"]))
{
	$prenom=$_POST["fprenom"];
}
$date="";
if(!empty($_POST["fdate"]))
{
	$date=$_POST["fdate"];
}

//Test des valeurs reçues
echo("Nom : " . $nom . "<br />Prenom : " . $prenom . "<br />Date naiss. :" . $date);

//Requete SQL pour test
$query = "SELECT * FROM " . $table . " WHERE nom='" . $nom . "' AND prenom='" . $prenom . "' AND date_naissance='" . $date . "'";

if(strlen($nom)!=0)&&(strlen($prenom)!=0)&&(strlen($date)!=0))
{
	$result = mssql_query($query, $con);
	echo("Nb enregistrement trouv&eacute;(s): ". mssql_num_rows($result));
	if (mssql_num_rows($result) != 0)
	{
		echo "Enregistrement déjà présent dans la base de données.";
	}
	else
	{
		if(!mssql_query("INSERT INTO " . $table . "(code, nom, prenom, date_naissance) VALUES (NULL, '" . $nom . "', '" . $prenom . "', '" . $date . "')", $con))
		{
			echo("erreur");
		}
		else
		{
			echo("c'est bon");
		}
	}
}

mssql_close(); // Fermeture de la connexion
?>
0
smoutsmout Messages postés 160 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 9 janvier 2009
8 janv. 2009 à 17:56
Woah trop de la boulette ca marche, le nouvel enregistrement s'insere dans la table.

Un immense merci à toi !!!!!!

C'etait quoi qui allait pas ???
0
Benno Messages postés 151 Date d'inscription jeudi 1 mars 2007 Statut Membre Dernière intervention 13 avril 2009 112
8 janv. 2009 à 17:58
Il faut laisser faire l'auto-incrément de la table lors de l'insertion (donc mettre NULL en premier paramètre et non 0002).
@+ n'oublie pas de marquer comme résolu.
0
smoutsmout Messages postés 160 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 9 janvier 2009
8 janv. 2009 à 18:01
ah ok, je vois.

Merci bcp en tout cas.
0