soit un update soir un insert

Eléphanteau du PHP | 39 Messages

20 févr. 2008, 11:27

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.

Mammouth du PHP | 514 Messages

20 févr. 2008, 11:49

Je ne saisis pas la nature du problème ...

ViPHP
ViPHP | 928 Messages

20 févr. 2008, 11:56

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).

Eléphanteau du PHP | 39 Messages

20 févr. 2008, 12:04

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 ??

Eléphant du PHP | 259 Messages

20 févr. 2008, 12:10

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.

Eléphanteau du PHP | 39 Messages

20 févr. 2008, 12:17

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);
		}

Mammouth du PHP | 514 Messages

20 févr. 2008, 12:25

quel est le message d'erreur ?

Eléphanteau du PHP | 39 Messages

20 févr. 2008, 12:28

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 ..