Undefined index

Fermé
VitalyLG Messages postés 3 Date d'inscription mercredi 23 juin 2021 Statut Membre Dernière intervention 27 juin 2021 - 23 juin 2021 à 16:10
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 - 27 juin 2021 à 12:12
Bonjour,

J'ai eu un problème suivant sous MAMP:

code:

<?php
try
{
$bdd = new PDO('mysql:host=localhost;port=8889;dbname=test;charset=utf8', 'root', 'root', array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
}
catch (Exception $e)
{
die('Erreur: ' . $e->getMessage());
}

$req = $bdd->prepare('SELECT nom FROM jeux_video WHERE possesseur = ?');
$req->execute(array($_GET['possesseur']));


$req->closeCursor();

?>

Message que je reçois: Notice: Undefined index: possesseur in D:\MAMP\htdocs\prepare.php on line 12

C'est un cours pour les débutants, j'essaye de suivre les codes donnés pour exemple. Le code ci-dessus est copié à la lettre de la leçon. Hélas, ça ne fonctionne pas.

Même message ressort pour $req = $bdd->prepare('SELECT nom FROM jeux_video WHERE possesseur = :possesseur');

3 réponses

jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
23 juin 2021 à 19:28
Bonjour
Le souci vient de la variable
$_GET['possesseur']
Cela signifie que tu ne passes pas cette variable via URL de la page...

0
VitalyLG Messages postés 3 Date d'inscription mercredi 23 juin 2021 Statut Membre Dernière intervention 27 juin 2021
25 juin 2021 à 14:37
Bonjour Jordane,
Merci beaucoup pour la réponse.

La même variable a fonctionné avec query

<?php
$bdd = new PDO('mysql:host=localhost;port=8889;dbname=test;charset=utf8', 'root', 'root', array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));

$reponse = $bdd->query('SELECT * FROM jeux_video');
while ($data = $reponse->fetch())
{
echo '<p>' . $data['console']. ' - ' . $data['nom'] . ' - ' . $data['possesseur'] . '</p>';
}
?>

Je crois, je dois lire un peu plus sur le sujet )))
0
VitalyLG Messages postés 3 Date d'inscription mercredi 23 juin 2021 Statut Membre Dernière intervention 27 juin 2021
27 juin 2021 à 12:06
Bonjour Jordane,
j'ai trouvé une réponse apparemment:
il a fallu ajouter@ à $_GET
ça a marché @$_GET
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
27 juin 2021 à 12:12
L'utilisation du arobase sert à "masquer" les erreurs ....
Pour correctement gérer ce genre de souci ... il faut récupérer "proprement" les variables AVANT de les utiliser.
Pour ça, tu peux utiliser les fonctions prévues à cet effet comme la fonction filter_input ou sinon, à minima l'écriture ternaire.

Par exemple, dans ton cas, j'aurais fait :

$poss = !empty($_GET['possesseur']) ? trim($_GET['possesseur']) : NULL;

$sql = 'SELECT nom FROM jeux_video WHERE possesseur = ?';
$datas = array($poss);

try{
   $req = $bdd->prepare($sql);
   $req->execute($datas);
}catch(Exception $e){
  //en cas d'erreur dans la requête SQL
  echo "Erreur " . $e->getMessage();
}



Au passage, je t'invite à lire et à appliquer les conseils donnés ici https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

et là https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

ainsi qu'une explication sur l'utilisation des balises de code pour poster ton code correctement sur ce forum :https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
0