Comment faire des liens vers une page

Résolu/Fermé
mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 - Modifié le 27 nov. 2017 à 19:23
mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 - 30 nov. 2017 à 12:45
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

jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
27 nov. 2017 à 20:08
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
Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 209
Modifié le 27 nov. 2017 à 19:13
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
mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 1
28 nov. 2017 à 08:37
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
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
28 nov. 2017 à 09:29
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
mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 1
28 nov. 2017 à 10:54
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
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
28 nov. 2017 à 10:57
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 1
28 nov. 2017 à 15:24
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
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
Modifié le 28 nov. 2017 à 16:42
Dans ce cas, ton lien devient
echo  '<li><a href="page_'.htmlspecialchars($a['jeux']).'.php">'.htmlspecialchars($a['jeux']).'</a></li>';
0
mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 1
Modifié le 28 nov. 2017 à 17:29
Merci je vais essayé de voire si sa fonctions
A plus tard
0
mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 1
28 nov. 2017 à 19:09
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
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
Modifié le 29 nov. 2017 à 23:39
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
mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 1
Modifié le 28 nov. 2017 à 22:31
ok je vais essayé tu ma sauvez jordane45 merci beaucoup
0
mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 1
29 nov. 2017 à 10:43
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
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705 > mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023
29 nov. 2017 à 10:48
- 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
mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 1 > jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024
29 nov. 2017 à 20:46
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
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705 > mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023
29 nov. 2017 à 20:52
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
mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 1
29 nov. 2017 à 22:09
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
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
29 nov. 2017 à 22:18
Juste avant la boucle qui génére tes liens, tu peux faire un
 print_r($resultat);
et nous coller le résultat ?
0
mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 1 > jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024
29 nov. 2017 à 23:15
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
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705 > mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023
29 nov. 2017 à 23:24
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
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705 > jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024
29 nov. 2017 à 23:25
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
mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 1 > jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024
29 nov. 2017 à 23:37
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