Si une donnée est bonne on affiche

Chooper01

Chooper01 Le 1 septembre 2016 à 02:28 (Édité le 25 janvier 2019 à 17:52)

Bonsoir,

Je voudrais affiché une variable si seulement elle est égale a "blablabl" je vous montre mon code

<li id="titre_pers"><a href="lesrecettes.php?id=<?= $r['id']?>"><?= if ($r['type'] == 'Entrées') 
         {
            echo $r['Titre'] ; ?></a></li>
         <?=
         }
         ?>
En gros je veux que si le $r['type'] = Entrées bah il affiche le titre . 

Et voila l'erreur : "Parse error: syntax error, unexpected 'if' (T_IF) in C:\wamp64\www\cuisine\recettes.php on line 66"

Merci !
WhiiTe

WhiiTe Le 1 septembre 2016 à 03:00 (Édité le 1 septembre 2016 à 03:00)

    <li id="titre_pers"><a href="lesrecettes.php?id=<?= $r['id']; ?>"><?php if($r['Type'] == 'Entrées') { echo $r['Titre'] } ?></a></li>
Tu te compliques la vie à faire des sauts de ligne et des <?= à tout va, alors que ça loge sur une ligne .. ^^
Chooper01

Chooper01 Le 1 septembre 2016 à 03:34

Salut merci de ta réponse ! sa fonctionne niquel juste maintenant j'ai un bug affichage
je voudrais enlever le point ...



et le code en entier 
<div id="point" style="color: rgba(212, 194, 73, 1);"> 
      <ul>
      <?php while ($r =$recette->fetch()) 
      {?>
         <li id="titre_pers"><a href="lesrecettes.php?id=<?= $r['id']; ?>"><?php if($r['type'] == 'Entrées') { echo $r['Titre']; } ?></a></li>
            
      <?php
      }
      ?>
      </ul>
      </div>
merci ..
TheOldNoob

TheOldNoob Le 1 septembre 2016 à 09:15 (Édité le 1 septembre 2016 à 09:16)

Le probleme que tu a eu c'est que <?= c'est egale a <?php echo
Donc tu demandait de faire un echo de ton if

Ensuite, pour retier le point de ta liste, qui n'est pas un bug, c'est du CSS.

list-style : none;
Chooper01

Chooper01 Le 1 septembre 2016 à 11:47

salut oui mais je veux qu'il ait un point juste quand il y a du texte a coté ..
TheOldNoob

TheOldNoob Le 1 septembre 2016 à 12:15

bah, la il affiche une boucle, et je pense qu'il y a une boucle vide, donc regarde dans ta bdd si tu a pas un vide juste avant ton omelette
Chooper01

Chooper01 Le 1 septembre 2016 à 13:00

Bah ce qui est avant omelette ne respect pas le if du coup c'est normal qu'il l affiche pas mais est ce possible d'enlever le point lorsque le if est pas respecté ? 
TheOldNoob

TheOldNoob Le 1 septembre 2016 à 13:12

Oui, mais la tu lui dit de faire un echo que si le type est egale a entrée, le reste du temps, il fait pas d'echo, mais il trouve quand même une ligne, donc il l'affiche, mais n'affiche pas son contenue.

Je te met le code que moi j'utilise pour affiche des commentaire sur un livre d'or, uniquement si l'admin a validé le commentaire.
Tu va voir que c'est exactement ce que tu cherche a faire, c'est a dire, afficher uniquement les entrées...

div class="row">
                <?php        
                  $res = $pdo->prepare('SELECT * FROM gold_book WHERE accepted = :show ORDER BY date_add DESC LIMIT 6 OFFSET 0');
                  $res->bindValue(':show', 'show');
                  $res->execute();
                
                  $notice = $res->fetchAll(PDO::FETCH_ASSOC); 
                  foreach($notice as $not):
                 ?>
                 <div class="col-xs-12 col-sm-12 col-md-6">
                    <blockquote><?= $not['desc_gold'] ?>" <cite><?php echo $not['name'].', le '. $not['date_add'] ?> </cite> </blockquote>
                </div>
                    <?php endforeach; ?>
            </div>
En fait, tout se passe dans ma requete.
Je lui dit d'aller chercher dans ma table 'gold_book' la ou l'état accepted est egale a 'show' et je les trie par date.(sachant que chez moi l'admin a la possibilité de changer l'état 'acccepted' en 'show' ou en 'hide'
Puis je fait un echo de ce que j'ai besoin.

Toi, vu va faire pareil, mais tu va choisir si c'est un plat, une entrée, un dessert, un accompagnement, un vin... bref, tout ce que peu avoir besoin ton restaurateur 😉
Chooper01

Chooper01 Le 1 septembre 2016 à 13:27

Merci pour les explication mais le soucis c'est que dans ma page plus bas j'affiche un autre type de plat 
TheOldNoob

TheOldNoob Le 1 septembre 2016 à 14:33

Dans se cas, tu peu faire un formulaire (avec <select>) en POST qui te permettra de choisir le type de plat dans ta requete
Chooper01

Chooper01 Le 1 septembre 2016 à 15:34

bah je l'ai déja mis le Select ^^ mais la requête devra ressembler a quoi ?
TheOldNoob

TheOldNoob Le 1 septembre 2016 à 17:16

Tu fait un formulaire avec plusieurs choix (que tu doit savoir faire) :

- Entrée
- Plat
- Dessert
- etc...

Ensuite, tu fait ta requete presque normalement, mais a la place de 'Entrée' tu fait une concaténation avec le choix fait dans le formulaire plus haut

En gros (attention, code a developper par toi même 😉 )
vérification du post avec les empty et isset blablabla tu fait ton php pour gérer ton formulaire

$type = $_POST['type'];

$res = $pdo->prepare('SELECT * FROM gold_book WHERE type = :'.$type.' ORDER BY date_add DESC LIMIT 6 OFFSET 0');

Puis tu fait ton formulaire

<form methode="post">
   <select id="type" name="type">
      <option value="entree">Entrée</option>
      <option value="plat">Plat</option>
      <option value="dessert">Déssert</option
   etc...

Voilà, je pense t'avoir lancer dans la bonne dirrection, te reste plus qu'a codé 😉
Chooper01

Chooper01 Le 1 septembre 2016 à 18:42

Non c'est pas ça en gros une personne ajoute une recette sur "ajouter.php" ou il y a un formulaire ect ect 
Et je veux pas exemple si la personne a choisis dans <select> Entrées </select bah il me l'affiche dans la pages ou il y a des recettes en dessous du titre Les recettes 

Merci 😋
TheOldNoob

TheOldNoob Le 1 septembre 2016 à 18:55

bah... me semble que c'est exactement ce que j'ai expliquer -_-
Balatharas

Balatharas Le 1 septembre 2016 à 18:55 (Édité le 1 septembre 2016 à 18:58)

Tu met un truc du genre:
if(isset($_POST['selection']) AND $_POST['selection'] == "Entrée") {
   echo "ok";
} else {
   echo "non";
}
En clair: si on a une sélection, et que cette sélection contient Entrée, alors je dis ok. Mais si elle contient autre chose, alors je dis non.
EDIT: Dans la page ou tu veux afficher, tu fais un query de ta table ou est stockée la sélection, et une boucle while avec un fetch de ton query, ensuite tu affiche par exemple $s['selection'] ($s qui est le fetch de ton query) dans ton <li>
Chooper01

Chooper01 Le 1 septembre 2016 à 21:58

La  je suis perdu xD

Donc :

Mon code ou le gars entre la recette :
if (isset($_POST['titre'], $_POST['type'], $_POST['nbrpers'], $_POST['1ing'], $_POST['2ing'], $_POST['3ing'], $_POST['4ing'], $_POST['5ing'], $_POST['6ing'], $_POST['7ing'], $_POST['8ing'], $_POST['9ing'], $_POST['10ing'], $_POST['contenu'])) 
      {
         if (!empty($_POST['titre']) AND !empty($_POST['type']) AND !empty($_POST['nbrpers']) AND !empty($_POST['1ing']) AND !empty($_POST['2ing']) AND !empty($_POST['3ing']) AND !empty($_POST['4ing']) AND !empty($_POST['5ing']) AND !empty($_POST['6ing']) AND !empty($_POST['7ing']) AND !empty($_POST['8ing']) AND !empty($_POST['9ing']) AND !empty($_POST['10ing']) AND !empty($_POST['contenu'])) 
         {
               
               $titre = htmlspecialchars($_POST['titre']);
               $type = htmlspecialchars($_POST['type']);
               $nbrpers = htmlspecialchars($_POST['nbrpers']);
               $_1ing = htmlspecialchars($_POST['1ing']);
               $_2ing = htmlspecialchars($_POST['2ing']);
               $_3ing = htmlspecialchars($_POST['3ing']);
               $_4ing = htmlspecialchars($_POST['4ing']);
               $_5ing = htmlspecialchars($_POST['5ing']);
               $_6ing = htmlspecialchars($_POST['6ing']);
               $_7ing = htmlspecialchars($_POST['7ing']);
               $_8ing = htmlspecialchars($_POST['8ing']);
               $_9ing = htmlspecialchars($_POST['9ing']);
               $_10ing = htmlspecialchars($_POST['10ing']);
               $contenu = htmlspecialchars($_POST['contenu']);
               $image = "cuisine.png" ;
               $ins = $bdd->prepare("INSERT INTO recette (Image, Titre, Contenu, Nbrpers, 1ing, 2ing, 3ing, 4ing, 5ing, 6ing, 7ing, 8ing, 9ing, 10ing, type, datepub) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())");
               $ins->execute(array($image, $titre, $contenu, $nbrpers, $_1ing, $_2ing, $_3ing, $_4ing, $_5ing, $_6ing, $_7ing, $_8ing, $_9ing, $_10ing, $type));
               $msg = 'Votre recette a bien été envoyée !' ;
         }
            else 
            {
               $erreur = 'Veuillez remplir tous les champs !' ;
            }
      }
?>




// la partie ou le gars entre le type

<label for="type" > Type de la recette :</label>
         <select id="type" name="ori">
            <option value="Entrées"> Entrées </option>
            <option value="Plat"> Plat </option>
            <option value="Boisson"> Boisson </option>
            <option value="Apéritifs"> Apéritifs </option>
         </select>  <br>
Ou la recette apparaît quand le gars appuie sur envoyer :

$recette = $bdd->query('SELECT * FROM recette ORDER BY datepub DESC');

         <div id="Entrées"><h2> Recettes des Entrées </h2></div>
      
      <div id="point" style="color: rgba(212, 194, 73, 1);">
      <ul>
      <?php while ($r =$recette->fetch()) 
      {?>
         <li id="titre_pers"><a href="lesrecettes.php?id=<?= $r['id']; ?>"><?php if($r['type'] == 'Entrées') { echo $r['Titre']; } ?></a></li>
            
      <?php
      }
      ?>
      </ul>
      </div>
Voila je m’excuse du dérangement ..
TheOldNoob

TheOldNoob Le 1 septembre 2016 à 22:44

Tu retir le fi($r['type'] == 'entrées')

Dans ta requete, tu fait comme j'ai dit plus haut 'SELECT * FROM recette WHERE type = :entrées ODER BY datepub DESC'


Sinon dans ta bdd, je déconseil l'utilisation des accent, car suivent ton serveur d'hebergement l'utf-8 peu posé probleme.
La convention veux aussi qu'on ecrivent des noms anglais et sans majuscule.

Après tu fait comme tu veux ^^
Chooper01

Chooper01 Le 1 septembre 2016 à 23:04

Voila j'ai fais comme tu m'as dis mais rien ne s'affiche..
$type ='Entrées';
$recette = $bdd->prepare('SELECT * FROM recette WHERE type ='.$type.'ORDER BY datepub DESC');
<div id="point" style="color: rgba(212, 194, 73, 1);">
      <ul>
      <?php while ($r =$recette->fetch()) 
      {?>
         <li id="titre_pers"><a href="lesrecettes.php?id=<?= $r['id']; ?>"><?= $r['Titre'] ?></a></li>
            
      <?php
      }
      ?>
      </ul>
      </div>
TheOldNoob

TheOldNoob Le 1 septembre 2016 à 23:54 (Édité le 2 septembre 2016 à 00:00)

essais avec ça :

$recette = $bdd->prepare('SELECT * FROM recette WHERE type = :'.$type.'ORDER BY datepub DESC');
$recette->bindValue(':$type', '$type');
$recette->execute();
Mais je te conseil de relire la totalité de mon code avant de l'adapté en morceau dans ton code.

        <div class="row">
                <?php        
                  $res = $pdo->prepare('SELECT * FROM gold_book WHERE accepted = :show ORDER BY date_add DESC LIMIT 6 OFFSET 0');
                  $res->bindValue(':show', 'show');
                  $res->execute();
                
                  $notice = $res->fetchAll(PDO::FETCH_ASSOC); 
                  foreach($notice as $not):
                 ?>
                 <div class="col-xs-12 col-sm-12 col-md-6">
                    <blockquote><?php echo $not['desc_gold'] ?>" <cite><?php echo $not['name'].', le '. $not['date_add'] ?> </cite> </blockquote>
                </div>
                    <?php endforeach; ?>
            </div>
La façon dont j'affiche mes données est complêtement différentes de la tiennes
Chooper01

Chooper01 Le 2 septembre 2016 à 16:34

Salut merci mais est-ce possible de le faire d'une autre manière ? ..
Car en lissant ce que tu m'as envoyé j'ai eu du mal a comprendre et j'essaie de le faire avec tous ce que j'ai appris .. 
^^
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte