Update / Insert php sql

Fermé
Bob - 12 juin 2008 à 14:06
 bob - 16 juin 2008 à 09:57
Bonjour,

Voici mon problème, l'utilisateur entre des infos dans un formulaire un demandeur / une demande etc..., en validant les données se mettent dans la base de données jusque là tout va très bien. Seulement lorsque j'entre le même demandeur il me recréé un nouvel Id et un nouveau demandeur. Donc mon but est de soumettre l'insertion d'un nouveau demandeur dans la table à conditions.

	
	         //Vérification de la présence du demandeur dans la table
                         $sql = ("SELECT count(*) FROM demandeur WHERE NomDemandeur='$NomDemandeur' and AdresseDemandeur='$AdresseDemandeur' and NumeroDemandeur='$NumeroDemandeur' and MailDemandeur='$MailDemandeur' and MoyenContact='$MoyenContact'");
		$res = mysql_query( $sql );
		if ($res) {
		$count = mysql_result($res, 0, 0 );
		}
		if ($count <= 0) {
		mysql_query("INSERT INTO demandeur VALUES('','$NomDemandeur','$AdresseDemandeur','$NumeroDemandeur','$MailDemandeur','$MoyenContact')");
		}
                               else {
		else {
		$sql = "UPDATE demandeur set NomDemandeur='$Nomdemandeur',AdresesDemandeur='$AdresseDemandeur',NmeroDemandeur='$NumeroDemandeur',MailDemandeur='$MailDemandeur',MoyenContact='$MoyenContact' where NomDemandeur='$NomDemandeur' and AdresseDemandeur='$AdresseDemandeur' and NumeroDemandeur='$NumeroDemandeur' and MailDemandeur='$MailDemandeur' and MoyenContact='$MoyenContact'";
			}


Voilà ce que j'ai pour le moment. L'insertion d'un nouveau demandeur s'effectue bien mais pour le même demandeur il me le zappe :(.

Merci de votre aide,
Bob.
A voir également:

18 réponses

LiLou LiLa Messages postés 330 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 10 mars 2009 12
12 juin 2008 à 14:09
salut

c'est quoi ta table demandeur? (les champs :) )

je crois avec trouver ton soucis :)
0
whoow rapide :)

Voilà ma table

CREATE TABLE `demandeur` (
  IdDemandeur int(11) PRIMARY KEY NOT NULL auto_increment,
  NomDemandeur varchar(38) default NULL,
  AdresseDemandeur varchar(38) default NULL,
  NumeroDemandeur char(14) default NULL,
  MailDemandeur varchar(38) default NULL,
  MoyenContact varchar(38) default NULL)
0
LiLou LiLa Messages postés 330 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 10 mars 2009 12
12 juin 2008 à 14:15
merci ^^ (c'est parce que je suis en stage :p hihi )

dans ta requete ( UPDATE blabla )
ton where ne semble incorrect

tu devrais essayer where idDemandeur = " machin" ;

ton enregistrement est reperé par sa clé primaire, là l 'id

non tu crois pas?
0
	$sql = ("SELECT count(*) FROM demandeur WHERE NomDemandeur='$NomDemandeur' and AdresseDemandeur='$AdresseDemandeur' and NumeroDemandeur='$NumeroDemandeur' and MailDemandeur='$MailDemandeur' and MoyenContact='$MoyenContact'");
		$res = mysql_query( $sql );
		if ($res) {
		$count = mysql_result($res, 0, 0 );
		}
		if ($count <= 0) {
		mysql_query("INSERT INTO demandeur VALUES('','$NomDemandeur','$AdresseDemandeur','$NumeroDemandeur','$MailDemandeur','$MoyenContact')");
		}
		$iddemandeur =mysql_insert_id();
		else {
		$sql = "UPDATE demandeur set NomDemandeur='$Nomdemandeur',AdresseDemandeur='$AdresseDemandeur',NmeroDemandeur='$NumeroDemandeur',MailDemandeur='$MailDemandeur',MoyenContact='$MoyenContact' where IdDemandeur='$iddemandeur'";
			}


Voilà ce que j'ai mis mais maintenant ça me fait une erreur "Parse error: parse error, unexpected T_ELSE in C:\wamp\www\Maquette\maq3.php on line 58"
0

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

Posez votre question
LiLou LiLa Messages postés 330 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 10 mars 2009 12
12 juin 2008 à 14:29
c'est quoi ta ligne 58 de map3.php?

$sql = ("SELECT count(*) FROM demandeur WHERE NomDemandeur='$NomDemandeur' and AdresseDemandeur='$AdresseDemandeur' and NumeroDemandeur='$NumeroDemandeur' and MailDemandeur='$MailDemandeur' and MoyenContact='$MoyenContact'");


elle te sert a quoi ?
0
c'est "else {" désolé j'aurai du préciser :)
0
LiLou LiLa Messages postés 330 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 10 mars 2009 12
12 juin 2008 à 14:38
$sql = ("SELECT count(*) FROM demandeur WHERE NomDemandeur='$NomDemandeur' and AdresseDemandeur='$AdresseDemandeur' and NumeroDemandeur='$NumeroDemandeur' and MailDemandeur='$MailDemandeur' and MoyenContact='$MoyenContact'");


elle te sert a quoi ? jai toujours des soucis avec tes where
pourquoi ut met where iddemandeur ="machin" comme l autre

a moins que jai pas du tout compris a quoi elle te servait ..
c'est pour afficher tes données de ta base non?
0
désolé double poste,

cette ligne sert à vérifier si un demandeur portant le même nom, la même adresse, le même numéro etc... est dans la base, si c'est le cas il répond 1 sinon 0 et s'il répond 1 ça veut dire que c'est la même personne donc qu'il faut pas insérer une nouvelle personne dans la base. Dans l'absolu j'aurai uniquement besoin de récuperer l'id de la personne du coup mais je vois pas comment faire. quelque chose comme:

else { 
select iddemandeur where iddemandeur= l'id du type que tu viens de trouver 

}
0
LiLou LiLa Messages postés 330 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 10 mars 2009 12
12 juin 2008 à 14:47
$sql=select iddemandeur from table where nomdemandeur="" and adresse="" etc ... ;

$id=mysql_query($sql)

....
else {
"update demandeur set nomdemandeur="", adresse="" , ..... where iddemandeur=". $id." ; "

non?

au fait je sais pas si c'ets une erreur de copier coller mais tu n execute pas la requete du update non?
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
12 juin 2008 à 14:53
Bonjour,

Dans ton code :
[...]
if ($count <= 0) {
		mysql_query("INSERT INTO demandeur VALUES('','$NomDemandeur','$AdresseDemandeur','$NumeroDemandeur','$MailDemandeur','$MoyenC­ontact')");
		}
		$iddemandeur =mysql_insert_id();
		else {
[...]
Tu as une instruction toute seule entre la fin du bloc if{...} et le else{...}, c'est sûrement ça ton erreur de syntaxe, non ?

Xavier
0
j'ai mis ça comme ça :

		$sql = ("SELECT count(*) FROM demandeur WHERE NomDemandeur='$NomDemandeur' and AdresseDemandeur='$AdresseDemandeur' and NumeroDemandeur='$NumeroDemandeur' and MailDemandeur='$MailDemandeur' and MoyenContact='$MoyenContact'");
		$res = mysql_query( $sql );
		if ($res) {
		$count = mysql_result($res, 0, 0 );
		}
		if ($count <= 0) {
		mysql_query("INSERT INTO demandeur VALUES('','$NomDemandeur','$AdresseDemandeur','$NumeroDemandeur','$MailDemandeur','$MoyenContact')");
		$iddemandeur =mysql_insert_id();
		}
		else {
		
		$iddemandeur =mysql_query("SELECT IdDemandeur FROM demandeur WHERE NomDemandeur='$NomDemandeur' and AdresseDemandeur='$AdresseDemandeur' and NumeroDemandeur='$NumeroDemandeur' and MailDemandeur='$MailDemandeur' and MoyenContact='$MoyenContact'");
			}
0
LiLou LiLa Messages postés 330 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 10 mars 2009 12
12 juin 2008 à 15:15
quand jeparlais de select jparlais du premier
t'as viré update là ça va plus ^^

tu vois a peu prés ou pas ?
$sql = ("SELECT iddemandeur FROM demandeur WHERE NomDemandeur='$NomDemandeur' and AdresseDemandeur='$AdresseDemandeur' and NumeroDemandeur='$NumeroDemandeur' and MailDemandeur='$MailDemandeur' and MoyenContact='$MoyenContact'");
		$id = mysql_query( $sql );
		if ($id) {
		$count = mysql_result($id, 0, 0 );
		}
		if ($count <= 0) {
		mysql_query("INSERT INTO demandeur VALUES('','$NomDemandeur','$AdresseDemandeur','$NumeroDemandeur','$MailDemandeur','$MoyenC­ontact')");
		$iddemandeur =mysql_insert_id();
		}
		else {
		
		mysql_query("Update demandeur set NomDemandeur='$NomDemandeur' and AdresseDemandeur='$AdresseDemandeur' and NumeroDemandeur='$NumeroDemandeur' and MailDemandeur='$MailDemandeur' and MoyenContact='$MoyenContact'" where iddemandeur=".$id.";");
			}


un truc du genre je disais :)
0
voilà ou j'en suis et ça ne marche toujours pas :)

		$sql = ("SELECT iddemandeur FROM demandeur WHERE NomDemandeur='$NomDemandeur' and AdresseDemandeur='$AdresseDemandeur' and NumeroDemandeur='$NumeroDemandeur' and MailDemandeur='$MailDemandeur' and MoyenContact='$MoyenContact'");
		$res = mysql_query( $sql );
		if ($res) {
		$count = mysql_result($res, 0, 0 );
		}
		if ($count <= 0) {
		mysql_query("INSERT INTO demandeur VALUES('','$NomDemandeur','$AdresseDemandeur','$NumeroDemandeur','$MailDemandeur','$MoyenContact')");
		$iddemandeur =mysql_insert_id();
		}
		else {
		
		mysql_query("UPDATE demandeur set NomDemandeur='$Nomdemandeur',AdresesDemandeur='$AdresseDemandeur',NumeroDemandeur='$NumeroDemandeur',MailDemandeur='$MailDemandeur',MoyenContact='$MoyenContact' where IdDemandeur='$res'");
		$iddemandeur=$res;
			}
0
je reviens solliciter votre aide en cette deuxième journée de galères :)
0
encore un double post désolé.

Je me suis rendu compte que je n'ai pas besoin de mon update mais juste de récuperer l'id qu'il a trouvé. Je ne sais pas comment faire mais je sais déjà que la syntaxe est correcte quand je met $iddemandeur= 1 dans le else il fait les liens que je veux sans ajouter de demandeur.
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
13 juin 2008 à 14:50
Le problème dans ton update, c'est que $res ne contient pas un iddemandeur !
Remplace ton update par :
$donnees = mysql_fetch_array($res);
$iddemandeur = $donnees["iddemandeur"];
mysql_query("UPDATE demandeur set NomDemandeur='$Nomdemandeur',AdresesDemandeur='$AdresseDemandeur',NumeroDemandeur='$Numero­Demandeur',MailDemandeur='$MailDemandeur',MoyenContact='$MoyenContact' where IdDemandeur='$iddemandeur'");
0
		$sql = ("SELECT iddemandeur FROM demandeur WHERE NomDemandeur='$NomDemandeur' and AdresseDemandeur='$AdresseDemandeur' and NumeroDemandeur='$NumeroDemandeur' and MailDemandeur='$MailDemandeur' and MoyenContact='$MoyenContact'");
		$res = mysql_query( $sql );
		if ($res) {
		$count = mysql_result($res, 0, 0 );
		}
		if ($count <= 0) {
		mysql_query("INSERT INTO demandeur VALUES('','$NomDemandeur','$AdresseDemandeur','$NumeroDemandeur','$MailDemandeur','$MoyenContact')");
		$iddemandeur =mysql_insert_id();
		}
		else{
		$sql = ("SELECT iddemandeur FROM demandeur WHERE NomDemandeur='$NomDemandeur' and AdresseDemandeur='$AdresseDemandeur' and NumeroDemandeur='$NumeroDemandeur' and MailDemandeur='$MailDemandeur' and MoyenContact='$MoyenContact'");
		$res= mysql_query($sql);
		$donnees = mysql_fetch_array($res);
		$iddemandeur = $donnees['iddemandeur'];
		mysql_query("UPDATE demandeur set NomDemandeur='$Nomdemandeur',AdresesDemandeur='$AdresseDemandeur',NumeroDemandeur='$Numero­­Demandeur',MailDemandeur='$MailDemandeur',MoyenContact='$MoyenContact' where IdDemandeur='$iddemandeur'");
			}


Cette requête marche mais c'est de la bidouille j'aimerai bien un truc plus optimisé si vous avez sous le coude je fais deux fois mon $res et mon $sql sinon ils ne sont pas pris en compte dans le else....
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
16 juin 2008 à 09:45
Bonjour,

Alors, à la place de mysql_result, qui a une action sur la ressource $res, utilise mysql_num_rows qui n'accède à $res qu'en lecture et te donne le nombre de lignes.

Comme ça $res reste inchangé au niveau du else.

Ce qui donne :
$sql = ("SELECT iddemandeur FROM demandeur WHERE NomDemandeur='$NomDemandeur' and AdresseDemandeur='$AdresseDemandeur' and NumeroDemandeur='$NumeroDemandeur' and MailDemandeur='$MailDemandeur' and MoyenContact='$MoyenContact'");
$res = mysql_query( $sql );
if ($res) {
	$count = mysql_num_rows($res);
}
if ($count == 0) {
	mysql_query("INSERT INTO demandeur VALUES('','$NomDemandeur','$AdresseDemandeur','$NumeroDemandeur','$MailDemandeur','$MoyenC­ontact')");
	$iddemandeur =mysql_insert_id();
}
else{
	$donnees = mysql_fetch_array($res);
	$iddemandeur = $donnees['iddemandeur'];
	mysql_query("UPDATE demandeur set NomDemandeur='$Nomdemandeur',AdresesDemandeur='$AdresseDemandeur',NumeroDemandeur='$Numero­­­Demandeur',MailDemandeur='$MailDemandeur',MoyenContact='$MoyenContact' where IdDemandeur='$iddemandeur'");
}
Voilà qui devrait aller :)

Xavier
0
Parfait problème résolu merci de la promptitude de vos réponses à tous et de l'exactitude des tiennes Reivax ^^
0