Problème d'UPDATE qui me bloque depuis hier soir! :/

Ce topic a été résolu
Malib

Malib Le 22 avril 2016 à 13:00 (Édité le 25 janvier 2019 à 17:50)

Bonjour:
voila le code:
<?php
 
 
            if(isset($_SESSION['id']) AND !empty($_SESSION['id'])) /* permet de verifier si le membre est connecté ou non */
             
            {
                     
                    $idpopulation = intval($_SESSION['id']);
                    $reqpop = $bdd->prepare("SELECT * FROM population WHERE id = ? ");
                    $reqpop->execute(array($idpopulation));
                    $population = $reqpop->fetch();
                     
                     
                    $popucivil=$population['civil'];
                    $popuchercheur=$population['chercheur'];
                    $popusoldat=$population['soldat'];
                    $popuglobal=$popuchercheur+$popucivil+$popusoldat;
                 
                 
                    {
                    echo "Civil : " . $popucivil . " <br/>
                    chercheur : " . $population['chercheur'] . " <br/>
                    soldat : " . $popusoldat . " <br/>
                    global : " . $popuglobal .'<br />';
                    }
                     
                     
                     
                            if(isset($_POST['valider_changement']));
                                {
                                        if(isset($_POST['soldat']))
                                                    {
                                                         
                                                        $popucivil=$popucivil-($_POST['soldat']);
                                                        $popusoldat=($_POST['soldat'])+$popusoldat;
                                                         
                                                        var_dump($popusoldat);
                                                         
                                                         
                                                         
                                                         
                                                        /* requete qui n'est pas bonne*/
                                                        $up=$bdd->prepare('UPDATE population SET civil = $popucivil,soldat = $popusoldat  WHERE id = ?');
                                                         
                                                         
                                                        var_dump($populationup);
                                                        var_dump($id);
                                                         
                                                        echo "Civil : " . $popucivil . " <br/>
                                                        chercheur : " . $population['chercheur'] . " <br/>
                                                        soldat : " . $popusoldat . " <br/>
                                                        global : " . $popuglobal .'<br />';
 
                                                    }
                                }
 
                                 
                                 
 
 
             
             
?>




Donc a priori dans mon formulaire pour le moment j'ai bon, quand j'entre X soldats il sont bien retiré à la partie civil et ajouté. seul pépin c'est que c'est pas enregistré dans la BDD.

L'update ne se fait pas, j'ai essayé plusieurs façon de faire la requete mais sa ne fonctionne pas :/ j'en appel à vos connaissances!
merci d'avance
Wistaro

Wistaro Le 22 avril 2016 à 16:26 (Édité le 22 avril 2016 à 16:30)

Je suppose que le problème vient du fait que ligne 43 tu prépares juste ta fonction avec prepare->().
Cette fonction ne peux pas s'utiliser seule, elle attend que tu lui passes les paramètres. 
À la place utilise exec>() ou 
Ou prepare->() puis execute->(array(tes paramètres))


Autrement regarde les logs php pour voir le(s) problème(s). Dans ton cas, c'est normal que ça ne génère aucune erreur. Éventuellement un warning, mais pas sûr. 

Cf la doc: http://php.net/manual/fr/pdo.prepared-statements.php
Malib

Malib Le 22 avril 2016 à 17:21

oui, mais le truc c'est qu'enfaite la j'ai retiré mon execute car je n'ai que des erreurs enfaite peut importe ce que je fais. et je n'arrive pas à comprendre. Meme en suivant des tutos rien ne s'UPDATE :/

Donc la pour eviter l'erreur sur ma page j'ai retiré le bout du code mais j'ai essayé vraiment beaucoup de choses en vain :/
Malib

Malib Le 22 avril 2016 à 18:28

j'ai du nouveau:



if(isset ($_POST['soldat']) AND !empty($_POST['soldat']))
                                       {
                                          
                                          $popucivil=$popucivil-($_POST['soldat']);
                                          $popusoldat=($_POST['soldat'])+$popusoldat;
                                          
                                          $reqrecupcivil=$bdd->prepare('UPDATE population SET soldat = ?, civil= ? WHERE id = ?');
                                          $reqrecupcivil->execute(array($_POST['soldat'],$popucivil,($_SESSION['id'])));
Donc sa fonctionne maintenant! Juste un petit problème.

Civil: 1000
soldat: 1000
chercheur:1000
Total: 3000

Si je met 500 soldat

j'aurais bien :

Civil: 500
soldat: 1500

Mais si derrière je fais ajouter 100 dans soldat j'aurais

Civil: 400
soldat: 600

Donc il doit y avoir quelque chose que j'ai oublié ^^ Sinon l'update dans la BDD est bon 😉
Malib

Malib Le 25 avril 2016 à 10:45

Mise à jours: j'ai réglé le problème 😉
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte