Petit problème sur une requête PHP
Résolu
Esperance
-
esperance -
esperance -
Bonjour tout le monde !
J'essaie de pouvoir supprimer et modifier ma BDD à partir de mon Back Office mais cela ne fonctionne pas --' et je n'ai pas d'erreur qui s'affiche.
Voici le bout de code qui correspond à mes requêtes :
Est-ce que quelqu'un pourrait gentiment m'aider?
Merci à toutes les personnes qui pourront m'aider !
J'essaie de pouvoir supprimer et modifier ma BDD à partir de mon Back Office mais cela ne fonctionne pas --' et je n'ai pas d'erreur qui s'affiche.
Voici le bout de code qui correspond à mes requêtes :
if(isset($_POST['Sup'])){
$id=$_POST['id'];
$supprimer = $_POST['Sup'];
$supprimer=$bdd->query("DELETE FROM ".$table. " WHERE id_".$table. "=".$id);
} // Ceci est l'action pour supprimer la ligne d'une table
if(isset($_POST['Modif'])){
$id=$_POST['id'];
$modifier = $_POST['Modif'];
$preparation="";
foreach ($_POST as $clef => $value) {
if ($clef !='valider' && $clef != 'Modif' && $clef !='id'){
$preparation=$preparation.$clef.'="'.$value.'",';
}// Ceci est l'action pour modifier la ligne d'une table
}
$preparation = substr($preparation, 0, -1);
$modifier=$bdd->query("UPDATE ".$table. " SET ".$preparation. " WHERE id_".$table. "=".$id);
}
Est-ce que quelqu'un pourrait gentiment m'aider?
Merci à toutes les personnes qui pourront m'aider !
A voir également:
- Petit problème sur une requête PHP
- Easy php - Télécharger - Divers Web & Internet
- Comment imprimer une photo en petit - Forum Photo numérique
- Petit 2 ✓ - Forum Bureautique
- Trier du plus petit au plus grand excel - Guide
- Petit 3 ✓ - Forum Word
5 réponses
Bonjour,
Déjà .. peux tu nous dire si tu utilises PDO ou mysqli ?
Ensuite, sorts les "requêtes" de leurs exécutions et fais en des echo
par exemple :
Déjà .. peux tu nous dire si tu utilises PDO ou mysqli ?
Ensuite, sorts les "requêtes" de leurs exécutions et fais en des echo
par exemple :
//récupération "propre" des variables $id= !empty($_POST['id']) ? $_POST['id'] : NULL; $sql = "DELETE FROM $table WHERE id_".$table. "='$id'"; echo "<br>Requete :<br>".$sql; $supprimer=$bdd->query($sql);
jordane45
Messages postés
38486
Date d'inscription
Statut
Modérateur
Dernière intervention
4 752
requête que tu pourras (devras...) tester directement dans ta bdd en passant par phpmyadmin par exemple ...
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonsoir, je vois que tu fais (deux fois):
je me demande si tu ne devrais pas plutôt faire:
qu'en penses-tu?
peux-tu faire
" WHERE id_".$table. "=".$id
je me demande si tu ne devrais pas plutôt faire:
" WHERE ".$table."id_ =".$id
qu'en penses-tu?
peux-tu faire
print_r($_POST);, et ajouter des
echopour vérifier si tes
ifet tes
foreachse comportent comme tu l'imagines?
Bonjour yg_be,
bonsoir, je vois que tu fais (deux fois):
" WHERE id_".$table. "=".$id1
je me demande si tu ne devrais pas plutôt faire:
" WHERE ".$table."id_ =".$id1
qu'en penses-tu?
Je vais essayer la deuxième solution pour voir. J'avoue que la première je l'ai repris d'un exo de cours. Donc j'ai fait comme on m'a montrer.
peux-tu faire print_r($_POST); , et ajouter des echo
pour vérifier si tes if et tes foreach se comportent comme tu l'imagines?
Quand je fais tout ca, tout me semble correcte.
J'ai bien mes lignes qui s'affiche.
Ce que je ne comprends pas c'est que je peux ajouter une ligne mais pas la supprimer n'y la modifier.
Merci de ta réponse.
bonsoir, je vois que tu fais (deux fois):
" WHERE id_".$table. "=".$id1
je me demande si tu ne devrais pas plutôt faire:
" WHERE ".$table."id_ =".$id1
qu'en penses-tu?
Je vais essayer la deuxième solution pour voir. J'avoue que la première je l'ai repris d'un exo de cours. Donc j'ai fait comme on m'a montrer.
peux-tu faire print_r($_POST); , et ajouter des echo
pour vérifier si tes if et tes foreach se comportent comme tu l'imagines?
Quand je fais tout ca, tout me semble correcte.
J'ai bien mes lignes qui s'affiche.
Ce que je ne comprends pas c'est que je peux ajouter une ligne mais pas la supprimer n'y la modifier.
Merci de ta réponse.
Donc.. si tu fais du PDO .. il faut activer la gestion des erreurs dans la connexion
comme ceci : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
puis au niveau de tes requêtes ajouter des try/catch et passer par les requêtes préparées :
NB: Quand tu as, dans ma réponse précédente, fais le ECHO de la requête .. c'était pour
1 - Nous la montrer en la postant sur le forum
2 - Que tu La testes, DIRECTEMENT, dans ta bdd via phpmyadmin.
comme ceci : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
try{ $bdd =new PDO('mysql:host=localhost;dbname=ville; charset=utf8', 'root', ''); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); }
puis au niveau de tes requêtes ajouter des try/catch et passer par les requêtes préparées :
$id= !empty($_POST['id']) ? $_POST['id'] : NULL; //preparation de la requête et des variables $sql = "DELETE FROM $table WHERE id_".$table. "=:id"; $datas = array(':id'=>$id); //Execution de la requete try{ $requete = $bdd -> prepare($sql) ; $requete->execute($datas) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); }
Quand je fais un echo il m'affiche mon echo et rien de plus même pas une erreur.
NB: Quand tu as, dans ma réponse précédente, fais le ECHO de la requête .. c'était pour
1 - Nous la montrer en la postant sur le forum
2 - Que tu La testes, DIRECTEMENT, dans ta bdd via phpmyadmin.
Bonjour jordane45
Déjà .. peux tu nous dire si tu utilises PDO ou mysqli ?
J'ai fait la BDD sur MySQL et mon BDD est connecté de la façon suivante :
$bdd = new PDO('mysql:host=localhost;dbname=ville;port=3306;charset=utf8', 'root', '');
Quand je fais un echo il m'affiche mon echo et rien de plus même pas une erreur.
Merci de ta réponse
Déjà .. peux tu nous dire si tu utilises PDO ou mysqli ?
J'ai fait la BDD sur MySQL et mon BDD est connecté de la façon suivante :
$bdd = new PDO('mysql:host=localhost;dbname=ville;port=3306;charset=utf8', 'root', '');
Quand je fais un echo il m'affiche mon echo et rien de plus même pas une erreur.
Merci de ta réponse
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Mon problème a été résolut, rappel de mon problème, je n'arrivais pas à supprimer ou modifier une ligne de ma BDD en passant par un Back Office.
j'ai changer plusieurs fois mon code et celui la est le bon.
Erreur que j'ai corrigé le nom de mes tables (erreur bête mais qui change tout, erreur de code pas au bonne endroit, et il me manquait un morceau de code) ces erreurs faisait que je ne pouvais pas avoir de réponse.
En faisant les var_dump et echo j'ai pu trouver mes erreurs et égalment grâce à l'aide se forum.
Voici mon code corriger:
j'ai changer plusieurs fois mon code et celui la est le bon.
Erreur que j'ai corrigé le nom de mes tables (erreur bête mais qui change tout, erreur de code pas au bonne endroit, et il me manquait un morceau de code) ces erreurs faisait que je ne pouvais pas avoir de réponse.
En faisant les var_dump et echo j'ai pu trouver mes erreurs et égalment grâce à l'aide se forum.
Voici mon code corriger:
<?php
if(isset($_POST['valider'])){
$_SESSION['table']=$_POST['valider'];
$table = $_SESSION['table'];
if(isset($_POST['Sup'])){
$id=$_POST['id'];
$supprimer = $_POST['Sup'];
try{ $bdd->query("DELETE FROM ".$table. " WHERE id_".$table. "=".$id);
}catch(PDOException $e ){
echo "Error: ".$e;
}
}
if(isset($_POST['Modif'])){
$id=$_POST['id'];
$modifier = $_POST['Modif'];
$preparation="";
foreach ($_POST as $clef => $value) {
if ($clef !='valider' && $clef != 'Modif' && $clef !='id'){
$preparation=$preparation.$clef.'="'.$value.'",';
}
}
$preparation = substr($preparation, 0, -1);
$modifier=$bdd->query("UPDATE ".$table. " SET ".$preparation. " WHERE id_".$table. "=".$id);
}
if(isset($_POST['Envoyer'])){
$preparation="";
$insert="";
foreach ($_POST as $clef => $value) {
if ($clef !='valider' && $clef != 'Modif' && $clef !='id' && $clef !='Envoyer' && $clef !='"_$j_"' ){
$insert=$insert.$clef.",";
$preparation=$preparation."'".$value."',";
}
}
$preparation = substr($preparation, 0, -1);
$insert = substr($insert, 0, -1);
$ajouter=$bdd->query('INSERT INTO '.$table.'('.$insert.') VALUES('.$preparation.')');
}