Aide pour code php

Résolu
bonjour,
je fait un site avec la liste des films et une fiche par films, dans ma page film A dont j'ai mit un code qui affiche ma liste de films A qui sont dans ma basse de donne, j'aimerai savoir comment faire pour que quand je clique sur un des films sa crée une autre page avec les donné du films (qui sont dans ma même basse de donne) sans que j'ai a faire une page par films
si sais possible

voici ma page "filma.php"

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>VM Archive</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
</head>

<body>

<?php include("entete.php"); ?>

<?php include("menus.php"); ?>

<div id="corps">
<h1>Films A</h1>
<?php
try
{
// On se connecte à MySQL
$bdd = new PDO('mysql:host=localhost;dbname=vm_archive', 'root', '');
}
catch(Exception $e)
{
// En cas d'erreur, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
}

// Si tout va bien, on peut continuer

// On récupère tout le contenu de la table jeux_video
$reponse = $bdd->query('SELECT * FROM films WHERE nom_du_film LIKE "A%" ORDER BY nom_du_film ');

// On affiche chaque entrée une à une
while ($donnees = $reponse->fetch())
{
?>
<p>
<a href="nom_du_film.php"><?php echo $donnees['nom_du_film']; ?></a>
</p>
<?php
}

$reponse->closeCursor(); // Termine le traitement de la requête

?>

</div>

<?php include("pied_de_page.php"); ?>

</body>
</html>

7 réponses

  1. Tu peux passer des données GET (dans l'url).
    Par exemple, tes liens pointent vers ce style d'adresse /fiche.php?film_id=3
    Ensuite, tu pourras utiliser la variable $_GET['film_id'] sur "fiche.php" pour faire ta requête SQL. Ta table doit bien évidemment comporter un champ contenant un id unique pour chaque film.

    <?php 
    require 'sqlconnect.php'; 
    
    $id = (int) $_GET['film_id']; 
    if($id === 0) 
        echo 'Erreur : url invalide.'; 
    else { 
        $sql = 'SELECT COUNT(*) AS nb FROM films WHERE id='.$id; 
        $req = $pdo->query($sql); 
        $row = $req->fetch(); 
        $nb = $row['nb']; 
    
        if($nb > 0) { 
            $sql = 'SELECT * FROM films WHERE id = '.$id; 
            $req = $pdo->query($sql); 
            $film = $req->fetch(PDO::FETCH_OBJ); 
    
            echo '<h3>'.$film->titre.' par '.$film->auteur.'</h3>'; 
            echo $film->resume; 
        } else 
            echo 'Cette fiche n\'existe pas ou plus.<br/>' . 
              '<a href="liste.php">Retour à la liste</a>'; 
    } 
    
    ?>

    Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.
    1. Tu as été plus rapide, oups bien joué.
      Enlèves le "e" à filme. ;)
  2. Dans ta boucle tu fais un lien ( il va donc se répéter pour chaque film ) comme ceci : <a href="page-d-info.php?id=<?php echo donnees['id']; ?>">Information</a>

    Puis dans la page : page-d-info.php ; tu récupères l'id avec $_GET[''], que tu insères dans ta requête php qui va chercher les informations.

    Compris ? :)
    1. Non ! Si tu regardes l'url générée, c'est toujours la même.
      As-tu au moins un champ qui contient un identifiant unique pour chaque entrée ?
      1. Par exemple un champ id, généralement qui est en début de Table et en Auto Incrémentation.
    2. je croi que j'ai compris mais quand je mais le code pour allez a la page

      <a href="fiche_film.php?id=<?php echo donnees['id']; ?>"><?php echo $donnees['nom_du_film']; ?></a>

      sa marche pas sa n'affiche pas la page avec ma liste de film

      sa mais "Parse error: parse error, expecting '','' or '';'' in C:\wamp\www\Mon site\filmsa.php on line 35"

      et le code de avion f-16 je le doit le mettre ou j'ai pas comprit.
      1. sais bon j'ai trouver

        <a href="fiche_film.php?id=<?php echo $_GET['id']; ?>"><?php echo $donnees['nom_du_film']; ?></a>

        a la place de donnees j'ai mit get est sa marche

        mais maintenent comment sur ma page de la fiche du film d'avoir le bon film que j'ai cliquer sur le lien
        1. sais bon j'ai réussi a trouver avec votre aidez et le cours que j'ai relu
          merci bien de votre aidez
          1. LE $_GET[''], tu dois l'utiliser sur la page où tu fais une requête pour un seul film. En fait j'avais oublier le $ dans mon code ; essaies avec ceci :
            <a href="fiche_film.php?id=<?php echo $donnees['id']; ?>"><?php echo $donnees['nom_du_film']; ?></a>


            Puis dans la page-d-info.php ( peut importe le nom d'ailleurs ) tu récupères l'id avec $_GET[''] que tu insères dans ta requête sql qui va chercher les informations du film concerné. En la sécurisant : tester si le numéro existe, s'il est bien demandé, si c'est bien un numéro, etc.
            1. Tu n'as plus fais de PHP depuis combien de temps pour faire ce genre d'erreur ? :)
              Le "$" est à mettre avant le nom de la variable, soit avant "donnees".

              <a href="fiche_film.php?id=<?php echo $donnees['id']; ?>"><?php echo $donnees['nom_du_film']; ?></a>
            2. la je suis pas d'accord quans je mais $echo donnees sa marche pas alors que quand je mais echo $donnees sa marche
            3. Résolu d'abord ?
            4. Oh mince, j'ai mal fais mon copier/coller du <'gras'>$</'gras'> !
              Quelle horreur d'avoir écrire ceci, je modifie de suite. Te moques pas F16, je suis qu'un déb. ;)
              Donc j'avais bien raison, nous avions oublier de mettre $ devant donnees['id'];
            5. Non, TU avais oublié de mettre le "$" devant "donnees['id']" ;)