soit un update soir un insert

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : soit un update soir un insert

par jp.kerloch » 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 ..

par mcorgnet » 20 févr. 2008, 12:25

quel est le message d'erreur ?

par jp.kerloch » 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);
		}

par Jules Petibidon » 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.

par jp.kerloch » 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 ??

par Genova » 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).

par mcorgnet » 20 févr. 2008, 11:49

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

soit un update soir un insert

par jp.kerloch » 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.