Problème UPDATE PDO :(

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
session_start();

$bdd = new PDO('mysql:host=localhost;dbname=root','root','root');
if(!empty($_POST['submit']))
{

    $pseudo = htmlspecialchars(trim($_POST['pseudo']));
    $pseudo_sess = $_SESSION['pseudo'];
    if(empty($pseudo))
    {
     echo "";
    }else{

    $req = $bdd->prepare("UPDATE users SET username = :pseudo WHERE username = :pseudo_sess");
    $req->execute(array(
        'pseudo' => $pseudo,
        'pseudo_sess' => $pseudo_sess
    ));

    header("Location:update.php");

    }
}
?>
<form method="POST" action="update.php">
<input type="text" name="username">
<input type="submit" value="Mettre à jour">
</form>

Voici mon UPDATE.php je ne vois pas où est l'erreur si quelqu'un pouvait me corriger ou m'aider ;)

Édité par firm1

+0 -0
Staff

Salut,

Il nous manque pas mal d'infos pour pouvoir t'aider efficacement.

Quel est le problème exactement ? "Ca marche pas", c'est pas hyper explicite…)

As-tu un message d'erreur ? Si oui, lequel ? Si non, as-tu bien activé les erreurs PDO ?

Si elle ne sont pas activé, rajoute ceci juste après la création de ton objet PDO :

1
2
<?php
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

Pense à enlever la redirection aussi, elle pourrait masquer les erreurs. Tu la remettras quand tout le reste fonctionnera.

Enfin, un p'tit "Bonjour" fait toujours plaisir. Là, on arrive sur ton sujet, on voit un pavé de code sans explication, salutation, remerciement… C'est pas hyper engageant.

Édité par Taguan

<3

+4 -0

Bonjour

Comme dit plus haut, sans message d'erreur ou de description précise de celle-ci, ça n'est pas évident de savoir ce qui ne va pas ;) Si ça n'est pas fait, il faut peut-être activé le mode Debug de PHP.

Le seul truc qui me chiffonne, c'est que je ne vois pas de champs nommé pseudo dans ton formulaire. Le seul input s'appelle username. Du coup, je ne vois pas ce que tu récupère avec $_POST['pseudo']

+1 -0

Parole de développeur amateur débutant ;) :

  • Assure toi que le mode Debug de PHP est bien activé.
  • Mets des echo pour voir si oui ou non tu entres dans tes conditions, tes boucles … Ex:
1
2
3
4
if(!empty($_POST['submit']))
{
    echo "Si formulaire non vide";
...
+0 -0
Staff

Je t'ai proposé plusieurs choses a faire, j'ai l'impression que tu n'en a pas tenu compte.

Les conseils des autres sont a suivre aussi. A mon avis le problème est que ton input submit n'a pas de name donc tu rentres pas dans ton if

<3

+4 -0

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

Voilà ton code avec des echo à la place des accès à la BDD

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
session_start();

if(!empty($_POST['submit'))
{
    echo "Formulaire non vide";
    $pseudo = htmlspecialchars(trim($_POST['pseudo']));
    $pseudo_sess = $_SESSION['pseudo'];
    if(empty($pseudo))
    {
     echo "Pas de pseudo";
    }else{

    echo "Met le pseudo dans la table";



    }
}

?>
<form method="POST" action="test.php">
<input type="text" name="username">
<input type="submit" value="Mettre à jour">
</form>

Avec ou sans saisir quoique ce soit dans le input, jamais rien ne s'affiche. Cela implique que la condition if (!empty($_POST['submit'])) n'est jamais vérifiée.

Je t'invite à jeter un œil à la doc de PHP pour bien comprendre se que contient la variable $_POST :)

Une fois ça corrigé, le mode Debug t'indiqueras les autres erreurs (il en reste) ;)

+2 -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