Incapable d'update une donnée dans une table

a marqué ce sujet comme résolu.
Auteur du sujet

Bonjour,

je travail sur un formulaire de réponse pour un mariage. Ce sont des amis qui m’ont demandé, mais ça fait longtemps que je n’ai pas fait de php.

Donc, les invités recoivent leurs invitations par courriel. Ils cliquent sur un lien, qui les invite à mentionner le nombre d’adultes, d’enfants et s’ils participent ou non.

J’ai déjà leur courriel, nom et prénom dans une bdd. Donc, je veux update la bdd avec les nouvelles informations.

Donc je fais une requête UPDATE ou l’id est celle du courriel reçu.

Or, une fois le formulaire envoyé, les informations ne changent pas. Pourtant, je n’ai aucun message d’erreur et mon code redirige la personne sur la page qu’il est censé allé après le traitement de données.

Donc voici mon formulaire:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    <div class="couponreponse">
    <div class="bodyreponse">
        <h1>Coupon réponse</h1>
        <h2>Nous espérons une réponse avant le XX Janvier 2018.</h2>
        <h5><?php echo $affiche['prenom']." "; echo $affiche['nom']; ?></h5>
        <form method="post" action="process.php">
             <input type="radio" name="presence" value="o" checked> Oui, je serais présent avec grand plaisir.<br>
             <input type="radio" name="presence" value="n"> Non, nous ne pouvons malheureusement pas être là.<br>
             <span class="enfantsadultes">
                <span class="enfants">Nombre d'enfants : <input type="text" name="enfants" value=0 maxlength="1"> </span>
                <span class="adultes">Nombre d'adultes : <input type="text" name="adultes" value=1 maxlength="1"></span>
             </span>
             <h5>Quelques mots pour les mariés :</h5>
             <textarea name="mots"></textarea>  
             <input type="hidden" name="id" value=<?php echo $_GET['id'];?>>
             <input type="submit" name="sub" value="Répondre" class="sub">



        </form>
    </div>  

    </div>

voici mon traitement de donnée de process.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
if ($_POST['presence'] == 'o') { // si l'invité confirme sa présence on débute la sécurité de la bdd

                    $message = ''; // on déclaire la variable pour les mots
                    if (isset($_POST['mots'])) {
                        $message = htmlspecialchars(addslashes($_POST['mots'])); // si on ajoute des mots, on change la variable et sécurise la variable.
                    }




                    $req = $bdd->prepare('UPDATE invite SET presence= oui, enfants= :enfants, adultes= :adultes, confimation= oui, message= :mess WHERE id= :idss');
                    $req->execute(array(
                        'enfants' => $_POST['enfants'],
                        'adultes' => $_POST['adultes'],
                        'mess' => $message,
                        'idss' => $_POST['id']
                        ));

                        header('Location: index.php?error=alldone');




                }

et voici ma BDD Image utilisateur

Selon moi, le problème vient de la formulation de la requête.... une faute d’orthographe peut-être ?

En passant, je suis au courant que je suis sujet aux injections ! Je ne suis pas encore rendu là ! Merci de votre aide !

Edit Holosmos (staff) : Correction de balise

Édité par Holosmos

Bidouilleur amateur. Je me débrouille en HTML, CSS, PHP et SQL. J’en suis à ma 10e tentative d’apprendre le Java

+0 -0

Cette réponse a aidé l’auteur du sujet

Salut,

En pareil cas, il convient de faire des echo après chaque test pour voir si le test est validé ou non. Au passage, es-tu bien sûr d’afficher les erreurs ? Voir la FAQ en signature pour savoir comment faire.

Au passage, htmlspecialchars s’utilise pour l’affichage, pas pour l’insertion en base.

Je suis aussi dubitatif pour le SET presence= oui sans quotes.

Llama ◦ FAQ PHPTuto WAMP

+0 -0

Cette réponse a aidé l’auteur du sujet

Hello,

Je pense que ta requête est rejeté à cause du presence= oui, oui étant une chaîne de caractère, il devrait être mis entre guillemets.


Ce n’est pas en lien avec ta question de départ, mais si la valeur du champ presence se cantonne à oui/non, tu devrais peut-être envisager d’en faire un booléen.

A graphical interface is like a joke: if you have to explain it, that’s shit.

+0 -0
Auteur du sujet

Bonjour,

désolé du temps.

En effet, c’était mon erreur !

Je vous remercie.

Bidouilleur amateur. Je me débrouille en HTML, CSS, PHP et SQL. J’en suis à ma 10e tentative d’apprendre le Java

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte