Problème de logique pour mise à jour simultanée

Eléphant du PHP | 160 Messages

21 avr. 2006, 23:22

Bonjour,
J'ai une table événements et une table panier.
Je voulais modifier la ref de l'événement et mettre à jour cette ref dans le panier pour ne pas perdre les sélections des abonnés.
J'ai donc fait :
<? 
	require ('../connexion.php');
$query = "UPDATE evenements SET ref='".$ref."', nom='".addslashes($nom)."', statut='".$statut."', dd='".$dd."', df='".$df."', hd='".$hd."', hf='".$hf."', type='".$type."', commentaire='".addslashes($commentaire)."', description='".addslashes($description)."', rdv='".addslashes($rdv)."', prix='".$prix."', maxi='".$maxi."', mini='".$mini."', reserve='".$reserve."' WHERE id=$id";
$result = mysql_query($query);
if ($result)
	echo '<H2>Mise à jour de l\'événement No : '.$id.' , correctement effectuée</H2>';
else
{
	echo '<H2>Problème de mise à jour, ré-essayer</H2>';
}
$query = "SELECT ref FROM panier WHERE ref='".$ref."'";
$result = mysql_query($query);
if ($result)
{
	echo 'L\'événement portant la référence : '.$ref.' a été trouvé';
	$sql = "UPDATE panier SET ref='".$ref."' WHERE ";
	$resultat = mysql_query($sql);
	if ($resultat)
	{
	echo "La réference a bien été mise à jour dans les sélections";
	}
}
else
{
	echo '<H2>Reference non trouv&eacute; dans les selections</H2>';
}
mysql_close();
?>
Comme tous les messages étaient bons, je croyais que ça marchait, mais en fait, cela vous saute peut-être aux yeux, tous les événements du panier prenaient pour référence ref.
Alors, j'ai voulu depuis le formulaire de modification garder l'ancienne valeur de ref pour pouvoir ne changer que la bonne ref dans le panier.
Mais je ne trouve pas de solution, je voulais faire quelque chose avec un champ caché et garder ref dans oldRef par exemple, mais c'est le blocage.
Si quelqu'un y voit clair,
Merci

Eléphant du PHP | 160 Messages

21 avr. 2006, 23:46

C'est bon, ça marche, je n'avais pas mis name=oldRef pour mon champ caché et je n'avais pas terminé mon deuxième UPDATE.
A+

Eléphant du PHP | 160 Messages

22 avr. 2006, 00:10

Dommage,

J'avais rêvé, en fait ça ne marche pas, j'envoie ref (nouvelle référence) et oldRef (là où je veux conserver l'ancienne ref) par formulaire :
<input type="hidden" name="oldRef" value="<?=$Record->ref?>">
<input name="ref" type="text" value="<?=$Record->ref?>">
 
Et je reçois ici :
<? 
	require ('../connexion.php');
$query = "UPDATE evenements SET ref='".$ref."', nom='".addslashes($nom)."', statut='".$statut."', dd='".$dd."', df='".$df."', hd='".$hd."', hf='".$hf."', type='".$type."', commentaire='".addslashes($commentaire)."', description='".addslashes($description)."', rdv='".addslashes($rdv)."', prix='".$prix."', maxi='".$maxi."', mini='".$mini."', reserve='".$reserve."' WHERE id=$id";
$result = mysql_query($query);
if ($result)
	echo '<H2>Mise à jour de l\'événement No : '.$id.' , correctement effectuée</H2>';
else
{
	echo '<H2>Problème de mise à jour, ré-essayer</H2>';
}
$query = "SELECT count FROM panier WHERE ref='".$oldRef."'";
$result = mysql_query($query);
if ($result)
{
	echo 'L\'événement portant la référence : '.$oldRef.' a été trouvé';
	$sql = "UPDATE panier SET ref='".$ref."' WHERE ref='".$oldRef."'";
	$resultat = mysql_query($sql);
	if ($resultat)
	{
	echo '<br>La réference a bien été mise à jour dans les sélections : '.$ref.' (nouvelle réference)';
	}
}
else
{
	echo '<H2>Reference non trouv&eacute;e dans les selections</H2>';
}
mysql_close();
?>
Il ne trouve pas l'ancienne ref pour la mettre à jour,
Si quelqu'un peut m'aider,
Merci
Modifié en dernier par jpsartre le 22 avr. 2006, 00:38, modifié 1 fois.

Eléphant du PHP | 160 Messages

22 avr. 2006, 00:36

J'ai remplacé le SELECT COUNT, par SELECT ref, et ça marche presque...