Update bdd

Résolu/Fermé
Guillaume - Modifié le 23 juil. 2019 à 12:53
 Guillaume - 23 juil. 2019 à 17:14
Bonjour,
Je souhaite faire un formulaire pour modifier une donnée dans ma bdd mais ça ne fonctionne pas. J'ai déjà fait cette procédure plusieurs fois mais ici, impossible de la faire fonctionner; après près d'une heure à m'énerver, je viens vers vous...
Qu'est ce que j'ai mal fait?

Voici ma page (j'ai supprimé les parties inutiles (dont le style)):
<?php include('bdd.php'); require_once "fonctions.php";?>

<?php
    //si formulaire pour la modification du prenom
    if(isset($_POST['modifprenom'])){
      $prenom = !empty($_POST['prenom']) ? $_POST['prenom'] : NULL;
      if(!$prenom) {
          $msg_modif_prenom = "<div class='bandeau bandeau-error'>Merci de renseigner un prénom.</div>";
      } else {
        $res = $stmt = $dbh->prepare("UPDATE membres SET prenom=:prenom WHERE id like :id ");
          $stmt->bindParam(':prenom', $prenom);
          $stmt->bindParam(':id', $id);
          $stmt->execute();
        if($res) {
          $msg_modif_prenom =  "<div class='bandeau bandeau-success'>L'information a bien été mise à jour!</div>";
        } else {                        
          $msg_modif_prenom =  "<div class='bandeau bandeau-error'>Une erreur est survenue. Contactez l'administrateur!</div>";
        }
      }
    }
?>
<!DOCTYPE html>
<html>
<head>
        <meta charset="utf-8" />
        <title>Modérateurs</title>
</head>
<body>
<!--Script pour faire apparaitre et disparaitre les formulaires de modifications d'informations dans les dossiers.-->
<script type="text/javascript">
  function masquer_div(id)  {
    if (document.getElementById(id).style.display == 'none')    {
      document.getElementById(id).style.display = 'block';
    } else  {
      document.getElementById(id).style.display = 'none';
    }
  }
</script>  

<header>
  <br>
    <h3>Visuel individuel:</h3>

    <table width="50%" class="header" align="center" text-align="center">
      <tr>
        <td>
          <a href="connexion.php" style="color:green">Me déconnecter</a>
       </td>
      </tr>
    </table>            
</header>
<br>
<?php
  $idchoisie = ($_GET['submit_valeurid']);
  
  $query = 'SELECT * FROM membres WHERE id="'.$idchoisie.'";';
  $row = $dbh->query($query)->fetch();
  
  $error = 'Aucun allias utilisé';
  $id = ($row['id']);
?>      
<section>
  <div class="boutondiv"><a href="visuel_bdd.php" class="bouttonretour">Retourner à la page principale</a></div>
  <br>
  <br>
  <h3>Voici le profil complet de la personne dont vous avez cliqué sur son id.</h3>
  <h4>Rappel: Toutes les informations se trouvant sur cette page ne peuvent être enregistrées (peut importe le moyen), ou divulgées! En cas de transgression, vous êtes le/la seul(e) responsable de l'acte!</h4>
  <br>
  <br>
<table width="90%" align="center" border="1px solid green">
  <tr>
    <td width="45">
      <table width="100%" bgcolor="white" border="1px solid black" >
        <tr> 
          <th colspan="3">Informations du site gestion:</th>
        </tr>
        <tr>
          <td width="30%">ID:</td>
       <td colspan="2"><?php echo $row['id']; ?></td>
        </tr>
        <tr>
          <td width="30%">Date d'inscription sur le site:</td>
       <td colspan="2"><?php echo $row['date_inscription']; ?></td>
        </tr>
        <tr> 
       <br>
          <th colspan="3">Informations personnelles:</th>
        </tr>
        <tr>
          <td width="30%">PRENOM:</td>
          <td width="30%"><?php echo $row['prenom']; ?></td>
          <td>
            <div class="boutondiv"><input type="button" value="Modifier le prénom du membre" onclick="masquer_div('modifprenom');"/></div>   
    <div id="modifprenom" style="display:none">
                  <?php echo $msg_modif_prenom;?>
                  <form method="POST" action="">
                    <input type="hidden" name="modifprenom" value="1">
                    <input name="prenom" type="text" placeholder="Entrez le prénom" required/>
                    <input type="submit" value="Enregistrer la modification"/>
                  </form>
             </div>
          </td>
        </tr>
      </table>
   </td>
  </tr>
  
  
</table>
  </section>       
<br>
<br>
</body>
</html>


Et voici ma seconde page (connexion à ma bdd):
<?php
  $host_name = 'db5000132941.hosting-data.io';
  $database = 'dbs127765';
  $user_name = 'dbu272766';
  $password = 'MON CODE';
  $dbh = null;

  try {
    $dbh = new PDO("mysql:host=$host_name; dbname=$database;", $user_name, $password);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  } catch (PDOException $e) {
    echo "Erreur!: " . $e->getMessage() . "<br/>";
    die();
  }


J'espère avoir tout dit et qu'une personne pourra m'aider... C'est surement une petite betise mais je tourne en rond.

Configuration: Windows / Firefox 67.0

2 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
23 juil. 2019 à 14:36
Bonjour,

Ton code, là, est bizarre :
$res = $stmt = [...];
[...]
if ($res)

Si ce n'est pas le problème, tu pourrais nous donner l'erreur que tu rencontres ? « ça ne fonctionne pas » n'est pas très précis. As-tu un message d'erreur ? Est-ce qu'il se passe un truc différent que ce que tu attends ? Si oui, quoi ? Est-ce qu'il ne se passe rien du tout ?

Xavier
0
Bonjour Xavier,
Merci pour ta réponse,
Après le $res =, il y avait un appel à une fonction mais ne fonctionnant pas, j'ai changé et testé tout dont ce que j'ai publié.

Quand je valide mon formulaire, ça me marque que ça a fonctionné avec succès. Mais ça ne change rien dans la bdd.
Je n'ai aucune erreur, ça ne fait rien.
0
yg_be Messages postés 22729 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > Guillaume
23 juil. 2019 à 15:35
bonjour, peux-tu corriger les lignes 10 et 13, comme suggéré par Reivax962, et, si l'erreur persiste, partager ton code complet modifié?
        $stmt = $dbh->prepare("UPDATE membres SET prenom=:prenom WHERE id like :id ");
// ...
         $res = $stmt->execute();
0
Merci à vous deux, c'est réglé...
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
23 juil. 2019 à 15:30
Bonjour,

Commence par placer l'exécution de ta requête dans un TRY/CATCH histoire de voir éventuellement le message d'erreur...
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

Ensuite,
Lorsque , dans une requête SQL, tu fais une condition sur un champ avec la valeur exacte... ce n'est pas LIKE qu'il faut utiliser... mais un EGALE ( = )
WHERE id = :id


Et pour finir...
Je vois bien que tu récupères proprement la variable $prenom
$prenom = !empty($_POST['prenom']) ? $_POST['prenom'] : NULL;

mais.... je ne vois nul-part la récupération de ta variable $id .... essaierais tu de faire de la magie ?
Je te rappelle qu'il faut initialiser /récupérer les variables AVANT de les utiliser..... pas 50 lignes après...

D’ailleurs,s pour finir.. je t'invite à appliquer ceci: https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code


0
Merci à toi, c'est réglé...
0