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

Langage PHP Discussion :

affichage dynamique selon parametre d'url "id"


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2009
    Messages : 81
    Points : 59
    Points
    59
    Par défaut affichage dynamique selon parametre d'url "id"
    Bonjour tout le monde.

    Je débute en création de sites dynamiques et je me retrouve face à une difficulté que je n'arrive pas à résoudre.

    J'ai une page "film.php" qui présente un film en fonction de l'id passée en url.
    J'ai en tout 9 films donc : pour cette page, mon url est "http://www.monsite/.../film.php?id=1" ou 2 ou 3 et ainsi de suite jusqu'a 9.

    Chaque film a entre 1 et 4 mot clé qui correspondent aux champs "mot_cle1" "mot_cle2" "mot_cle3" "mot_cle4" de ma table "shop_films"

    J'affiche donc sur ma page film.php ces mots clés en utilisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php $idURL = $_REQUEST['id']; ?>
    <?php $req = mysql_query("SELECT shop_films.id, shop_motcle.id AS motcid, shop_motcle.libelle AS lib FROM shop_films 
    INNER JOIN shop_motcle ON shop_motcle.id = shop_films.mot_cle1 OR shop_motcle.id = shop_films.mot_cle2 OR shop_motcle.id = shop_films.mot_cle3 OR shop_motcle.id = shop_films.mot_cle4 WHERE shop_films.id = '".$_GET['id']."'");
    while ($res = mysql_fetch_array($req)){ 
    echo "<a href=\"rubrique.php?motcle=".$res['lib']."\" > ".$res['lib']."</a>";}		
    ?>
    En sachant que chaque mot clé possède un id unique incrémenté (utile a savoir pour la suite...)
    Cela m'affiche donc le ou les mots clés du film concerné, et chaque résultat est un lien cliquable qui pointe vers la page "rubrique.php"

    C'est la que je n'arrive plus à avancer :

    Je voudrais faire en sorte que sur ma page "rubrique.php" s'affiche une liste des films qui comportent le mot clé sur lequel on a cliqué (reconnaissable grace a son id unique.) sur la page précédente a savoir film.php?id=x


    Sur ma BDD, j'ai :

    une table shop_films avec entre autres les champs "id" "mot_cle1" mot_cle2" "mot_cle3" et "mot_cle4"

    une table shop_motcle qui contient 2 champs : "id" et "libelle"

    Pour le moment, j'ai essayé de mettre ça en haut de ma page rubrique.php :

    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
     
    if (isset($_GET['id'])) 
    {
      $colname_film = $_GET['id'];
    }
    else
    $colname_film = "1";
    $query_film = "SELECT * FROM shop_motcle WHERE id =".$colname_film;
     
    $query_film = "SELECT * FROM shop_films WHERE mot_cle1=".$colname_film;
    $query_film = "SELECT * FROM shop_films WHERE mot_cle2=".$colname_film;
    $query_film = "SELECT * FROM shop_films WHERE mot_cle3=".$colname_film;
    $query_film = "SELECT * FROM shop_films WHERE mot_cle4=".$colname_film;
    $film = mysql_query($query_film) or die(mysql_error());
    $row_film = mysql_fetch_assoc($film);
    $totalRows_film = mysql_num_rows($film);
    Mais avec ca, quand je clique sur un mot clé de ma page film.php?id=x
    cela point vers la page
    http://www.mon_site.com/xxx/rubrique.php?motcle=Douleur

    Cette page est alors vide alors que je li ai demandé de m'afficher les titres de films :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?php echo $row_film['titre']; ?>
    Pourquoi est-elle vide?
    Est ce que ca ne devrait pas plutot pointer sur
    http://www.mon_site.com/xxx/rubrique.php?id=x
    au lieu de
    http://www.mon_site.com/xxx/rubrique.php?motcle=Douleur
    ??

    Je remercie d'avance ceux qui pourront m'apporter des éléments de réponses et qui pourront m'aider a mieux comprendre.

  2. #2
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Bonsoir,

    Ce n'est pas surprenant que tu pointes sur
    puisque ,
    c'est le lien que tu génères dans film.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href=\"rubrique.php?motcle=".$res['lib']."\" >
    Tu peux récupèrer ces paramètres, dans rubrique.php,
    en lisant $_GET['motcle'] (et non pas $_GET['id'])
    qui est égal au contenu de $res['lib'],
    à savoir le libelle du mot-clé (ici Douleur).

    Cependant,
    dans rubrique.php,
    cela n'est pas obligatoirement un problème,
    puisque tu peux très bien lancer une requête sql
    pour récupérer tous les films de shop_films
    qui ont un de leur 4 mots clés égal à $_GET['motcle'].
    Tu n'as d'ailleurs pas bien compris
    comment on utilisait les requêtes sql avec php.
    En effet, quand tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $query_film = "SELECT * FROM shop_motcle WHERE id =".$colname_film;
     
    $query_film = "SELECT * FROM shop_films WHERE mot_cle1=".$colname_film;
    $query_film = "SELECT * FROM shop_films WHERE mot_cle2=".$colname_film;
    $query_film = "SELECT * FROM shop_films WHERE mot_cle3=".$colname_film;
    $query_film = "SELECT * FROM shop_films WHERE mot_cle4=".$colname_film;
    $film = mysql_query($query_film) or die(mysql_error());
    Seule la dernière requête est lancée,
    c'est comme si tu avais écris simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $query_film = "SELECT * FROM shop_films WHERE mot_cle4=".$colname_film;
    $film = mysql_query($query_film) or die(mysql_error());
    Ce qui aurait d'ailleurs été mieux ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $colname_film=$_POST['motcle'];
    $query_film = "SELECT * FROM shop_films WHERE mot_cle1=".$colname_film." OR mot_cle2=".$colname_film." OR mot_cle3=".$colname_film." OR mot_cle4=".$colname_film;
    $film = mysql_query($query_film) or die(mysql_error());
    Pour finir,
    je me demande à quoi sert ta table shop_motcle ?
    Elle aurait été utile si dans shop_films,
    tu avais stocké les identifiants de tes libellés,
    libellés que tu aurais ensuite pu retrouver en allant lire la table shop_motcle.

    Voilou !
    Ce sera tout pour ce soir.

    Fred

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2009
    Messages : 81
    Points : 59
    Points
    59
    Par défaut
    Merci de votre réponse tres formatrice.

    Dans ma base de données, j'ai effectivement une table "mot_cle" avec des id incrémentés.
    Dans les enregistrements de ma table shop_film, je désigne les mots clés de chaque film non pas par son libellé mais par son id.
    Si le mot clé fratrie comporte l'id 1 :
    j'ai pour mon film x : mot_cle = 1 et non pas mot clé = fratrie.

    Comment faire donc pour faire fonctionner ma page correctement en gardant cette structure.?

Discussions similaires

  1. [HTA] Affichage dynamique selon liste de choix
    Par Cachlab dans le forum VBScript
    Réponses: 8
    Dernier message: 05/08/2014, 12h40
  2. Réponses: 1
    Dernier message: 16/01/2008, 10h21
  3. changer de background selon parametre URL
    Par huynhi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 17/10/2006, 15h18

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