A voir également:
- Requete update ne s'execute pas
- Windows update 0x80070643 - Accueil - Windows
- Windows update bloqué - Guide
- Asus live update - Télécharger - Utilitaires
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Winget update - Guide
5 réponses
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
16 mai 2022 à 17:41
16 mai 2022 à 17:41
Bonjour,
Alors, déjà, mets le code de connexion dans un bloc try/catch pour lui tout seul...
Ensuite, place le code de ta requête, lui aussi dans un bloc try/catch rien que pour lui..
Et puis.. soit tu utilises query .. soit execute .. ( avec une très très forte préférence pour le exécute.
Il serait bien aussi d'utiliser les requêtes préparées correctement...
exemple:
Et enfin, pour pouvoir voir les éventuelles erreurs, tu dois désactiver les redirections.
Alors, déjà, mets le code de connexion dans un bloc try/catch pour lui tout seul...
Ensuite, place le code de ta requête, lui aussi dans un bloc try/catch rien que pour lui..
Et puis.. soit tu utilises query .. soit execute .. ( avec une très très forte préférence pour le exécute.
Il serait bien aussi d'utiliser les requêtes préparées correctement...
exemple:
//préparation de la requête et des variables $sql = "INSERT INTO matable (champ1,champ2) VALUES (:valeur1,:autrevaleur)"; $datas = array(':valeur1'=>$valeur1, ':autrevaleur'=>$toto); //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); }
Et enfin, pour pouvoir voir les éventuelles erreurs, tu dois désactiver les redirections.
Merci enormement Jordane45, j'ai fait comme vous venez de me l'indiquer mais malheureusement rien ne se passe:
$servname = "localhost"; $dbname = "biblio"; $user = "root"; $pass = ""; try{ $connexion = new PDO("mysql:host=$servname;dbname=$dbname", $user, $pass); $connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); }catch(PDOException $e){ echo "Erreur : " . $e->getMessage(); } // Récupèration de l'id passer en argument dans l'URL $id_eleve = (int) htmlentities(trim($_GET['id_eleve'])); /*if(!is_int($id_eleve) || $id_eleve == 0 || $id_eleve == $_SESSION['id_eleve']){ header('location: lister-eleves.php'); exit; } */ //On récupère les informations de l'utilisateur grâce à son ID $lister = $connexion->query("SELECT * FROM eleves WHERE id_eleve = $id_eleve"); $executeIsOk = $lister-> execute(); $eleves = $lister->fetch(); if (isset($_GET['modifier']) & !empty($_GET['modifier'])){ $nom = $_GET["nom"]; $prenom = $_GET["prenom"]; $date_nais = $_GET["date_nais"]; $addresse = $_GET["addresse"]; $classe = $_GET["classe"]; $telephone = $_GET["telephone"]; $groupe = $_GET["groupe"]; try{ $modifier = $connexion -> query("UPDATE eleves SET nom='$nom', prenom='$prenom', date_nais='$date_nais', addresse='$addresse', classe='$classe', telephone='$telephone', groupe='$groupe' WHERE id_eleve=$id_eleve"); $eleves = $modifier -> execute(); }catch(PDOException $e){ echo "Erreur : " . $e->getMessage(); } }
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
16 mai 2022 à 18:30
16 mai 2022 à 18:30
Des lignes de code 18,19, 20 et 33,34 ne sont toujours pas bonnes....
Regarde bien l'exemple que je t'ai donné
Regarde bien l'exemple que je t'ai donné
J'ai fait exactement comme indiqué. Pour la requete SELECT tout va bien car les informations du profil s'affichent dans le formulaire, le veritable probleme reside dans la requete UPDATE, les informations modifiees sont affichées dans l'url pourtant rien ne se passe dans la table, la requete n'est pas executée.
$servname = "localhost"; $dbname = "biblio"; $user = "root"; $pass = ""; try{ $connexion = new PDO("mysql:host=$servname;dbname=$dbname", $user, $pass); $connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); }catch(PDOException $e){ echo "Erreur : " . $e->getMessage(); } // Récupèration de l'id passer en argument dans l'URL $id_eleve = (int) htmlentities(trim($_GET['id_eleve'])); /*if(!is_int($id_eleve) || $id_eleve == 0 || $id_eleve == $_SESSION['id_eleve']){ header('location: lister-eleves.php'); exit; } */ //On récupère les informations de l'utilisateur grâce à son ID try{ $lister = $connexion->prepare("SELECT * FROM eleves WHERE id_eleve = $id_eleve"); $datas = array($id_eleve); $executeIsOk = $lister-> execute($datas); $eleves = $lister->fetch(); }catch(PDOException $e){ echo "Erreur : " . $e->getMessage(); } if (isset($_GET['modifier']) & !empty($_GET['modifier'])){ $nom = $_GET["nom"]; $prenom = $_GET["prenom"]; $date_nais = $_GET["date_nais"]; $addresse = $_GET["addresse"]; $classe = $_GET["classe"]; $telephone = $_GET["telephone"]; $groupe = $_GET["groupe"]; try{ $modifier = $connexion -> prepare("UPDATE eleves SET nom='$nom', prenom='$prenom', date_nais='$date_nais', addresse='$addresse', classe='$classe', telephone='$telephone', groupe='$groupe' WHERE id_eleve=$id_eleve"); $datas = array($nom, $prenom, $date_nais, $addresse, $classe, $telephone, $groupe); $modifier -> execute($datas); }catch(PDOException $e){ echo "Erreur : " . $e->getMessage(); print_r($datas); } }
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
Modifié le 17 mai 2022 à 15:49
Modifié le 17 mai 2022 à 15:49
Oulalala... ce n'est pas vraiment ce que je t'ai donné comme exemple...
Bon.. gagnons un peu de temps...
Voici à quoi pourrait ressembler un code "propre".
(je l'ai découpé en "petites" fonctions ( que tu pourras réutiliser ailleurs dans tes pages...)
En gros
PS: Pour faire de l'update ou de l'insert, je t'invite plutôt à utiliser un formulaire en $_POST plutôt que d'envoyer les variables dans l'URL. Tu auras moins de soucis.
Bon.. gagnons un peu de temps...
Voici à quoi pourrait ressembler un code "propre".
(je l'ai découpé en "petites" fonctions ( que tu pourras réutiliser ailleurs dans tes pages...)
En gros
<?php //démarrage session session_start(); //affichage des erreurs PHP dans la page pour être sûr de ne rien laisser trainer... error_reporting(E_ALL); ini_set('display_errors', true); ini_set('display_startup_errors', true); function getCnx(){ $servname = "localhost"; $dbname = "biblio"; $user = "root"; $pass = ""; try{ $connexion = new PDO("mysql:host=$servname;dbname=$dbname", $user, $pass); $connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $connexion; }catch(PDOException $e){ echo "Erreur : " . $e->getMessage(); } } //connexion à la bdd : $connexion = getCnx(); /** * Code permettant d'éxecuter une requête préparée */ function dbQuery($sql,$datas){ global $connexion; //on se connecte à la bdd try{ $prep = $connexion->prepare($sql); return $prep->execute($datas); }catch(PDOException $e){ echo "Erreur : " . $e->getMessage(); } } //permet de faire une requête SELECT et de retourner le premier jeu de résultat function db_One($sql,$datas=NULL){ $res = dbQuery($sql,$datas); return $res->fetch(); } //permet de faire une requête SELECT et de retourner tous les résultats function db_All($sql,$datas=NULL){ $res = dbQuery($sql,$datas); return $res->fetchAll(); } /** A utiliser pour les UPDATE ou les DELETE */ function db_Exec($sql,$datas=NULL){ $res = dbQuery($sql,$datas); return $res; } function getEleveById($id_eleve){ $sql = "SELECT * FROM eleves WHERE id_eleve = :id_eleve"; $datas = [':id_eleve'=>$id_eleve]; return db_One($sql,$datas); } function updateEleve($id_eleve,$nom,$prenom,$date_nais,$addresse,$classe,$telephone="",$groupe=""){ $sql = "UPDATE eleves SET nom=:nom, prenom=:prenom, date_nais=:date_nais, addresse=:addresse, classe=:classe, telephone=:telephone, groupe=:groupe WHERE id_eleve= :id_eleve"; $datas = [':nom'=>$nom, ':prenom'=>$prenom, ':date_nais'=>$date_nais, ':addresse'=>$addresse, ':classe'=>$classe, ':telephone'=>$telephone, ':groupe'=>$groupe, ':id_eleve'=>$id_eleve]; return db_Exec($sql,$datas); } // Récupèration de l'id passer en argument dans l'URL $id_eleve = !empty($_GET['id_eleve']) ? intval(trim($_GET['id_eleve'])) : NULL; if(!is_int($id_eleve)){ header('location: lister-eleves.php'); exit; } //On récupère les informations de l'utilisateur grâce à son ID $eleves = getEleveById($id_eleve); if (!empty($_GET['modifier'])){ $nom = !empty($_GET["nom"]) ? trim($_GET["nom"]) : ""; $prenom = !empty($_GET["prenom"]) ? trim($_GET["prenom"]) : ""; $date_nais = !empty($_GET["date_nais"]) ? trim($_GET["date_nais"]) : ""; // Attention.. doit être au format YYYY-MM-DD $addresse = !empty($_GET["addresse"]) ? trim($_GET["addresse"]) : ""; $classe = !empty($_GET["classe"]) ? trim($_GET["classe"]) : ""; $telephone = !empty($_GET["telephone"]) ? trim($_GET["telephone"]) : ""; $groupe = !empty($_GET["groupe"]) ? trim($_GET["groupe"]) : ""; $update = updateEleve($id_eleve,$nom,$prenom,$date_nais,$addresse,$classe,$telephone,$groupe); var_dump($update); //juste le temps des tests } else { echo "Le champ modifier n'est pas envoyé dans ton url...."; var_dump($_GET); exit; }
PS: Pour faire de l'update ou de l'insert, je t'invite plutôt à utiliser un formulaire en $_POST plutôt que d'envoyer les variables dans l'URL. Tu auras moins de soucis.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question