Comment faire des liens vers une page [Résolu]

mobrobot 56 Messages postés vendredi 13 janvier 2017Date d'inscription 6 décembre 2017 Dernière intervention - 27 nov. 2017 à 19:03 - Dernière réponse : mobrobot 56 Messages postés vendredi 13 janvier 2017Date d'inscription 6 décembre 2017 Dernière intervention
- 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>
Afficher la suite 
56Messages postés vendredi 13 janvier 2017Date d'inscription 6 décembre 2017 Dernière intervention

32 réponses

Répondre au sujet
jordane45 19177 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 8 décembre 2017 Dernière intervention - 27 nov. 2017 à 20:08
+1
Utile
Bonjour,

Il y a beaucoup de choses à dire sur ton code....
Je t'invite fortement à lire (en totalité) ceci:
http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code
puis ceci
http://www.commentcamarche.net/faq/46512-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>

Commenter la réponse de jordane45
Fallentree 1969 Messages postés mercredi 25 février 2009Date d'inscription 6 décembre 2017 Dernière intervention - Modifié par Fallentree le 27/11/2017 à 19:13
0
Utile
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>
Commenter la réponse de Fallentree
mobrobot 56 Messages postés vendredi 13 janvier 2017Date d'inscription 6 décembre 2017 Dernière intervention - 28 nov. 2017 à 08:37
0
Utile
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>" ; ?>
jordane45 19177 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 8 décembre 2017 Dernière intervention - 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>';
Commenter la réponse de mobrobot
mobrobot 56 Messages postés vendredi 13 janvier 2017Date d'inscription 6 décembre 2017 Dernière intervention - 28 nov. 2017 à 10:54
0
Utile
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
jordane45 19177 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 8 décembre 2017 Dernière intervention - 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 ?
Commenter la réponse de mobrobot
mobrobot 56 Messages postés vendredi 13 janvier 2017Date d'inscription 6 décembre 2017 Dernière intervention - 28 nov. 2017 à 15:24
0
Utile
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...
jordane45 19177 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 8 décembre 2017 Dernière intervention - 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>';
Commenter la réponse de mobrobot
mobrobot 56 Messages postés vendredi 13 janvier 2017Date d'inscription 6 décembre 2017 Dernière intervention - Modifié par mobrobot le 28/11/2017 à 17:29
0
Utile
Merci je vais essayé de voire si sa fonctions
A plus tard
Commenter la réponse de mobrobot
mobrobot 56 Messages postés vendredi 13 janvier 2017Date d'inscription 6 décembre 2017 Dernière intervention - 28 nov. 2017 à 19:09
0
Utile
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.
jordane45 19177 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 8 décembre 2017 Dernière intervention - 28 nov. 2017 à 19:29
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);

Commenter la réponse de mobrobot
mobrobot 56 Messages postés vendredi 13 janvier 2017Date d'inscription 6 décembre 2017 Dernière intervention - Modifié par mobrobot le 28/11/2017 à 22:31
0
Utile
4
ok je vais essayé tu ma sauvez jordane45 merci beaucoup
mobrobot 56 Messages postés vendredi 13 janvier 2017Date d'inscription 6 décembre 2017 Dernière intervention - 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
jordane45 19177 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 8 décembre 2017 Dernière intervention > mobrobot 56 Messages postés vendredi 13 janvier 2017Date d'inscription 6 décembre 2017 Dernière intervention - 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 :-)
mobrobot 56 Messages postés vendredi 13 janvier 2017Date d'inscription 6 décembre 2017 Dernière intervention > jordane45 19177 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 8 décembre 2017 Dernière intervention - 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
jordane45 19177 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 8 décembre 2017 Dernière intervention > mobrobot 56 Messages postés vendredi 13 janvier 2017Date d'inscription 6 décembre 2017 Dernière intervention - 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>';
Commenter la réponse de mobrobot
mobrobot 56 Messages postés vendredi 13 janvier 2017Date d'inscription 6 décembre 2017 Dernière intervention - 29 nov. 2017 à 22:09
0
Utile
15
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=
mobrobot 56 Messages postés vendredi 13 janvier 2017Date d'inscription 6 décembre 2017 Dernière intervention > jordane45 19177 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 8 décembre 2017 Dernière intervention - 30 nov. 2017 à 11:54
ce fait
je le actualiser a nouveau sans la variable
$datas
on m'affiche sa:
Erreur ! SQLSTATE[HY093]: Invalid parameter number: no parameters were bound Les datas :


mais quand j'ajoute la varible
$datas
dans la ligne 19
return querySelect($sql,$datas);


j'obtient tous la colonne qui dans l'ID 6
Array ( [0] => Array ( [id] => 6 [jeux] => Grand Thef Auto 5 [apps] => Tube Mate [phone] => Comment éviter un virus dans un Android [id_game] => 0 ) )
jordane45 19177 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 8 décembre 2017 Dernière intervention > mobrobot 56 Messages postés vendredi 13 janvier 2017Date d'inscription 6 décembre 2017 Dernière intervention - 30 nov. 2017 à 11:59
Dans la fonction getJeuxById ... il faut bien prendre la version corrigée que je t'avais donné (celle avec le $datas )
// function
    function getJeuxById($id){
        $sql = 'SELECT * FROM mobmeedata WHERE id = :id" ';
        $datas = array(':id'=>$id);
        return querySelect($sql,$datas);
    }


Et donc oui. maintenant c'est bon.
Tu peux en faire ce que tu veux. vu que le print s'affiche
mobrobot 56 Messages postés vendredi 13 janvier 2017Date d'inscription 6 décembre 2017 Dernière intervention > jordane45 19177 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 8 décembre 2017 Dernière intervention - 30 nov. 2017 à 12:30
Merci jordane45 j’insiste mon professeur en programmation.

au faite je voudrais te demande si tu connait un site dont je pourrait apprend la programmation javascript,php,mysql a part
openclassrooms.com
,
w3school.com
et
developpez.net


pour bien commencé mon projet système de commentaire.

Merci au fond du cœur que dieu d'accord le paradis éternelle.
jordane45 19177 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 8 décembre 2017 Dernière intervention > mobrobot 56 Messages postés vendredi 13 janvier 2017Date d'inscription 6 décembre 2017 Dernière intervention - 30 nov. 2017 à 12:37
Désolé.
Je ne connais pas d'autres sites.
J'ai appris par moi même en fouillant sur le net et en regardant comment d'autres trucs étaient codés....
Et si j'avais des problèmes..(rarement...) .je trouvai les réponses sur les différents forum (français / anglais) disponibles sur le net

Bonne continuation.
mobrobot 56 Messages postés vendredi 13 janvier 2017Date d'inscription 6 décembre 2017 Dernière intervention > jordane45 19177 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 8 décembre 2017 Dernière intervention - 30 nov. 2017 à 12:45
Merci!!!!!!!!!!!!!
Commenter la réponse de mobrobot