Page 1 sur 1

soit un update soir un insert

Posté : 20 févr. 2008, 11:27
par jp.kerloch
Bonjour,

Je suis un peu concé !!
Je vous explique mon problème: des personne doivent rentrer dans un formaulaire des informations sur des fiches produits !!
Une fois rentrées, elles pourront si elles le désirent les modifier !!
C'est a dire que si une ficher produit existe elle la mets ajour sinon ca doit l'inserer !!
voici mon code :
		$requete_txt = "select * from corolle_fiches_pdt where ref = '".$_GET['ref']."'";
		$result = $bdd->result_to_array($bdd->query($requete_txt));
		for($i=0;$i<count($result);$i++)
		{
			if ($_GET['ref'] == '')
				{
				$requete_txt = " UPDATE `corolle_fiches_pdt` SET ref = '".$_GET['ref']."',nom = '".$_GET['nom']."',age = '".$_POST['age']."',img = '".$_GET['ref']."',
txt = '".$_POST['txt']."',fin = '".$_POST['fin']."',cdc = '".$_POST['cdc']."',cdc2 = '".$_POST['cdc2']."',buy = '".$_POST['buy']."' WHERE ref =  '".$_GET['ref']."'";
				$bdd->query($requete_txt);
				}
			else
			{
			$requete_txt = "INSERT INTO `corolle_fiches_pdt`(`ref`,`nom`,`age`,`img`,`txt`, `fin`, `cdc`, `cdc2`, `buy`)VALUES('".($_GET['ref'])."','".($_GET['nom'])." ','".($_POST['age'])."','".($_GET['ref'])."','".($_POST['txt'])."','".($_POST['fin'])."','0','0','0')";
			$bdd->query($requete_txt);
			}
		}
Merci de votre aide.

Posté : 20 févr. 2008, 11:49
par mcorgnet
Je ne saisis pas la nature du problème ...

Posté : 20 févr. 2008, 11:56
par Genova
Il veut faire un UPDATE si la ligne existe, et un INSERT si la ligne n'existe pas.

Il existe le mot clef REPLACE qui s'utilise comme un INSERT, et fait exactement ce que tu as envie (il agit en fonction de la clef primaire donnée si je me rappel bien).

Posté : 20 févr. 2008, 12:04
par jp.kerloch
en fait dans la table la réference exsite il me fait un update. Par contre si la réference n'existe pas ca doit me faire un insert mais comment faire???

Tu pourrais pas me filer un coup de main dans le code? avec le replace ??

Posté : 20 févr. 2008, 12:10
par Jules Petibidon
Hello,

Dans un premier temps une clé unique (primary ou pas) sur ton champ reference.

dans un second temps une requete insert adaptée :

Code : Tout sélectionner

INSERT INTO machin (...) VALUES (...) ON DUPLICATE KEY UPDATE truc='machin' etc.

Posté : 20 févr. 2008, 12:17
par jp.kerloch
sorry mais ca ne fonctionne pas ...J'ai peut etre mal fait un truc ...
		$requete_txt = "select * from corolle_fiches_pdt where ref = '".$_GET['ref']."'";
		$result = $bdd->result_to_array($bdd->query($requete_txt));
		for($i=0;$i<count($result);$i++)
		{
			$requete_txt = "REPLACE INTO `corolle_fiches_pdt`(`ref`,`nom`,`age`,`img`,`txt`, `fin`, `cdc`, `cdc2`, `buy`)VALUES('".($_GET['ref'])."','".($_GET['nom'])." ','".($_POST['age'])."','".($_GET['ref'])."','".($_POST['txt'])."','".($_POST['fin'])."','0','0','0'), (ref = '".$_GET['ref']."',nom = '".$_GET['nom']."',age = '".$_POST['age']."',img = '".$_GET['ref']."',txt = '".$_POST['txt']."',fin = '".$_POST['fin']."',cdc = '".$_POST['cdc']."',cdc2 = '".$_POST['cdc2']."',buy = '".$_POST['buy']."','0','0','0' )";
			$bdd->query($requete_txt);
		}

Posté : 20 févr. 2008, 12:25
par mcorgnet
quel est le message d'erreur ?

Posté : 20 févr. 2008, 12:28
par jp.kerloch
Bon la je viens d'essayer ca !!
		$requete_txt = "select * from corolle_fiches_pdt where ref = '".$_GET['ref']."'";
		$result = $bdd->result_to_array($bdd->query($requete_txt));
		for($i=0;$i<count($result);$i++)
		{
			$requete_txt = "REPLACE INTO `corolle_fiches_pdt`(`ref`,`nom`,`age`,`img`,`txt`, `fin`, `cdc`, `cdc2`, `buy`)VALUES('".($_GET['ref'])."','".($_GET['nom'])." ','".($_POST['age'])."','".($_GET['ref'])."','".($_POST['txt'])."','".($_POST['fin'])."','0','0','0')";
			$bdd->query($requete_txt);
		}
ca me met a jour mais ca ne m'insert pas de valeur ... si le produit n'existe pas ..