Phpmyadmin modifier une variable

Résolu/Fermé
jobouille Messages postés 286 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 27 septembre 2017 - Modifié par jobouille le 28/04/2015 à 19:40
jobouille Messages postés 286 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 27 septembre 2017 - 28 avril 2015 à 22:15
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
A voir également:

1 réponse

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
28 avril 2015 à 20:13
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 jeudi 11 juin 2009 Statut Membre Dernière intervention 27 septembre 2017 10
Modifié par jobouille le 28/04/2015 à 20:53
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 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > jobouille Messages postés 286 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 27 septembre 2017
28 avril 2015 à 21:02
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 jeudi 11 juin 2009 Statut Membre Dernière intervention 27 septembre 2017 10
28 avril 2015 à 21:14
En mettant ceci ça ne fonctionne pas non plus :/
UPDATE membres SET mp = 1 WHERE pseudo ='jobouille'
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > jobouille Messages postés 286 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 27 septembre 2017
28 avril 2015 à 21:20
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 jeudi 11 juin 2009 Statut Membre Dernière intervention 27 septembre 2017 10
28 avril 2015 à 21:52
Je regarde toujours les 2.
Dans la requête c'est égal à 0 et dans la BDD aussi.
0