Forums Développement Multimédia

Aller au contenu

- - - - -

Sos, mamie en détresse

CODE

4 réponses à ce sujet

#1 mamiechoc

    Ceinture Blanche

  • Members
  • Pip
  • 12 messages

Posté 20 November 2016 - 10:31 AM

Bonjour à tous,j'ai des variables qui, en echo, répondent correctement :

$pseudo= $_POST['pseudo'];
$quantite= $_POST['quantite'];
$reference= $_POST['reference'];
 
La connexion à ma BDD est correcte. Je veux Updater ma table panier

<?php
$remplirEnregistrementCommande = $bdd->prepare('UPDATE panier SET quantite = :quantite WHERE  etatCommande="0" AND  pseudo = \''.$pseudo.'\' AND reference = \''.$reference.'\';');

$remplirEnregistrementCommande->execute(array('quantite' => $quantite,'reference' => $reference,'pseudo' => $pseudo));?>
Or, ma table ne se met pas à jour. Quelqu'un pourrait-il relire ma requete et me dire si j'ai une erreur de syntaxe?Merci d'avance et bonne journée.

#2 dcz.switcher

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 2532 messages

Posté 20 November 2016 - 12:48 PM

Salut,

Que te retourne la commande execute ?

Pour le passage des paramètres ($bdd->prepare), tu passes bien la quantité, mais pas les 2 autres paramètres


... SET quantite = :quantite
 

il faudrait quelque chose comme

AND pseudo = :pseudo AND reference = :reference
 

"Ce que l'on conçoit bien s'énonce clairement et les mots pour le dire arrivent aisément"

embryon de site

#3 mamiechoc

    Ceinture Blanche

  • Members
  • Pip
  • 12 messages

Posté 20 November 2016 - 16:49 PM

Merci pour votre réponse.
Je ne veux mettre à jour que la quantite

SET quantite = :quantite
 
seulement si

WHERE  etatCommande="0" AND  pseudo = \''.$pseudo.'\' AND reference = \''.$reference.'\';');
 

Je pense que c'est une erreur de syntaxe.

#4 dcz.switcher

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 2532 messages

Posté 20 November 2016 - 17:25 PM

En effet, c'était le sens de ma proposition, la préparation de la requête devrait plutôt ressembler à


$remplirEnregistrementCommande = $bdd->prepare('UPDATE panier SET quantite = :quantite WHERE  etatCommande="0" AND  pseudo = :pseudo AND reference = :reference');
 

note : pour ton code, il y a de grandes chances que le souci vienne du point virgule à l'intérieur de la parenthèse du "prepare"
"Ce que l'on conçoit bien s'énonce clairement et les mots pour le dire arrivent aisément"

embryon de site

#5 mamiechoc

    Ceinture Blanche

  • Members
  • Pip
  • 12 messages

Posté 21 November 2016 - 05:42 AM

Merci pour votre aide.
J'ai résolu mon problème.
J'avais mis un extrait de mon code pour demander votre aide mais voici à quoi ressemble ma requête complète
Pour ceux que cela intéresse, ce code fonctionne correctement :
j'ai en POST


$pseudo= $_POST['pseudo'];
$password= $_POST['password'];
$quantite= $_POST['quantite'];
 

Je fais ma requête


<?php
        //on va chercher les donnees du panier par reference
 
$paniertotalRef = $bdd->prepare('SELECT * FROM panier WHERE etatCommande="0" AND reference = \''.$reference.'\' AND pseudo = \''.$pseudo.'\';');
        $paniertotalRef->execute(array('.$pseudo.' => $_POST['pseudo'], '.$reference.' => $_POST['reference']));

// recherche de résultat
$donneesPanierRef = $paniertotalRef->fetch();

$reference=$donneesPanierRef['reference'];  
$pseudo=$donneesPanierRef['pseudo'];  
$oldQuantite=$donneesPanierRef['quantite'];
$prixVente=$donneesPanierRef['prixVente'];
$poids=$donneesPanierRef['poids'];     


if ($donneesPanierRef)
        {
  $temporalQuantite=$_POST['quantite'];  
  $newQuantite=$oldQuantite+$temporalQuantite;
  $prixTotal=$newQuantite*$prixVente;  
  $poidsTotal=$newQuantite*$poids;  
  $etatCommande=="0";    
 
  ///////////////////////////////////////////////////ON MET A JOUR L'ARTICLE////////////////////////////////////////////////////////////////
  //on update l'état de l'enregistrement de la commande  de la table panier
  $remplirEnregistrementCommande = $bdd->prepare(
   'UPDATE panier SET
   quantite = :quantite,
   prixTotal= :prixTotal,
   poidsTotal= :poidsTotal
   WHERE pseudo = :pseudo AND reference = :reference AND etatCommande=:etatCommande'
);
   $remplirEnregistrementCommande->execute(array(
  'quantite' => $newQuantite,
   'prixTotal' => $prixTotal,
   'poidsTotal' => $poidsTotal,
   'reference' => $reference,
   'etatCommande' => $etatCommande,
   'pseudo' => $pseudo
   ));
 
  ?>
 

Bonne journée à tous




Répondre à ce sujet



  

1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP