j'ai écumer les sites, j'ai fais des tas de tests, mais je ne comprends toujours pas comment mettre une variable a la place d'une requête fixe ...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Prières Amour, Argent, Santé et Travail</title>
</head>
<body>
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=bartoon;charset=utf8', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
<form method="post" action="cible.php">
<label for="ange">Vous recherchez une prière de quel ange ?</label><br />
<select name="ange">
<?php
$reponse = $bdd->query('SELECT ange FROM ange_priere');
while ($donnees = $reponse->fetch())
{
?>
<option value="<?php echo $donnees['ange']; ?>"> <?php echo $donnees['ange']; ?></option>
<?php
}
?>
</select>
<input type="submit" value="Valider" />
</form>
</body>
</html>
ceci est mon fichier formulaire2.phpdedans je fais un formulaire en liste déroulante ou les choix sont pris dans une table sql. je valide mon choix et pars sur un fichier cible.php que voici :
<?php echo $_POST['ange']; ?>
<?php
try
{
// on se connecte a MYSQL
$bdd = new PDO('mysql:host=localhost;dbname=bartoon;charset=utf8', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$nom_ange=$_POST['ange'];
$reponse = $bdd->query('SELECT priere1 FROM ange_priere WHERE ange= "Mahasiah" && amour= 1');
//$reponse = $bdd->query('SELECT priere1, ange FROM ange_priere WHERE ange= $nom_ange AND amour= 1 AND argent= 0 AND sante= 0 AND travail= 0');
// On affiche chaque entrée une à une
while ($donnees = $reponse->fetch())
{
?>
<p>
L'ange concerne est : <strong><?php echo $_POST['ange']; ?></strong>, et la priere est : <br>
<?php echo $donnees['priere1']; ?><br /> <?php echo $nom_ange; ?>
<?php
}
$reponse->closeCursor(); // Termine le traitement de la requête
?>
Le soucis est que quand je veux remplacer "Mahasiah" par une variable (qui est a l'origine $_POST['ange'] qui vient de mon formulaire2.php dans cette ligne : $reponse = $bdd->query('SELECT priere1 FROM ange_priere WHERE ange= "Mahasiah" && amour= 1');
j'ai cette erreur Fatal error: Call to a member function fetch() on boolean in F:\www\testphp\cible.php on line 26
si je supprime tout ce qui est en rapport avec la ligne 26 et que je garde que ca :
<?php echo $_POST['ange']; ?>
<?php
try
{
// on se connecte a MYSQL
$bdd = new PDO('mysql:host=localhost;dbname=bartoon;charset=utf8', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$nom_ange=$_POST['ange'];
//$reponse = $bdd->query('SELECT priere1 FROM ange_priere WHERE ange= "Mahasiah" && amour= 1');
$reponse = $bdd->query('SELECT priere1, ange FROM ange_priere WHERE ange= $nom_ange AND amour= 1 AND argent= 0 AND sante= 0 AND travail= 0');
// On affiche chaque entrée une à une
//while ($donnees = $reponse->fetch())
//{
?>
<p>
L'ange concerne est : <strong><?php echo $_POST['ange']; ?></strong>, et la priere est : <br>
<?php echo $donnees['priere1']; ?><br /> <?php echo $nom_ange; ?>
<?php
//}
//$reponse->closeCursor(); // Termine le traitement de la requête
?>
j'ai cette erreur :Notice: Undefined variable: donnees in F:\www\testphp\cible.php on line 33
ce que je comprends puisque j'ai enlever la définition de $donnees
mais du coup j'ai essayer avec $reponse et plein de choses farfelu parce que je tourne en rond.
en fait j'ai surtout l'impression que c'est la ligne
$reponse = $bdd->query('SELECT priere1, ange FROM ange_priere WHERE ange= $nom_ange AND amour= 1 AND argent= 0 AND sante= 0 AND travail= 0');
et le $nom_ange qui ne va pas, mais j'ai mais des "" des '' je teste de partout ce que donne $nom_ange et il correspond bien a ce que je veux comme variable mais cette ligne ne semble pas prendre la valeur ...
quand je remplace $nom_ange par un vrai nom "Mahasiah" et que je remet mon while and co ça fonctionne et cela écrit bien la prière, mais je voudrais que ca soit une variable que je puisse choisir dans la liste, parce qu'a l’arrivée il y a 72 noms ...
je suis sur que je passe a coté d'un truc tout con, mais je viens d'y passer la nuit et la je suis même plus sur que ce que j'explique est clair ...
quelqu'un pourrait m'aider s'il vous plait?
merci d'avance.