Comment faire des liens vers une page

Résolu
mobrobot Messages postés 182 Statut Membre -  
mobrobot Messages postés 182 Statut Membre -
Bonsoir s'il vous plait je n'arrive pas à donner chacune des nom qui se trouve dans ma table jeux un lien qui va permettre de faire a chaque clic d'un nom jeux qu'il se redirige vers sa page de téléchargement

résultats de recherche

need for speed clic redirection vers sa page de téléchargement

grand thef auto clic redirection vers sa page de téléchargement
voici mon code
<!Doctype html>
<html>
 <head>
  <title>Recherche de donnees</title>
  <meta charset="utf-8">
 </head>

<body>
 <form method="GET" >
 <input type="search"  name="g" placeholder="Recherche" />
 <input type="submit" value=">>" />
</form>

<?php
  //Connexion à la base donnees
   try{
    $bdd = new PDO('mysql:host=localhost;dbname=recherche_data', 'root', '');
   } catch(PDOExeption $e){
   die('Erreur : ' .$e->getMessage());
   }

   $req = $bdd->query("SELECT * FROM mobmeedata  ");

   if(isset($_GET['g']) ) {

    $q = htmlspecialchars($_GET['g']);
    
    $req = $bdd->query('SELECT  id, jeux FROM mobmeedata WHERE jeux  LIKE "%'.$g.'%"');

    if($req->rowCount() == 0) {
     $req = $bdd->query('SELECT * FROM mobmeedata WHERE id = $id " ');
    }

    if(!empty($_GET['g'])){

    }else{
     echo "Le champ doit être remplir";
    }

   }
  
?>


 <?php if($req->rowCount() > 0) { ?>
    <ul>
     <?php while($a = $req->fetch()) { ?>

        <li><a href="page1.php?$id="><?= $a['jeux'] ?></a></li>
       
        

           

       <?php } ?>
    </ul>

  <?php }  else{ ?>
   <b style="color:darkred">Auccun resultat pour <?= $g ?>
  <?php }?>


<style>

 body{
  background: steelblue;
  text-align: center;
 }
</style>      


 </body>
</html>

9 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour,

    Il y a beaucoup de choses à dire sur ton code....
    Je t'invite fortement à lire (en totalité) ceci:
    https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
    puis ceci
    https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

    et surtout....d'appliquer ce qui y est marqué.

    Par exemple :
    1 - Mettre la connexion à la bdd dans un fichier à part que tu n'auras qu'à inclure dans tes page
    <?php
    /**
    * fichier : cnxBdd.php
    */
    
    //Connexion à la base donnees
      try{
        $bdd = new PDO('mysql:host=localhost;dbname=recherche_data', 'root', '');// Activation des erreurs PDO
        $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
         $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
      } catch(PDOException $e) {
            die('Erreur : ' . $e->getMessage());
      }
      
      //fonction pour effectuer des requêtes SELECT
      function querySelect($sql,$datas){
        global $bdd;
        try{
            $req = $bdd -> prepare($sql) ;
            $req->execute() ;
            $resultat = $req->fetchAll();
        }catch(Exception $e){
            // en cas d'erreur :
            echo " Erreur ! ".$e->getMessage();
            echo " Les datas : " ;
            print_r($datas);
        }
        return !empty($resultat) ? $resultat : NULL;
      }
    
    


    2 - Placer un maximum de code php AVANT le html
    - Placer ses styles dans un fichier css
    - Récupérer PROPREMENT les variables AVANT de les utiliser
    - Ne pas utiliser rowCount pour connaitre le nombre de résultats d'un SELECT. (pour ça faire un count)
    - htmlspecialchar ne s'utilise QUE pour l'affichage... à aucun moment pour faire une requête
    - Tu utilises PDO.. donc autant utiliser les requêtes préparées
    - Ton lien n'est pas bon : $id= .. que fait ce dollar ici ?

    Bref, voici à quoi devrait ressembler ton code

    fichier : style.css
     body{
      background: steelblue;
      text-align: center;
     }
     
     .form{
        display:inline-block;
        margin:5px;
     }
     
     .form input{
       float:left;
     }
    


    Le code de ta page :
    <?php
      //-------------------------------------//
      //Affichage des erreurs PHP
      //-------------------------------------//
      error_reporting(E_ALL);
      ini_set('display_errors', TRUE);
      ini_set('display_startup_errors', TRUE);
    
      //-------------------------------------//
      //connexion à la bdd
      //-------------------------------------//
      require_once "cnxBdd.php";
      
      
      //fonctions
      function getJeuxById($id){
        $sql = 'SELECT * FROM mobmeedata WHERE id = :id " ';
        $datas = array(':id'=>$id);
        return querySelect($sql,$datas);
      }
      
      function getJeuxByName($g){
        $sql = 'SELECT  id, jeux FROM mobmeedata WHERE jeux  LIKE "%'.$g.'%"';
        return querySelect($sql,$datas);
      }
      
      //-------------------------------------//
      //récupération PROPRE des variables AVANT de les utiliser
      //-------------------------------------//
      $g = !empty($_GET['g']) ? $_GET['g'] : NULL;
      $id = !empty($_GET['id']) ? $_GET['id'] : NULL;
    
      //-------------------------------------//
      //traitement du formulaire
      //-------------------------------------//
      if(isset($_GET['search']){
        if($g) {
          //recherche par le nom du jeux
          $resultat = getJeuxByName($g);
          if(!$resultat && $id) {
            //recherche par son id
            $resultat = getJeuxById($id);
          }
        }else{
          $msg =  "Le champ doit être remplir";
        }
        
        //on compte le nombre de résultats
        $nbResult = !empty($resultat) ? count($resultat) : 0;
      }
     
    ?>
    <!Doctype html>
    <html>
      <head>
        <title>Recherche de donnees</title>
        <meta charset="utf-8">
        <!-- on inclus le css -->
        <link rel="stylesheet" href="style.css" />
      </head>
      <body>
      <div id='form' class='form'>
        <form method="GET" action="">
        <input type="hidden" name="search" value="s">
        <input type="search"  name="g" placeholder="Recherche" />
        <input type="submit" value=">>" />
        </form>
      </div>
      <div class="affichage">
     <?php
        if($nbResult > 0) { 
          echo "<ul>";
          foreach($resultat as $a){
            echo  '<li><a href="page1.php?id="'.$a['id'].'">'.htmlspecialchars($a['jeux']).'</a></li>';
          }
          echo "</ul>";
        }else{
          $msg = "Auccun resultat pour " . $g;
        
        }
        
        if(!empty($msg)){
          echo '<b style="color:darkred">'.$msg.'</b>';
        }
      ?>
      </div>
     </body>
    </html>
    

    1
  2. Fallentree Messages postés 2445 Statut Membre 210
     
    c'est quoi ça ???
    <li><a href="page1.php?$id="><?= $a['jeux'] ?></a></li>
    il en manque un bout non ?
    c'est mieux avec un "echo"
    <li><a href="page1.php?$id="><?php echo $a['id']; ?></a></li>
    0
  3. mobrobot Messages postés 182 Statut Membre 1
     
    Merci beaucoup jordane45 ton code ma bien aidez et à s'avoir aussi de plus sur les PDO.

    seulement quand j'effectue une recherche les résultats s'affiche avec erreur suivante
    :( ! ) Notice: Undefined variable: datas in C:\wamp\www\mobmee\exercices.php on line 22

    voici la line 22
    function getJeuxByName($g){
            $sql = 'SELECT id, jeux FROM mobmeedata WHERE jeux LIKE "%'.$g.'%" ';
            return querySelect($sql,$datas);
        }

    je fais comme tu ma dit j'ai inclus la connexion de bdd sur ma page exercices.php.
    pour les liens:
    je vois pas comment récupéré mais lien j'ai essayé avec get id sa fonction pas si je clique sur un nom jeux il se rediriger vers la page1.php sa fait la même chose avec les autres nom
    <?php echo  "<p>".$_GET['id']. "</p>" ; ?>
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Pour l'erreur, il suffit de retirer la variable $datas de la ligne incriminée
      return querySelect($sql);
      


      Pour ton lien.. j'ai gardé celui que tu nous avais donné.
      Si tu veux rester sur la même page.. il suffit de remplacer ton lien par ceci:
      echo  '<li><a href="'.$_SERVER['PHP_SELF'].'?id="'.$a['id'].'">'.htmlspecialchars($a['jeux']).'</a></li>';
      
      0
  4. mobrobot Messages postés 182 Statut Membre 1
     
    merci il fonction correctement

    pour le lien je pense tu ma pas compris , ce que je voudrais faire si j'effectue un recherche sur la formulaire les résultats s'affiche sur ma page exercices.php, maintenant je voudrais donné chacune des résultats
    un lien qui le rediriger vers sa page d'information ou téléchargement

    par exemple:
    on effectue une recherche sur la formulaire de recherche: pes2017

    le résultats s'affiche maintenant si je veux télécharger je clic seulement sur pes2017 pour le télécharger

    pes2017 --> tu clic sur pes2017 tu te redirige vers sa page d'information ou téléchargement

    pes2016 --> tu clic sur pes2016 tu te redirige vers sa page d'information ou téléchargement

    call of daty --> tu clic sur call of daty tu te redirige vers sa page d'information ou téléchargement
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Comment se nomment les pages sur lesquelles tu veux rediriger ? (chaque jeux dispose d'une page à son nom ? [écrit EXACTEMENT comme le nom du jeux??] )
      Pourrais tu me donner un exemple d'url souhaitée pour pes2017 ?
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mobrobot Messages postés 182 Statut Membre 1
     
    J'ai crée quelque pages pour la redirection
    quant on clic sur un nom de jeux

    Mais page sont les suivante

    page_pes2017.php

    page_pes2016.php

    page_callofdaty.php

    page_needforspeed.php

    page_moderncombat5.php
    etc...
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Dans ce cas, ton lien devient
      echo  '<li><a href="page_'.htmlspecialchars($a['jeux']).'.php">'.htmlspecialchars($a['jeux']).'</a></li>';
      
      0
  7. mobrobot Messages postés 182 Statut Membre 1
     
    Merci je vais essayé de voire si sa fonctions
    A plus tard
    0
  8. mobrobot Messages postés 182 Statut Membre 1
     
    sa fonction 5 sur 5 je sait pas commente te remercie merci beaucoup jordane45 et 1000merci pour toi, sa fait 2 semaine comme ça je suis bloquer sur la de-suis je te remercie encore.
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      enfin... ça t'ovblige à créer autant de page que tu auras de jeux....
      Le mieux ça serait de n'avoir qu'une seule page "jeux.php"
      à laquelle tu passerais l' ID du jeux et dans laquelle tu irais faire une requête pour récupérer les différentes infos à afficher.
      Ton lien deviendrai :
      echo  '<li><a href="jeux.php?id="'.$a['id'].'">'.htmlspecialchars($a['jeux']).'</a></li>';
      

      et dans le fichier jeux.php tu aurais
      <?php
        //-------------------------------------//
        //Affichage des erreurs PHP
        //-------------------------------------//
        error_reporting(E_ALL);
        ini_set('display_errors', TRUE);
        ini_set('display_startup_errors', TRUE);
      
        //-------------------------------------//
        //connexion à la bdd
        //-------------------------------------//
        require_once "cnxBdd.php";
        
        
        //fonctions
        function getJeuxById($id){
          $sql = 'SELECT * FROM mobmeedata WHERE id = :id ';
          $datas = array(':id'=>$id);
          return querySelect($sql,$datas);
        }
      
      
      //récupération des variables
      $id = !empty($_GET['id']) ? $_GET['id'] : NULL;
      
      //on récupère les infos du jeux
      $infos  =  getJeuxById($id);
      
      //puis tu afficherais les différentes infos.
      // par exemple 
      print_r($infos);
      
      
      0
  9. mobrobot Messages postés 182 Statut Membre 1
     
    ok je vais essayé tu ma sauvez jordane45 merci beaucoup
    0
    1. mobrobot Messages postés 182 Statut Membre 1
       
      bonjour je essayé ce que tu ma proposé hier au fait quand j'effectue une recherche on m'affiche l'erreur suivante:
      ( ! ) Fatal error: in C:\wamp\www\datamobmee\dbconnect.php on line 20
      ( ! ) PDOException: in C:\wamp\www\datamobmee\dbconnect.php on line 20
      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > mobrobot Messages postés 182 Statut Membre
         
        - Sur quelle page ?
        - En faisant quoi exactement ?
        - avec quel code ?

        Je ne suis pas encore devin .. un peu plus de détails dans tes questions serait le bienvenu :-)
        0
      2. mobrobot Messages postés 182 Statut Membre 1 > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        bonsoir désole pour le retard j'avais une problème de connexion
        au faite je me suis trompé je t’envoyer sa l'erreur ne venais pas de la bas.

        Bon le problème est que quand je fait un recherche les résultats s'affiche très bien mais quand je clic sur un nom jeux je me redirige vers la page jeux.php et la page s'affiche directement en me disant :

        ( ! ) Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: no parameters were bound' in C:\wamp\www\datamobmee\dbconnect.php on line 20
        ( ! ) PDOException: SQLSTATE[HY093]: Invalid parameter number: no parameters were bound in C:\wamp\www\datamobmee\dbconnect.php on line 20
        0
      3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > mobrobot Messages postés 182 Statut Membre
         
        Avec QUEL CODE ?
        Quelle est l'url exacte sur laquelle tu arrives une fois que tu as cliqué sur un jeux ?

        Et petite correction au niveau du code du lien (y' a des quotes en trop)
        echo  '<li><a href="jeux.php?id='.$a['id'].'">'.htmlspecialchars($a['jeux']).'</a></li>';
        
        0
  10. mobrobot Messages postés 182 Statut Membre 1
     
    j'ai rectifier le lien on m'affiche toujours le même erreur
    voici l'url qui sais afficher quand j'ai effectue une recherche sur gta

    http://localhost/datamobmee/recherche_donnees.php?search=s&g=grand+thef+auto.

    voici l'url sur la quel j'arrive quand je clic sur le jeux gta
    http://localhost/datamobmee/game.php?id=
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Juste avant la boucle qui génére tes liens, tu peux faire un
       print_r($resultat);
      et nous coller le résultat ?
      0
    2. mobrobot Messages postés 182 Statut Membre 1 > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
       
      j'ai coller le
       print_r($resultat);
      dans ma boucle sa m'affiche toujours le même erreur.

      voici le code exercices.php
      <?php
      
          // Affichage des erreure PHP
      
          error_reporting(E_ALL);
          ini_set('display_errors', TRUE);
          ini_set('display_startup_errors', TRUE);
      
          // connexion a la base de donnees
      
          require_once "dbconnect.php";
      
          // function
          function getJeuxById($id){
              $sql = 'SELECT * FROM mobmeedata WHERE id = :id" ';
              $datas = array(':id'=>$id);
              return querySelect($sql);
          }
      
          function getJeuxByName($g){
              $sql = 'SELECT id, jeux FROM mobmeedata WHERE jeux LIKE "%'.$g.'%" ';
              return querySelect($sql);
          }
          // Recuperation des variable propre avant des utiliser
      
          $g = !empty($_GET['g']) ? $_GET['g'] : NULL;
          $id = !empty($_GET['id']) ? $_GET['id'] : NULL;
      
          // traitement du formulaire
      
          if (isset($_GET['search'])){
              if($g){
                  // recherche par le nom du jeux
                  $resultat = getJeuxByName($g);
                  if(!$resultat && $id){
                      // recherche par son id
                      $resultat = getJeuxById($id);
                  }
              }else{
                  echo $msg = "Le champ doit être saisie";
              }
      
              //on compte le nombre resultats
      
              $nbResultat = !empty($resultat) ? count($resultat): 0;
          }
      
             
             
      ?>
      
      <!doctype html>
      <html>
          <head>
              <title>Exercices de recherche</title>
              <meta charset="utf-8">
              
          </head>
          <body>
      		
              <div id='form_g' class='form_g' >
                               <form method="GET" action="">
                                  <input type="hidden" name="search" value="s">
                                  <input type="search"  name="g" placeholder="Recherche" />
                                  <input type="submit" value=">>" />
                               </form>
                          </div>
                          
          <?php 
              if($nbResultat > 0){
      print_r($resultat);
                  echo "<ul>";
      
                      foreach($resultat as $a){
                          echo  '<li><a href="game.php?id="'.$a['id'].'">'.htmlspecialchars($a['jeux']).'</a></li>';
                         
                      }
                      echo "</ul>";
              }else{
                  $msg = "Accun resultat pour ". $g;
              }
      
              if(!empty($msg)){
                  echo '<b style="color:darkred">'.$msg.'</b>';
              }
          ?>
      
      
          </body>
      
      </html>


      voici la page de connexion :

      <?php
      	 try{
                  $bdd = new PDO('mysql:host=localhost;dbname=recherche_data', 'root', '');
                  //Activation des erreurs PDO
                  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                  // mode de fetch par défaut: FETCH_ASSOC/FETCH_OBJ / FETCH_BOTH
                  $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
              }catch(PDOExeption $e){
                  die('Errer: '. $e->getMessage());
              }
      
      
      
              function querySelect($sql){
      
              global $bdd;
      
              try{
                  $req = $bdd->prepare($sql);
                  $req->execute();
                  $resultat = $req->fetchAll();
              }catch(Exeption $e){
                  // en cas d'erreur:
                  echo "Erreur ! ".$e->getMessage();
                  echo " Les datas : ";
                  print_r($datas);
              }
              return !empty($resultat) ? $resultat : NULL;
      	}
      ?>


      et la page de game.php

      <?php
        
        //Affichage des erreurs PHP
        error_reporting(E_ALL);
        ini_set('display_errors', TRUE);
        ini_set('display_startup_errors', TRUE);
      
        
        //connexion à la bdd
        require_once "dbconnect.php";
        
        
        // function
          function getJeuxById($id){
              $sql = 'SELECT * FROM mobmeedata WHERE id = :id" ';
              $datas = array(':id'=>$id);
              return querySelect($sql,$datas);
          }
      
      
      
      //récupération des variables
      $id = !empty($_GET['id']) ? $_GET['id'] : NULL;
      
      //on récupère les infos du jeux
      $infos  =  getJeuxById($id);
      
      //puis tu afficherais les différentes infos.
      // par exemple 
      print_r($infos);
      ?>
      0
    3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > mobrobot Messages postés 182 Statut Membre
       
      Il t'affiche l'erreur... quand tu cliques sur un lien ....
      Mais quand tu affiches ta première page ???
      Il me faut le CONTENU du print_r lorsque tu affiches ta (première) page !
      0
    4. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Au passage ... tu n'as pas modifié le code du lien !
      il y a toujours :
      echo  '<li><a href="game.php?id="'.$a['id'].'">'.htmlspecialchars($a['jeux']).'</a></li>';
      

      Alors que je t'ai demandé de mettre
      echo  '<li><a href="game.php?id='.$a['id'].'">'.htmlspecialchars($a['jeux']).'</a></li>';
      
      0
    5. mobrobot Messages postés 182 Statut Membre 1 > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
       
      on m'affiche sa à ma première page
      Array ( [0] => Array ( [id] => 3 [jeux] => Grand Auto Vice City ) [1] => Array ( [id] => 4 [jeux] => Street figth ) [2] => Array ( [id] => 6 [jeux] => Grand Thef Auto 5 ) [3] => Array ( [id] => 7 [jeux] => City Racing 2017 ) [4] => Array ( [id] => 9 [jeux] => Game of thrones ) )

      désole pour le lien j'avais crue de l’avoir mettre dans ma page exercices.php mais ce le contraire que j'ai fait je lui est mis dans une page qui avais les même code que l'autre
      0