décidément quand rien ne va ...
mon souci porte sur une requête UPDATE dans une table de commande de produits dans cette table il y a un champ appelé etat_cde qui indique l'état d'une commande . il peut avoir trois états : soit null soit "en cours de préparation" ou bien "terminé".Par exemple lorsque le préparateur affiche la liste des commandes à préparer il clique sur un lien qui le renvoie sur une commande appropriée à ce moment l'état de la commande est indiqué "en cours de préparation" dans la table. là aucun soucis ma table affiche bien l'info.
Maintenant supposons que pour une raison x ou y par exemple il s'est trompé de commande ou bien elle n'est pas encore terminée , il revienne sur la liste des commandes puis qu''il revienne plus tard sur la commande précédente qui est censée être en cours de prépa, là, la liste des articles ne s'affiche plus. en fait tous se passe comme si mysql refusait de réécrire par dessus l'ancienne valeur de l'etat_cde. Mon champ etat_cde est toujours indiqué "en cours de préparation de commande". Je voudrais donc savoir si mysql autorise une réécriture sur une ancienne valeur identique ou pas. ou bien est ma requête qui est elle fausse?
précision : la requête ne fonctionne pas sous phpMyadmin
voici le bout de code qui pose problème
//dès que le préparateur clique sur le lien préparer on modifie l'état de la commande "etat_cde" à "en cours de préparation"
// de façon à ce que le client puisse le voir dans le suivit de commande sur son compte client
$selectCmde = $bdd->prepare('UPDATE commande SET etat_cde = \'En cours de préparation\' WHERE num_bon_commande = :numCde AND client = :client AND (etat_cde = \'En cours de préparation\'
OR etat_cde IS NULL)')
or die (print_r($bdd->errorInfo()));
$selectCmde->execute(array(
'numCde' => $numCde,
'client' => $client
));
$resultat = $selectCmde->rowCount();
echo 'resultat du retour' . $resultat ;
// si aucun résultat n'est retourné
if($resultat == 0)
{
$message = "<p><strong>La mise à jour sur l'état de la commande n'a pas été faite. Veuillez recommancer l'opération.</strong></p>";
}
else
{...}
Merci pour votre aide