Problème avec " Variable " et " base de donnée ".

Fermé
ghostofnight76 Messages postés 254 Date d'inscription samedi 6 novembre 2010 Statut Membre Dernière intervention 1 mai 2014 - Modifié par ghostofnight76 le 25/10/2013 à 22:15
 Utilisateur anonyme - 26 oct. 2013 à 12:12
Bonjour ,


J'étudie les " base de données " , et j'apprends qu'on peu utiliser des variables dans une requêtes SQL .

Donc voici le code :


<!DOCTYPE html>
<html>
<head>
<title>Blog de Thomas.LANCHON</title>
<meta charset="utf-8" lang="Fr">
<link href="style.css" rel="stylesheet">
</head>

<body>
<form method="POST" action="index.php">
<input type="text" name="auteur" placeholder="Auteur" alt="" title="Auteur">
<input type="text" name="prix" placeholder="Prix" alt="" title="Prix">
</form>

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



$reponse = $bdd->prepare('SELECT * FROM jeux_video possesseur = ? ');
$reponse->execute(array($_POST['auteur']));
while($donnees = $reponse->fetch())
{
echo ( $donnees['possesseur']);
}
$reponse->closeCursor();

?>

</body>

</html>


Le problème ?

Notice: Undefined index: auteur in C:\wamp\www\Blog\index.php on line 25

J'ai beau chercher d'ou vient le problème mais impossible .
Voilà j'espère que vous pourriez m'aidez .
Merci =)

1 réponse

Bonjour

Ce n'est pas un problème de mysql, c'est PHP qui détecte cette erreur car effectivement $_POST['auteur'] n'est pas défini, du moins la première fois que tu exécutes ton script.
En effet, quand tu l'exécutes la première fois, le formulaire s'affiche mais l'exécution continue. Contrairement à ce que tu sembles croire, il n'attend pas que le formulaire soit saisi. Donc la variable $_POST est vide. Elle sera remplie quand on validera le formulaire en cliquant sur le bouton submit (tiens, il n'y en a pas ? il faut le rajouter).
Le script sera appelé une seconde fais, avec cette fois la variable $_POST qui contiendra les valeurs saisies dans les champs du formulaire.

Pour éviter de traiter le formulaire s'il n'a pas été saisi, il suffit de tester l'existence d'une des (idéalement toutes) variables du formulaire avec isset :

<?php
if (isset($_POST['auteur'])) {
try
....
$reponse->closeCursor();
}
....
0
Utilisateur anonyme
26 oct. 2013 à 12:12
Du coup, j'ai oublié de regarder la requête... Elle est erronnée, il te manque un WHERE :
SELECT * FROM jeux_video WHERE possesseur = ?
Et le but de ton script m'échappe un peu : si tu sélectionnes les lignes dont le champ possesseur a une certaine valeur, et que tu n'affiches que le champ possesseur, tu ne vas afficher que cette valeur... Tout au plus, ça va te permettre de voir combien il y a de lignes.
0