Update bdd
Résolu
Guillaume
-
Guillaume -
Guillaume -
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)):
Et voici ma seconde page (connexion à ma bdd):
J'espère avoir tout dit et qu'une personne pourra m'aider... C'est surement une petite betise mais je tourne en rond.
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
A voir également:
- Update bdd
- Windows update bloqué - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Wsus offline update - Télécharger - Systèmes d'exploitation
- Nettoyage windows update - Guide
2 réponses
Bonjour,
Ton code, là, est bizarre :
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
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
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 ( = )
Et pour finir...
Je vois bien que tu récupères proprement la variable $prenom
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
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
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.