Appeller une table et sortir les élements d'une colonne avec un critère donné

Eléphanteau du PHP | 16 Messages

20 oct. 2015, 17:13

Hello,

alors voilà pour sortir mon include j'aimerais faire sortir id de ingrédient 1 = veau ou ingrédient 2 = truc ou ingrédient 3 = truc
Mais voilà je pense avoir mal fait :
<!DOCTYPE html>

<html>

    <head>

        <meta charset="utf-8" />

        <link rel="stylesheet" href="page.css" />
		<link href='https://fonts.googleapis.com/css?family=Shadows+Into+Light' rel='stylesheet' type='text/css'>

        <title>La Grouse</title>
		


    </head>



    <body>
	    
<?php
try
{
	// On se connecte à MySQL
	$bdd = new PDO('mysql:host=localhost;dbname=Cuisine;charset=utf8', 'root', 'tm5MRFJP3ymeMQZS');
}
catch(Exception $e)
{
	// En cas d'erreur, on affiche un message et on arrête tout
        die('Erreur : '.$e->getMessage());
}

// Si tout va bien, on peut continuer



// On récupère tout le contenu de la table jeux_video
$total_Recette = $bdd->query('select COUNT(id) as total from Liste des recettes ');
$total_Recette = $total_Recette->fetch();
$total_Recette = $total_Recette['total'];

$nbrIdRecette= rand(1, $total_Recette);
$res = $bdd->query("Liste des recettes * FROM Volaille WHERE id = $nbrIdRecette WHERE Ingrédient 1="Veau" WHERE Ingrédient 2 ="Volaille" WHERE Ingrédient 3 = "Volaille"");



while($donnees=$res->fetch())
{



?>
<div class="container_principal">
<?php include("entete.php"); ?>	
<h1 id="viande">Comment cuisiner la Grouse</h1>

<p class="contenu_recette">La Grouse est une volaille sauvage donc elle se cuisine comme n'importe quelle poule, poulet ou même faisant.
<br />Voici une petite recette que l'ont peut faire avec de la grouse.</p>


    

  
 <?php include($donnees['Nom'] . '.php'); ?>





</div>
<?php
}

$reponse->closeCursor(); // Termine le traitement de la requête

?>
</body>
</html>
Merci d'avance

Mammouth du PHP | 2703 Messages

20 oct. 2015, 17:23

il faudrait réviser son sql pour faire des requetes correctes, revoir par exemple ce que peut comporter le nom des champs, des tables ...

Eléphanteau du PHP | 16 Messages

20 oct. 2015, 17:54

Ben mes champs sont au format Text excepté l'ID

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 oct. 2015, 10:21

Bonjour,

Le problème vient surtout du nom de tes colonnes en base de données... ceux-ci ne devraient pas comporter d'accent ou de caractères spéciaux autre que - ou _ (il ne faut donc pas d'espace dans un nom de colonne) : " Ingrédient 3" pourrait être renommé en " ingredient_3 " pour éviter les problèmes.

Tu as ensuite un problème de construction dans ta requête. Celle-ci ne doit contenir qu'une seule clause WHERE dans laquelle tu peux avoir plusieurs conditions qui sont alors séparées par des instruction AND ou OR en fonction du besoin
$res = $bdd->query("Liste des recettes * FROM Volaille WHERE id = $nbrIdRecette WHERE Ingrédient 1="Veau" WHERE Ingrédient 2 ="Volaille" WHERE Ingrédient 3 = "Volaille"");
Enfin, les valeurs texte que tu utilises dans ta requête doivent être délimitées par des apostrophes (pour des questions de compatibilité avec les différents SGBD et dans ton cas pour éviter que php ne considère ta guillemet comme la fin de la chaîne de caractère qui constitue ta requête :
$sql = "SELECT * FROM Volaille 
  WHERE id = $nbrIdRecette 
     AND ingredient_1='Veau'
     AND ingredient_2 ='Volaille' 
     AND ingredient_3 = 'Volaille'";
$res = $bdd->query($sql);
Tu peux ensuite construire la requête sql de façon dynamique en fonction de variable ou de paramètre passés par l'utilisateur :
$sql = "SELECT * FROM Volaille 
  WHERE id = $nbrIdRecette ";

if (isSet($ingredient1))
    $sql .= " AND ingredient_1= $ingredient1 ";

if (isSet($ingredient2))
    $sql .= " AND ingredient_2= $ingredient2 ";

$res = $bdd->query($sql);
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 16 Messages

27 oct. 2015, 15:16

Je rencontre toujours un problème avec ce code merci d'avance de m'aider.
<!DOCTYPE html>

<html>

    <head>

        <meta charset="utf-8" />

        <link rel="stylesheet" href="page.css" />
		<link href='https://fonts.googleapis.com/css?family=Shadows+Into+Light' rel='stylesheet' type='text/css'>

        <title>Le Lièvre</title>
		


    </head>



    <body>
	    
<?php
try
{
	// On se connecte à MySQL
	$bdd = new PDO('mysql:host=localhost;dbname=Cuisine;charset=utf8', 'root', 'tm5MRFJP3ymeMQZS');
}
catch(Exception $e)
{
	// En cas d'erreur, on affiche un message et on arrête tout
        die('Erreur : '.$e->getMessage());
}

// Si tout va bien, on peut continuer


$total_Recette = $bdd->query('select COUNT(id) as total from Liste_recettes ');
$total_Recette = $total_Recette->fetch();
$total_Recette = $total_Recette['total'];

$nbrIdRecette= rand(1, $total_Recette);
$sql = "SELECT * FROM Liste_recettes 
  WHERE  Ingredient_1='volaille'
     OR Ingredient_2 ='volaille' 
     OR Ingredient_3 = 'volaille'";
$res = $bdd->query($sql);



while($donnees=$res->fetch())
{



?>
<div class="container_principal">
<?php include("entete.php"); ?>	
<h1 id="viande">Comment cuisiner le Lièvre</h1>

<p class="contenu_recette">Le Lièvre est un gibier qui se cuisine comme la Lapin, on peut en faire de la terrine ou encore le faire en plat en sauce, comme à la moutarde par exemple.
<br />Voici une petite recette que l'ont peut faire avec du lièvre.</p>


    

  
 <?php include($donnees['Nom'] . '.php'); 





</div>
<?php
}

$reponse->closeCursor(); // Termine le traitement de la requête

?>
</body>
</html>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

27 oct. 2015, 19:53

Je rencontre toujours un problème avec ce code merci d'avance de m'aider.
Avec une description du problème et/ou les messages d'erreurs rencontrés, c'est + simple pour pouvoir t'aider ;)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 16 Messages

28 oct. 2015, 01:55

Cela m'affiche une page blanche, je cherche donc à faire sortir l'ingrédien 1 2 ou 3 qui ce sera nommé volaille dans mon Liste_recettes

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

28 oct. 2015, 09:23

Page blanche = tu as une erreur dans ton code
Suis le tuto ici pour afficher les messages d'erreurs : faq-tutoriels/page-blanche-script-php-c ... 73178.html
Quand tout le reste a échoué, lisez le mode d'emploi...