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 d'une seule valeur requête PHP


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 44
    Points : 24
    Points
    24
    Par défaut Affichage d'une seule valeur requête PHP
    Bonjour,

    Je suis en train de développer une mini-application qui a, entre autre, pour objectif d'afficher les films et l'horaire de la prochaine séance (pour chaque film).

    Je voudrai dans un tableau afficher les éléments suivants :

    Titre du Film
    Heure de la prochaine séance

    Jusqu'à présent, voila comme j'ai codé en PHP pour obtenir mon tableau avec la liste des films :
    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
     
    <?php include("Connections/cinesoft_bdd.php");
            echo '<table border="1">';
     
     
    $titre= mysql_query("SELECT film.* FROM film ORDER BY etat");
    $nb_titre = mysql_num_rows($titre);
    if($nb_titre)
     {
        echo '<tr>';
       while($row = mysql_fetch_array($titre))
            {        
                     echo '<td>'.$row["Titre"].'</td>';
     
         }
            echo '</tr>';  
    }
     
    En dessous, je voudrai afficher les horaires (en comparant avec l'heure actuelle) de la prochaine séance pour chaque film affiché, en suivant cet algorithme :
    Afficher une seule valeur de "Film_Seance.Horaire" QUI REPOND A : Film_Seance.Horaire > $horaire_actuel (obtenue par le code suivant
    Tout sélectionner
    $localtime = localtime();
    $minute =  $localtime[1]; $heure =  $localtime[2]; $horaire_actuel=($heure.':' .$minute);
    
    
    Or avec le code que j'ai mis :
     
    $heure_seance= mysql_query("SELECT seance.Horaire, film_seance.IDFilm FROM film, film_seance, seance WHERE film.IDFilm=film_seance.IDFilm AND seance.IDSeance = film_seance.IDSeance AND seance.Horaire > '$horaire_actuel' GROUP BY film_seance.IDFilm ORDER BY Film.Etat");
     
    et avec un affichage comme suit :
     
    $nb_seance = mysql_num_rows($heure_seance);
    if(isset($nb_seance))
     {
     
        echo '<tr>';
       while($row = mysql_fetch_array($heure_seance))
       {    
                    // if (($heure.':' .$minute)<$row["Horaire"])
                     //     {
                             echo '<td>Prochaine séance : '.$row["Horaire"].' </td>';
                    //       }else{
                    //       echo '<td>Aucune séance</td>';
                            // }
     
     
     
     
     
        }
            echo '</tr>';  
    }
    Le résultat retourné est :

    La véritable histoire du Chat Botté | Twilight : Tentation | Alf Mabrouk
    Prochaine séance : 19:45



    Le résultat semble "bon", car il m'affiche uniquement la séance qui répond à la condition "> heure actuelle", par contre, il n'affiche pas les séances (qui répondent à la condition) pour les films suivants (Twilight et Alf Mabrouk).

    Toutefois, j'ai l'impression qu'il n'y aucun lien entre le Film affiché et l'horaire.

    En somme, si l'horaire du 1er film affiché est "vide" alors il m'affiche l'horaire du 2nd film dans la case qui est réservé au 1er film !

    Est-ce un problème lié à mon code PHP ?

    J'espère avec été clair dans la description de mon problème.

    Merci encore pour votre aide.

  2. #2
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    si tu enlèves "GROUP BY film_seance.IDFilm" tu as bien tous les horaires qui suivent ?
    même question si tu enlèves en plus "AND seance.Horaire > '$horaire_actuel'"

    essaye les requêtes avec phpMyAdmin pour bien voir les résultats

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    Re-
    Avec la requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT seance.Horaire, film_seance.IDFilm, film.Titre, film.etat 
    FROM film, film_seance, seance 
    WHERE film.IDFilm=film_seance.IDFilm AND seance.IDSeance = film_seance.IDSeance 
    ORDER BY film.etat

    Elle me renvoit bien les séances pour tous les films. La requête fonctionne parfaitement, le seul souci c'est lors de l'affichage.

    Comme dit précédemment, je souhaiterai que l'horaire s'affiche en dessous du film concerné. Jusqu'à présent, c'est le ORDER BY Etat qui permet de "lier" le titre du film avec l'horaire qui correspond. MAIS si par exemple, un film ne dispose pas d'horaire, ma seconde requête affiche l'horaire du prochain film, dans la case du film (dont l'horaire est vide).

    J'ai du mal à m'expliquer, j'espére que vous arrivez à comprendre

    Merci

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    Aucune info donc pour moi

  5. #5
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par maitaddi Voir le message
    MAIS si par exemple, un film ne dispose pas d'horaire, ma seconde requête affiche l'horaire du prochain film, dans la case du film (dont l'horaire est vide)
    dans ce cas fais une seule requête et fais l'affichage comme ça :
    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
    $liste = array(
        array(
            'titre' => 'Titre 1',
            'horaire' => '10 h 29',
        ),
        array(
            'titre' => 'Titre 2',
            'horaire' => '13 h 08',
        ),
    );
     
    // affichage des titres
     
    foreach ($liste as $seance) {
        echo "{$seance['titre']} | ";
    }
     
    echo '<br/>';
     
    // affichage des horaires
     
    foreach ($liste as $seance) {
        echo "{$seance['horaire']} | ";
    }

Discussions similaires

  1. Réponses: 7
    Dernier message: 14/03/2013, 00h19
  2. Requête sur champ n'ayant qu'une seule valeur
    Par cedrick21 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/06/2011, 09h33
  3. [PHP 5.3] [POO]Affichage d'une seule valeur ?
    Par yann18 dans le forum Langage
    Réponses: 4
    Dernier message: 02/09/2010, 14h02
  4. Problème de sous requête (retour d'une seule valeur)
    Par ero-sennin dans le forum Requêtes
    Réponses: 1
    Dernier message: 14/06/2006, 11h12
  5. Pourquoi une seule valeur de retour pour les fonctions ?
    Par Bruno75 dans le forum Langages de programmation
    Réponses: 33
    Dernier message: 18/01/2004, 13h58

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