Petit problème sur une requête PHP
Résolu/Fermé
A voir également:
- Petit problème sur une requête PHP
- Easy php - Télécharger - Divers Web & Internet
- Petit l ✓ - Forum Loisirs / Divertissements
- Petit colis distribution ✓ - Forum Consommation & Internet
- Retour a la ligne php ✓ - Forum PHP
- Comment retourner un colis - Forum Consommation & Internet
5 réponses
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
11 mai 2017 à 18:57
11 mai 2017 à 18:57
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);
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
11 mai 2017 à 20:08
11 mai 2017 à 20:08
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.
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
12 mai 2017 à 11:49
12 mai 2017 à 11:49
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.
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
>
Esperance
12 mai 2017 à 17:24
12 mai 2017 à 17:24
Montres ton code corrige ainsi que le résultat des echo print demande par yg_be
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
>
esperance
15 mai 2017 à 09:41
15 mai 2017 à 09:41
Il serait bien dans ce cas :
- d'indiquer la solution ou le message ayant aidé ( au cas où d'autres visiteurs consulteraient ce message.... le forum étant là pour "partager" )
- de marquer la discussion comme RESOLU (lien se trouvant sous le titre de ta question).
Bonne journée.
- d'indiquer la solution ou le message ayant aidé ( au cas où d'autres visiteurs consulteraient ce message.... le forum étant là pour "partager" )
- de marquer la discussion comme RESOLU (lien se trouvant sous le titre de ta question).
Bonne journée.
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.')');
}
12 mai 2017 à 02:13