8792 sujets

Développement web côté serveur, CMS

Bonjour à toutes et à tous,

J'essaye de lancer un update dans ma base MySQL... sans succès. J'ai essayé 2 méthodes de requête préparée mais je n'ai jamais pu me défaire de ce type de message.
Voici ma première requête :

$id_1 = $_SESSION["ids_plats"][0][0];
      $PDOStatment = $bdd->prepare("UPDATE plats SET langue = :langue, rayon = :rayon, nom_plat = :nom_plat, description = :description, prix = [langue]rix, mention = :mention, visible = :visible, plat_langue = [langue]lat_langue
      WHERE id_plat = $id_1");
      $PDOStatment->execute(["langue" => 1, "rayon" => $_POST["rayon"], "nom_plat" => $_POST["nom_plat_en"], "description" => $_POST["description_en"], "prix" => $_POST["prix"],
      "mention" => $_POST['mention'], "visible" => $_POST['visible'], "new_plat_langue" => $_POST['new_plat_langue']]);

et voici le message :
upload/1746518413-87140-msg1.jpg
Comme vous pouvez le voir elle m'est refusée, POURTANT, en dernière ligne du message tous les paramètres sont bons, les colonnes de la base, les variables citées sont (pour moi) celles que je voudrais envoyer ?!
Voici la deuxième requête :

$PDOStatment = $bdd->prepare("UPDATE plats SET langue = :langue, rayon = :rayon, nom_plat = :nom_plat, description = :description, prix = [langue]rix, mention = :mention, visible = :visible, plat_langue = [langue]lat_langue  WHERE id_plat = $id_1");
      $PDOStatment->bindParam(':langue', 1, PDO::PARAM_INT);
      $PDOStatment->bindParam(':rayon', $_POST["rayon"]);
      $PDOStatment->bindParam(':nom_plat', $_POST["nom_plat_en"]);
      $PDOStatment->bindParam(':description', $_POST["description_en"]);
      $PDOStatment->bindParam(':prix', $_POST["prix"]);
      $PDOStatment->bindParam(':mention', $_POST["mention"]);
      $PDOStatment->bindParam(':visible', $_POST["visible"]);
      $PDOStatment->bindParam(':plat_langue', $_POST["plat_langue"]);
      $PDOStatment->execute();

Et son message d'erreur :
upload/1746518803-87140-msg2.jpg

D'autant plus, j'ai pris exemple sur des tutos et des discussions sur le Net... Mais y a-t-il des fautes d'orthographe que je n'arrive pas à voir, ou est-ce une erreur de code ?
Si vous avez des avis je vous remercie d'avance pour vos messages, bonne journée à toutes et à tous.
Modifié par Petitapeti (06 May 2025 - 10:16)
PS :
Je viens de m'apercevoir d'un truc bizarre !
Quand je copie et colle mon code de la requête 1 il change des params :
prix = [langue]rix
???
en lieu et place de prix = Smiley langue rix
et
plat_langue = [langue]lat_langue
??? en lieu et place de plat_langue = plat_langue

Comment se fait-il que ces changements de code interviennent ??? Est-ce cette interprétation de mon écriture qui pêche ?
En plus il m'affiche un emoticon précédant le (reste) de mot "rix" !!! J'en peux plus, moi, de tirer la langue !
Il semblerait que ce sont les "p" qu'il n'avale pas... un "p" de travers ? Smiley biggrin
Modifié par Petitapeti (06 May 2025 - 12:10)
Bonjour,

Pour le premier code, l'erreur vient d'un paramètre nommé différemment dans la requête préparé et dans le tableau passé en paramètre de execute() : ":plat_langue" dans la requête préparé, "new_plat_langue" dans le tableau.

Pour le 2ème code, l'erreur vient du fait que bindParam attend une référence vers une variable, or la valeur 1 dans $PDOStatment->bindParam(':langue', 1) n'est pas une variable. Utilise bindValue à la place de bindParam pour cette valeur (ou corrige ton premier code qui est plus simple).
Bonjour Pitet,
Je suis ton obligé une seconde fois... MERCI, BEAUCOUP !
Je savais bien que je ne trouverai pas ; à tellement scruter d'une page à l'autre je ne voyais plus rien et, comme d'hab, je doutais de mon code. Ce en quoi j'avais raison !

Au fait, je sais que ce n'est pas la cathégorie pour le dire mais, j'ai avancé sur l'accordion Bootstrap. Pour imposer mes couleurs je suis passé par :

.accordion {
  --bs-accordion-btn-bg: #2b8de0;
  --bs-accordion-active-bg: #08589c;
  --bs-accordion-bg: #2b8de0;
}

à voir ici :
https://www.youtube.com/watch?app=desktop&v=mm_7-6-GxYQ&ab_channel=CodingYaar
En tous cas merci encore de tes solutions et bonne journée à toutes et à tous
Administrateur
Petitapeti a écrit :
PS :
Je viens de m'apercevoir d'un truc bizarre !
Quand je copie et colle mon code de la requête 1 il change des params :

Bonjour,

ici c'est le forum qui interprète (transforme) certaines combinaisons de caractères en smilies (emoticones, emoji... bref) tellement elles sont (étaient) courantes. C'est moins pratique sur un forum parlant de dév web mais il y a plus de 2 décennies, le forum servait pour un site très généraliste. Smiley smile
: ) et : D et : p => Smiley smile Smiley lol Smiley langue
La même dans une balise [ code]
: ) et : D et : p => [smile] [lol] [langue]

: ) et : D et : p => [smile] [lol] [langue]

Tu peux ajouter une espace comme je l'ai fait ; les habitué.e.s sauront pourquoi tu le fais Smiley cligne

Il y a aussi une interprétation du bbCode, le truc avec des crochets que tous les forums utilisaient dans l'temps Smiley vieux
Les tableaux PHP ou JS qui se font italiciser... Pareil une espace : a[ i] = 5;
Bonjour Felipe,
Des émoticodes, en qque sorte ! Smiley biggrin Merci pour ton message. Tu m'invites à prendre plus "d'espace" sur ce site, alors je le ferai Smiley cligne .
Bonne soirée à toutes et à tous.