IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Affichage tableau avec un "foreach"


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2019
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Affichage tableau avec un "foreach"
    Aujourd’hui, 11:24
    Bonjour !

    Je suis débutant et je viens demander votre aide au sujet de l'affichage d'un tableau (un emploi du temps), pour faire simple : je veux afficher un EDT qui récupère toutes les infos de ma BDD, le problème est que je n'ai qu'une seule valeur qui s'affiche dans le tableau.

    Normal me direz vous puisque je ne boucle pas l'affichage des données, mais le problème est là, je ne sais pas où placer mon "foreach" pour faire cela.

    J'ai essayé plusieurs "bricolage" (genre changer la position de mon "}") et le meilleur résultat que j'ai obtenu c'est : d'afficher TOUTES les données mais aussi autant de tableau que de données, alors que j'aimerais seulement UN tableau avec toutes les données dedans.

    J'imagine que cela doit être un truc bête mais je vois pas vraiment ce que c'est...

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    <?php
     
    function dateToFrench($date, $format)
    {
        $english_days = array('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday');
        $french_days = array('Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche');
        $english_months = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
        $french_months = array('janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre');
        return str_replace($english_months, $french_months, str_replace($english_days, $french_days, date($format, strtotime($date) ) ) );
    }
     
     
    $db = new PDO('mysql:host=localhost;dbname=projet','root',''); // connexion bdd
    $data = array();
    $date = date("Y-m-d"); // date du jour
    $recup_cours = $db->query("SELECT * FROM edt WHERE date >= '".$date."'"); // requete SQL pour récupérer les données du jour et futur
    while($all = $recup_cours->fetch())
    {
      $data[] = $all;
    }
    foreach($data as $row)
    {
    	list($annee, $mois, $jour) = explode('-', $row['date']); // Permet de découper la date en mois, jour et annee
      	$timestamp = mktime(0, 0, 0, $mois, $jour, $annee);
      	$cours = $row['cours'];
      	$heure = $row['heure'];
      	$day = date('D', $timestamp); // formate la date SQL ex:("2019-05-08") en jour ex:(Mon, Tue, Wed...)
      	$yourdatetime = $heure;
    	$timestamp = strtotime($yourdatetime);
    	$horaire = date('H', $timestamp); // formate l'heure SQL ex:("16:00:00:000000") en int ex:(16, 17, 18...)
    	$day = dateToFrench($day,'l'); // Permet de "convertir les jours ("Mon, Tue, Wed...") en jours ("Lundi, Mardi, Mercredi....")
    }
     
    ?>
    <table>
    <?php
     
        $jour = array(null, "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi");
        $rdv[$day][$horaire] = $cours;
        echo "<tr><th scope='row'>Heure</th>";
        for($x = 1; $x < 6; $x++)
            echo "<th scope='row'>".$jour[$x]."</th>";
        echo "</tr>";
        for($j = 8; $j < 18; $j += 1) 
        {
            echo "<tr>";
            for($i = 0; $i < 5; $i++) 
            {
                if($i == 0) 
                {
                    $heure = str_replace("0.5", ":30", $j);
                    echo "<th class=\"time\">".$heure."</th>";
                }
                echo "<td>";
                if(isset($rdv[$jour[$i+1]][$heure])) 
                {
                    echo $rdv[$jour[$i+1]][$heure];
                }
                echo "</td>";
            }
            echo "</tr>";
        }
    ?>
    </table>
    <?php
     
     
     
    ?>
    Ainsi que ma BDD :

    Nom : Capture2.PNG
Affichages : 1209
Taille : 21,2 Ko

    Nom : Capture3.PNG
Affichages : 1264
Taille : 30,8 Ko

    Merci d'avance ! Si possible je peux poster une photo de ce que ça donne sur le navigateur

  2. #2
    Membre actif
    Inscrit en
    Août 2006
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 191
    Points : 263
    Points
    263
    Par défaut
    Salut,

    Juste pour savoir il y a une raison pour laquelle tu fait un while puis un foreach pour manipuler les même Données ?

    Sinon un truc comme ceci devrais mieux fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    <?php
     
    function dateToFrench($date, $format)
    {
        $english_days = array('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday');
        $french_days = array('Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche');
        $english_months = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
        $french_months = array('janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre');
        return str_replace($english_months, $french_months, str_replace($english_days, $french_days, date($format, strtotime($date) ) ) );
    }
     
     
    $db = new PDO('mysql:host=localhost;dbname=projet','root',''); // connexion bdd
    $data = array();
    $date = date("Y-m-d"); // date du jour
    $recup_cours = $db->query("SELECT * FROM edt WHERE date >= '".$date."'"); // requete SQL pour récupérer les données du jour et futur
     
    ?>
    <table>
    <?php
    $jour = array(null, "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi");
     
    while($all = $recup_cours->fetch())
    {
      $data[] = $all;
     
    	list($annee, $mois, $jour) = explode('-', $all['date']); // Permet de découper la date en mois, jour et annee
      	$timestamp = mktime(0, 0, 0, $mois, $jour, $annee);
      	$cours = $all['cours'];
      	$heure = $all['heure'];
      	$day = date('D', $timestamp); // formate la date SQL ex:("2019-05-08") en jour ex:(Mon, Tue, Wed...)
      	$yourdatetime = $heure;
    	$timestamp = strtotime($yourdatetime);
    	$horaire = date('H', $timestamp); // formate l'heure SQL ex:("16:00:00:000000") en int ex:(16, 17, 18...)
    	$day = dateToFrench($day,'l'); // Permet de "convertir les jours ("Mon, Tue, Wed...") en jours ("Lundi, Mardi, Mercredi....")
     
     
        $rdv[$day][$horaire] = $cours;
        echo "<tr><th scope='row'>Heure</th>";
        for($x = 1; $x < 6; $x++)
            echo "<th scope='row'>".$jour[$x]."</th>";
        echo "</tr>";
        for($j = 8; $j < 18; $j += 1) 
        {
            echo "<tr>";
            for($i = 0; $i < 5; $i++) 
            {
                if($i == 0) 
                {
                    $heure = str_replace("0.5", ":30", $j);
                    echo "<th class=\"time\">".$heure."</th>";
                }
                echo "<td>";
                if(isset($rdv[$jour[$i+1]][$heure])) 
                {
                    echo $rdv[$jour[$i+1]][$heure];
                }
                echo "</td>";
            }
            echo "</tr>";
        }
    }
    if (count($data)<=0){
    	echo '<tr><td>Aucune données trouvées</td></tr>';
    }
    ?>
    </table>
    <?php
     
    ?>

Discussions similaires

  1. [MySQL] Affichage tableau avec données
    Par johan0510 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 05/03/2010, 15h14
  2. Problème affichage tableau avec section
    Par piero15 dans le forum Webi
    Réponses: 8
    Dernier message: 11/01/2010, 14h10
  3. Problème affichage tableau avec Chrome 2
    Par Erazion dans le forum GWT et Vaadin
    Réponses: 3
    Dernier message: 27/05/2009, 09h53
  4. affichage tableau avec partiel
    Par penguin50 dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 27/02/2008, 19h18
  5. affichage tableau avec struts layout
    Par imane_bennouna dans le forum Struts 1
    Réponses: 3
    Dernier message: 07/08/2006, 11h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo