Phpmyadmin modifier une variable

Résolu
jobouille Messages postés 286 Date d'inscription   Statut Membre Dernière intervention   -  
jobouille Messages postés 286 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai fait un petit formulaire que chaque membre de mon site ont.

Ils doivent écrire un pseudo dans un input et en cliquant sur "envoyer", la variable/colonne "mp" doit passer à 1 dans la ligne du pseudo choisit.

Voici ce que j'ai fait qui ne fonctionne pas :

if(isset['envoyer'] AND isset($_POST['destinataire']))
{
	$destinataire = htmlspecialchars($_POST['destinataire']);
	$mp1 = $bdd->prepare('UPDATE membres SET mp = 1 WHERE destinataire = ?');
	$mp1->execute(array($destinataire));
}


Merci et bonne soirée

1 réponse

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
Bonsoir,

Pour comprendre où se situe le souci il faut que fasses des ECHO (ou des print_r) de tes variables.....
et pour cela : Sorts la requête de son exécution ... comme ceci :
if(isset['envoyer'] AND isset($_POST['destinataire'])){
	$destinataire = htmlspecialchars($_POST['destinataire']);

        $sql = "UPDATE membres SET mp = 1 WHERE destinataire = ?";
        $params = array($destinataire);

       // Le temps des tests :
          echo " <pre>Requête : <br>".$sql;
            echo "<br> Params :<br>";
          print_r($params);          
          echo "</pre>";

	$mp1 = $bdd->prepare($sql);
	$mp1->execute($params);
}



Ensuite, si Params contient bien la valeur attendue ..... tu prends la requête... tu remplaces ton "?" par la valeur contenue dans $params .... et tu vas la tester DIRECTEMENT dans ta Base de données..

par exemple : https://codes-sources.commentcamarche.net/faq/10778-heidisql-tester-ses-requetes-sql



0
jobouille Messages postés 286 Date d'inscription   Statut Membre Dernière intervention   10
 
Merci, grâce aux echo j'ai pu voir que dans le WHERE il fallait que je mettre la variable $destinataire, ce qui donne ceci :

$destinataire = htmlspecialchars($_POST['destinataire']);
$sql = "UPDATE membres SET mp = 1 WHERE pseudo = ".$destinataire."";
$params = array($destinataire);


Cependant, le mp ne passe pas à 1 :/
Voilà le résultat ce que les echo m'affichent :

Requête :
UPDATE membres SET mp = 1 WHERE pseudo = ?
Params :
Array
(
[0] => jobouille
)


Merci
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753 > jobouille Messages postés 286 Date d'inscription   Statut Membre Dernière intervention  
 
grâce aux echo j'ai pu voir que dans le WHERE il fallait que je mettre la variable $destinataire

Ben non... puisqu'elle est dans la variable $params ...
Comprends tu ce que tu fais ?


Et donc... as tu testé ta requête en direct dans ta BDD ?
UPDATE membres SET mp = 1 WHERE pseudo ='jobouille'


Si (et seulement SI ) cette requête fonctionne correctement dans ta BDD ... tu peux essayer ceci :

if(isset['envoyer'] AND isset($_POST['destinataire'])){
	$destinataire = htmlspecialchars($_POST['destinataire']);

        $sql = "UPDATE membres SET mp = 1 WHERE destinataire = :desti";
        $params = array(":desti"=>$destinataire);

	$mp1 = $bdd->prepare($sql);
	$mp1->execute($params);
}

Issu des exemples de la page : https://www.php.net/manual/fr/pdostatement.execute.php
(exemple 2 )
0
jobouille Messages postés 286 Date d'inscription   Statut Membre Dernière intervention   10
 
En mettant ceci ça ne fonctionne pas non plus :/
UPDATE membres SET mp = 1 WHERE pseudo ='jobouille'
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753 > jobouille Messages postés 286 Date d'inscription   Statut Membre Dernière intervention  
 
Je pense (malheureusement...) connaitre la réponse..; mais ..... dis moi ....
COMMENT AS TU TESTE CETTE REQUETE ??

En direct dans ta BDD (comme je te le demande depuis le début) ou dans ton code PHP (ce qui ne sert à rien ! ) ???
0
jobouille Messages postés 286 Date d'inscription   Statut Membre Dernière intervention   10
 
Je regarde toujours les 2.
Dans la requête c'est égal à 0 et dans la BDD aussi.
0