Affiché certains élément avec un while sur une div

Mammouth du PHP | 643 Messages

15 oct. 2019, 15:33

Salut tout le monde.
Voilà j'ai un while qui marche bien qui me sert à affiché les jours d'ouverture d'un établissement
J'aimerais affiché les premiers jours dans une div puis les autres dans une div
Mon while:
  <?php

                                         // Planing etablissement
                                         while($planing = $sql->fetch(PDO::FETCH_ASSOC)){ 

                                            // Si le jour est fermé
                                            if($planing['opening'] == '0'){
                                                echo '<tr><td>'.$jour[$planing['jour']].'</td><td><span class="label label-danger">Fermé</span></td></tr>';
                                            }else{
                                            // Jours ouvert
                                            echo '<tr><td>'.$jour[$planing['jour']].'</td><td>'.$planing['ouverture'].' - '.$planing['fermeture'].'</td></tr>';
                                          }
                                        }
                                         ?>
Je récupère les jours (ex; 1 pour lundi )
Mon array jour:
$jour = array('1'=>'Lundi', '2'=>'Mardi', '3'=>'Mercredi', '4'=>'Jeudi', '5'=>'Vendredi', '6'=>'Samedi', '7'=>'Dimanche');

Mammouth du PHP | 1967 Messages

15 oct. 2019, 16:17

Par défault il te suffit d'un compteur pour savoir quand tu dois fermer ta div et en rouvrir une autre. tout en ayant une div qui souvre avant la boucle et une qui se ferme après.

Mais
tu utilise un tableau donc une div n'est pas indiqué surtout si elle est au travers de ton tableau.

quelle est l'HTML obtenu et quelle est l'HTML voulu ?
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Mammouth du PHP | 643 Messages

15 oct. 2019, 16:52

Le while parcourant et afffichant les jours d'ouverture avec les horaires :
 <?php
										 // Planing etablissement
										 while($planing = $sql->fetch(PDO::FETCH_ASSOC)){ 

										 	// Si le jour est fermé
										 	if($planing['opening'] == '0'){
										 		echo '<tr><td>'.$jour[$planing['jour']].'</td><td><span class="label label-danger">Fermé</span></td></tr>';
										 	}else{
										 	// Jours ouvert
											echo '<tr><td>'.$jour[$planing['jour']].'</td><td>'.$planing['ouverture'].' - '.$planing['fermeture'].'</td></tr>';
										  }
										}
										 ?>

[b]Code html renvoyé:[/b]
[html]
<div> Mardi02:00:00 - 02:00:00Lundi01:00:00 - 03:00:00Mardi03:00:00 - 01:00:00Lundi<span class="label label-danger">Fermé</span>Mardi01:00:00 - 02:00:00Lundi<span class="label label-danger">Fermé</span>Mardi<span class="label label-danger">Fermé</span>
 </div>
[/html]

[b]Et je souhaite affiché ainsi:[/b]
[html]
<div class="row">

                                    <div class="col-md-6">
                                        <ul>
                                            <li>Lundi <span>12h00 - 23h00</span></li>
                                            <li>Mardi <span>12h00 - 23h00</span></li>
                                            <li>Mercredi <span>12h00 - 23h00</span></li>
                                            <li>Jeudi <span>fermé</span></li>
                                        </ul>
                                    </div>
                                    <div class="col-md-6">
                                        <ul>
                                            <li>Vendredi <span>12h00 - 23h00</span></li>
                                            <li>Samedi <span>12h00 - 23h00</span></li>
                                            <li>Dimanche <span>Fermé</span></li>
                                        </ul>
                                    </div>
                                </div>
                            </div>
[/html]

Mammouth du PHP | 1967 Messages

16 oct. 2019, 07:56

Les code html obtenu ne correspond pas au code php donné.

en php tu utilise des balise tr et td tu es donc dans une table
le html obtenu est composé de div
Il y a donc incohérence.

pour obtenir quelque chose de proche de ce que tu désire voici un exemple de code
// Planing etablissement
$i=0;
echo '<div class="row">
    <div class="col-md-6">
                                        <ul>';
                     while($planing = $sql->fetch(PDO::FETCH_ASSOC)){ 
                       if ($i == 4) {
echo '</ul>
                                    </div>
                                    <div class="col-md-6">
                                        <ul>';
}
                     	// Si le jour est fermé
                     	if($planing['opening'] == '0'){
                     		echo '<li>'.$jour[$planing['jour']].'<span>Fermé</span></li>';
                     	}else{
                     	// Jours ouvert
                      echo '<li>'.$jour[$planing['jour']].'<span>'.$planing['ouverture'].' - '.$planing['fermeture'].'</span></li>';
                      }
$i++;
                    }
echo '
                                        </ul>
                                    </div>
                                </div>';
il te reste à jouer avec les date pour un affichege plus friendly
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Mammouth du PHP | 643 Messages

16 oct. 2019, 10:30

Alors j'ai corrigé un peu mon code mais rien ne s'afffiche ...
Le but est de me retrouvé avec 2 colonne (col-md-6)
la première colonne ( Lundi,Mardi,Mercredi,Jeudi)
2ème colonne (Vendredi,Samedi,Dimanche)
<div class="row">
   <div class="col-md-6">
      <ul>
           <?php
            $i=0;
             // Planing etablissement
             while($planing = $sql->fetch(PDO::FETCH_ASSOC)){ 
                  if ($i == 4) {
                    if($planing['opening'] == '0'){
                     echo '<li>'.$jour[$planing['jour']].'<span>Fermé</span></li>';
                           }else{
                         echo '<li>'.$jour[$planing['jour']].' '.$planing['ouverture'].' - '.$planing['fermeture'].'</li>';
                    }$i++;
                }
              }
  ?>
 </ul>
 </div>
 </div>
Edit:
J'ai testé çe code ci-dessous ça m'affiche bien tout sans les colonnes et en + pas dans l'odre de jour
// Planing etablissement
                                                     while($planing = $sql->fetch(PDO::FETCH_ASSOC)){ 
                                                        
                                                        if($planing['opening'] == '0'){
                                                            echo '<li>'.$jour[$planing['jour']].'<span>Fermé</span></li>';
                                                        }else{
                                                        echo '<li>'.$jour[$planing['jour']].' '.$planing['ouverture'].' - '.$planing['fermeture'].'</li>';
                                                        }
                                                      }

Mammouth du PHP | 1967 Messages

16 oct. 2019, 16:37

as tu compris l'utilité du if ($i==4) ??

car tu l'utilise dans lentièreté de ta boucle du coup il ne s'affiche rien
vérifie toujours le html obtenu plutot que le résultat dans le navigateur.

pour l'ordre des jours, fais le dans ta requète.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube