Page 1 sur 2

Afficher même type de données mysql dans div différente

Posté : 27 mai 2016, 10:24
par landers
Bonjour à tous,

Alors ma question est peut être débile, mais j'aimerai pouvoir afficher les données de cette requête :

Code : Tout sélectionner

function get_presentationContent() { global $bdd; $req = $bdd->prepare("SELECT title, subtitle, content FROM posts WHERE type='presentation'"); $req->execute(); $presentationContent = $req->fetchAll(); return $presentationContent; }
et derrière afficher une donnée comme ça :

Code : Tout sélectionner

<div class="row"> <?php foreach($presentationContent as $presContent): ?> <h2 class="titre"><?php echo $presContent['title']; ?></h1> <h3 class="soustitre"><?php echo $presContent['subtitle']; ?></h2> </div>
et une autre plus loin dans ma page.

Dans 2 divs différentes. Alors déjà en PHP, que faut il que j'utilise ? Si je fais un foreach, ça va tout afficher non ? Si quelqu'un pouvait m'éclairer.

Re: Afficher même type de données mysql dans div différente

Posté : 27 mai 2016, 10:33
par tof73
il faut fermer le foreach.
s'il n'y a qu'un enregistrement retourné avec type='presentation', alors le foreach fait l'affaire.

Re: Afficher même type de données mysql dans div différente

Posté : 27 mai 2016, 10:41
par landers
Alors j'ai pas tout mis, je ferme bien le foreach plus loin. Justement il y a plusieurs enregistrement dans "presentation". Et je souhaite afficher 1 donnée dans une div, et une autre dans une autre div.

En gros c'est ça

Code : Tout sélectionner

<section class="presentation"> <div class="row"> <?php foreach($presentationContent as $presContent): ?> <h1 class="titre"><?php echo $presContent['titren°1']; ?></h1> <h2 class="soustitre"><?php echo $presContent['soustitren°1']; ?></h2> </div> <div class="row"> <div class="small-12 medium-3 columns"> <img class="imgDeco" src="http://placehold.it/450x350" alt=""> </div> <div class="small-12 medium-6 columns"> <p><?php echo $presContent['contenun°1']; ?></p> <?php endforeach; ?> </div> <div class="small-12 medium-3 columns"> <img class="imgDeco" src="http://placehold.it/450x350" alt=""> </div> </div> </section><!-- FIN PRESENTATION --> <hr/> <section class="presentation"> <div class="row"> <?php foreach($presentationContent as $presContent): ?> <h2 class="titre"><?php echo $presContent['titren°2']; ?></h1> <h3 class="soustitre"><?php echo $presContent['soustitre°2']; ?></h2> </div> <div class="row"> <div class="small-12 medium-4 columns hide-for-small-only"> <img class="imgDeco" src="http://placehold.it/450x350" alt=""> </div> <div class="small-12 medium-8 columns"> <p><?php echo $presContent['contenun°2']; ?><p> <?php endforeach; ?> </div> </div> </section><!-- FIN PRESENTATION -->

Re: Afficher même type de données mysql dans div différente

Posté : 27 mai 2016, 10:49
par tof73
$tab = get_presentationContent();
$contenu1 = $tab[0];
$contenu2 = $tab[1];

Re: Afficher même type de données mysql dans div différente

Posté : 27 mai 2016, 11:02
par landers
Je dois donc changer ma fonction get_presentationContent() en incluant ces variables ?

Là elle fonctionne comme ça

Code : Tout sélectionner

// Traitement des données de présentation foreach($presentationContent as $cle => $presContent) { $presentationContent[$cle]['title'] = utf8_encode($presContent['title']); $presentationContent[$cle]['subtitle'] = utf8_encode($presContent['subtitle']); $presentationContent[$cle]['content'] = utf8_encode($presContent['content']); } $presentationContent = get_presentationContent(); // Afficher sur la page presentation.php include_once('vue/home/presentation.php');

Re: Afficher même type de données mysql dans div différente

Posté : 27 mai 2016, 11:58
par Saian
Bonjour toute la partie à répéter doit évidement être dans le foreach.
<?php foreach($presentationContent as $presContent): ?>
<section class="presentation">
   
  <div class="row">
    <h1 class="titre"><?php echo $presContent['titre']; ?></h1>
    <h2 class="soustitre"><?php echo $presContent['soustitre']; ?></h2>
  </div>

  <div class="row">
    <div class="small-12 medium-3 columns">
      <img class="imgDeco" src="http://placehold.it/450x350" alt="">
    </div>

    <div class="small-12 medium-6 columns">
      <p><?php echo $presContent['contenu']; ?></p>
    </div>

    <div class="small-12 medium-3 columns">
      <img class="imgDeco" src="http://placehold.it/450x350" alt="">
    </div>
  </div>

</section><!-- FIN PRESENTATION -->
<hr/>
<?php endforeach; ?>

Re: Afficher même type de données mysql dans div différente

Posté : 27 mai 2016, 12:32
par landers
Oui mais en fait j'ai du mal m'exprimer, je vais décrire un peu mieux :).

J'ai un base de données de ce type :

Table Posts
id-title-subtitle-created-type

Dans cette table Posts, j'ai en fait quasiment tout mon site, que je définis par un type.

J'ai par exemple type=page, type=atouts, type=presentation ...

Jusque ici j'essayais de rendre la page d'accueil dynamique, ce qui a plutôt bien marché. Sur l'accueil, j'affiche les données de la table Posts avec un type=peu importe, dans la même div.

Par exemple, type=atouts, tout est affiché dans une seule div donc ça va.

Là pour la page presentation.php, je souhaiterais récupérer les posts type=presentation, avec 1 donnée de ce type dans une div, et l'autre donnée dans une autre div.

Et c'est ça que je n'arrive pas à faire.

Re: Afficher même type de données mysql dans div différente

Posté : 27 mai 2016, 12:56
par Saian
Désolé Landers mais je ne comprends pas où est le problème. Tu parles de div mais y a pleins de div dans le code html et tu montres un code avec 2 sections l'une avec titre n°1 etc et l'autre avec titre n°2 etc. C'est exactement ce que fait le code que je t'ai mis. Il crée 2 sections présentation chacune contenant les informations d'une ligne...

Re: Afficher même type de données mysql dans div différente

Posté : 27 mai 2016, 13:03
par landers
Le truc c'est que j'ai une div avec 1 image et une autre avec 2 images, donc comment faire avec un foreach ?

Re: Afficher même type de données mysql dans div différente

Posté : 27 mai 2016, 15:49
par Saian
Euh la de ce que je vois les images pour le moment c'est juste du placeholder... le but c'est quoi ? de mettre 2 images sur le premier et une seule sur les suivants ? tu auras toujours uniquement 2 posts ? tu en auras peut être plus ? pourquoi 2 images sur le premier et 1 seule sur le deuxième ? d'où vont sortir les images ?
Sinon il suffit par exemple de mettre un i = 0 avant la boucle, de l'incrémenter dedans et d'afficher la deuxième image en fonction de la valeur de i ou d'un modulo de i dans le cas ou tu aurais plus de 2 posts et voudrais alterner entre 2 images et 1 image. Et puis arrêtes de parler de div à tout bout de champ ce n'est pas clair. ^^

Re: Afficher même type de données mysql dans div différente

Posté : 27 mai 2016, 15:58
par landers
Le but c'est de pouvoir administrer chaque section de ce site, comme un CMS, après pour les images c'est vrai que c'est pas forcément utile que y'en ai une d'un coté et 2 de l'autres.
Pour l'instant je suis uniquement sur la partie texte du site, je verrai pour les images plus tard. Désolé si je ne suis pas clair, mais j'ai la tête dans le guidon du coup j'ai pas beaucoup de recul par rapport à ce que je veux exprimer ^^.

Re: Afficher même type de données mysql dans div différente

Posté : 27 mai 2016, 16:05
par Saian
Je demandais le but par rapport aux images. ;)
Tu as bien vu la proposition de solution ? tu la comprends ?

Re: Afficher même type de données mysql dans div différente

Posté : 27 mai 2016, 16:16
par landers
Y'a pas vraiment de but pour les images, c'est histoire de générer du contenu illustré différemment. Oui oui la proposition de solution c'est que pour chaque données de type=presentation, on affiche cette section. C'est ce que j'avais fait, c'est par rapport aux images que j'ai bloqué.

Re: Afficher même type de données mysql dans div différente

Posté : 27 mai 2016, 16:19
par Saian
Ok donc je te remets la proposition de solution car je ne comprends pas bien si tu l'as vu ou pas.

Il suffit par exemple de mettre un i = 0 avant la boucle, de l'incrémenter dans la boucle et d'afficher la deuxième image en fonction de la valeur de i ou d'un modulo de i dans le cas ou tu aurais plus de 2 posts et voudrais alterner entre 2 images et 1 image.

Et voilà pour son illustration :
<?php $i = 0; foreach($presentationContent as $presContent): $i++; ?>
<section class="presentation">
   
  <div class="row">
    <h1 class="titre"><?php echo $presContent['titre']; ?></h1>
    <h2 class="soustitre"><?php echo $presContent['soustitre']; ?></h2>
  </div>

  <div class="row">
    <div class="small-12 medium-3 columns">
      <img class="imgDeco" src="http://placehold.it/450x350" alt="">
    </div>

    <div class="small-12 medium-6 columns">
      <p><?php echo $presContent['contenu']; ?></p>
    </div>

    <?php if($i % 2 !== 0): ?>
    <div class="small-12 medium-3 columns">
      <img class="imgDeco" src="http://placehold.it/450x350" alt="">
    </div>
    <?php endif; ?>
  </div>

</section><!-- FIN PRESENTATION -->
<hr/>
<?php endforeach; ?>

Re: Afficher même type de données mysql dans div différente

Posté : 27 mai 2016, 16:24
par landers
Merci effectivement ça peut être une solution. Je vais m'en tenir au simple foreach pour l'instant, on verra pour une V2. Il y aura 2 images et basta ^^. De tout manière vu comme c'est parti, ça va pas être mon dernier poste sur ce forum ^^. J'ai voulu partir sur une base MVC, mais je crois que je suis entrain de me compliquer la vie car il y a également tout ce process à assimiler