Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Décrivez ici votre code ou ce que vous cherchez à faire

<?php
$connect = new PDO("mysql:host=localhost;dbname=bikeride", "root", "");
?>

<?php

require ('connexion_bdd.php');

if($_POST["query"] != '')
{
 $search_array = explode(",", $_POST["query"]);
 $search_text = "'" . implode("', '", $search_array) . "'";
 $query = "
 SELECT * FROM base_rando 
 WHERE Country IN (".$search_text.") 
 ORDER BY CustomerID DESC
 ";
}
else
{
 $query = "SELECT * FROM base_rando ORDER BY CustomerID DESC";
}

$statement = $connect->prepare($query);

$statement->execute();

$result = $statement->fetchAll();

$total_row = $statement->rowCount();

$output = '';

if($total_row > 0)
{
 foreach($result as $row)
 {
  $output .= '
  <tr>
   <td><strong>'.$row["date"].'</strong></td>
   <td>'.$row["Country"].'</td>
   <td>'.$row["ville"].'</td>
   <td><button type="button" value="CustomerID" class="btn btn-info">Info</button></td>
  </tr>
  ';
 }
}
else
{
 $output .= '
 <tr>
  <td colspan="5" align="center">
  Aucune randonnées disponible pour ce département</br>
  </td>
 </tr>
 ';
}

echo $output;

?>

<?php
//index.php

require ('connexion_bdd.php');

$query = "SELECT DISTINCT Country FROM base_rando ORDER BY Country ASC";

$statement = $connect->prepare($query);

$statement->execute();

$result = $statement->fetchAll();

?>
<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <title>Bikeride</title>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <script src="js/bootstrap.min.js"></script>

    <link rel="stylesheet" href="css_bis/style.css">
    <link rel="stylesheet" href="css/bootstrap.css">

  </head>

 <body>
     <?php include ('header.php');?>
  <br />
  <br />
  <br />
  <h1 class="title_home"><span class="blue">&lt;</span>VTT<span class="blue">&gt;</span> <span class="yellow">Randonnées</pan></h1>
  <h2 class="title_home_bis">Trouves ta rando dans ton département avec <a class="title_home_a">Bikeride.fr</a></h2><br />
  <div class="container container_home">
    <center><div class="col-md-6">
          <select name="multi_search_filter" id="multi_search_filter" class="form-control col-md-6" >
            <?php
            foreach($result as $row)
            {
             echo '<option value="'.$row["Country"].'">'.$row["Country"].'</option>'; 
            }
            ?>
          </select>
    </div><br/>
    </center>
            <input type="hidden" name="hidden_country" id="hidden_country" />
    <div style="clear:both"></div>
    <br />
   <div class="table-responsive">
    <table class="table table-striped table-bordered">
     <thead>
      <tr>
       <th>Date</th>
       <th>Dept</th>
       <th>ville</th>
       <th>Info</th>   
      </tr>
     </thead>
     <tbody>
     </tbody>
    </table>
   </div>
   <br />
  </div>
  <br />
   <br />
 </body>
</html>

<script>
$(document).ready(function(){

 load_data();

 function load_data(query='')
 {
  $.ajax({
   url:"fetch.php",
   method:"POST",
   data:{query:query},
   success:function(data)
   {
    $('tbody').html(data);
   }
  });
 }

 $('#multi_search_filter').change(function(){
  $('#hidden_country').val($('#multi_search_filter').val());
  var query = $('#hidden_country').val();
  load_data(query);
 });

});
</script>

Entourez votre code pour bien le mettre en forme

Ce que je veux

Décrivez ici ce que vous cherchez à obtenir

Ce que j'obtiens

Décrivez ici vos erreurs ou ce que vous obtenez à la place de ce que vous attendez :(

19 réponses


C'est beaucoup mieux au niveau formatage du code.
Si tu veux qu'un utilisateur soit dirigé vers une autre page en cliquant, ce n'est pas un bouton qu'il te faut mais un lien, soit la balise a avec l'attribut href qui contiendra le lien vers la page ciblée.

C'est ce que j'ai fais. j'ai crée un lien avec a donc pas de souci. Simplement, c'est que rien ne s'affiche sur page. Hors moi ce que je veux, c'est que ca affiche les informations complémentaires. je ne sais pas si je suis assez clair.

Bonjour,
Lartak a raison, dans le code que tu as posté il y a un button, pas un lien. Quel traitements effectues tu pour afficher les informations complémentaires sur la nouvelles page?

dans mon tableau qui s'affiche en index.php, je souhaite integrer un lien ligne par ligne et afficher sur une autre page les informations complémentaires correspondant à cette ligne. exemple
j'ai 4 produits dans un tableau et chacun a un lien qui a pour but de donner des infos complémentaires du style "en savoir plus"

Il faut savoir que tout est piloté via fetch.php pour l'affichage du tableau sur ma page indes.php

index.php pardon!

A la place de ton bouton dans le td:

'<a href="nom_de_la_page.php?id=' . $row['CostumerId'] . '"' .'>voir détails</a>'

Dans nom_de_la_page.php tu récupères l'id de ta randonnée avec $_GET, puis tu effectue une nouvelle query pour récupèrer la randonnée en question(attention à la sécurité) et tu affiche les détails dans la page.

Ok je vais essayer ta méthode. merci de te donner du mal pour moi. je te tiens au courant.

Il y a un truc que je pige pas. tu mets un $ pour CustomerID ? C'est une erreure de frappe ?

Erreur de frappe

Ok. je m'en doutais un peu. malgré le rectificatif la base se met en erreur. J'ai bien remplacé le bouton par la <a> entre les deux balises <td>, mairien y fait. le problème à mon sens vient de la boucle foreach qui reprend tous les éléments et n'arrive pas à me les dissocier.

remplacé "a" par le bouton entre la balise "td"

revoici le code

<?php
//index.php

require ('connexion_bdd.php');

$query = "SELECT DISTINCT Country FROM base_rando ORDER BY Country ASC";

$statement = $connect->prepare($query);

$statement->execute();

$result = $statement->fetchAll();

?>
<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <title>Bikeride</title>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <script src="js/bootstrap.min.js"></script>

    <link rel="stylesheet" href="css_bis/style.css">
    <link rel="stylesheet" href="css/bootstrap.css">

  </head>

 <body>
     <?php include ('header.php');?>
  <br />
  <br />
  <br />
  <h1 class="title_home"><span class="blue">&lt;</span>VTT<span class="blue">&gt;</span> <span class="yellow">Randonnées</pan></h1>
  <h2 class="title_home_bis">Trouves ta rando dans ton département avec <a class="title_home_a">Bikeride.fr</a></h2><br />
  <div class="container container_home">
    <center><div class="col-md-6">
          <select name="multi_search_filter" id="multi_search_filter" class="form-control col-md-6" >
            <?php
            foreach($result as $row)
            {
             echo '<option value="'.$row["Country"].'">'.$row["Country"].'</option>'; 
            }
            ?>
          </select>
    </div><br/>
    </center>
            <input type="hidden" name="hidden_country" id="hidden_country" />
    <div style="clear:both"></div>
    <br />
   <div class="table-responsive">
    <table class="table table-striped table-bordered">
     <thead>
      <tr>
       <th>Date</th>
       <th>Dept</th>
       <th>ville</th>
       <th>Info</th>   
      </tr>
     </thead>
     <tbody>
     </tbody>
    </table>

   </div>
   <br />
  </div>
  <br />
   <br />
 </body>
</html>

<script>
$(document).ready(function(){

 load_data();

 function load_data(query='')
 {
  $.ajax({
   url:"fetch.php",
   method:"POST",
   data:{query:query},
   success:function(data)
   {
    $('tbody').html(data);
   }
  });
 }

 $('#multi_search_filter').change(function(){
  $('#hidden_country').val($('#multi_search_filter').val());
  var query = $('#hidden_country').val();
  load_data(query);
 });

});
</script>

<?php
//*fetch.php
require ('connexion_bdd.php');

if($_POST["query"] != '')
{
 $search_array = explode(",", $_POST["query"]);
 $search_text = "'" . implode("', '", $search_array) . "'";
 $query = "
 SELECT * FROM base_rando 
 WHERE Country IN (".$search_text.") 
 ORDER BY date ASC
 ";
}
else
{
 $query = "SELECT * FROM base_rando ORDER BY date ASC";
}

$statement = $connect->prepare($query);

$statement->execute();

$result = $statement->fetchAll();

$total_row = $statement->rowCount();

$output = '';

if($total_row > 0)
{
 foreach($result as $row)
 {
  $output .= '
  <tr>
   <td><strong>'.$row["date"].'</strong></td>
   <td>'.$row["Country"].'</td>
   <td>'.$row["ville"].'</td>
   <td><a href="info.php?id='.$row['CustomerId']. '"' .'></a></td> 
  </tr>
  ';
 }
}
else
{
 $output .= '
 <tr>
  <td colspan="5" align="center">
  Aucune randonnées disponible pour ce département</br>
  </td>
 </tr>
 ';
}

echo $output;

?>

J'ai fais la modif dans le td mais pour le coup sa plante ma base.

Essaie d'être plus précis, tu parle d'une erreur, la communiquer pourrait être intéressant, voir même la requête générée par ton code. Il se peut qu'il y ait plusieurs soucis, pour le moment je t'invite à chercher par toi même, ça sera certainement plus constructif.

Merci pour votre retour. je vais creuser la question. Cepandant tout fonctionne correctement, la base également. Il ne me manque pas grand chose.

J'ai du mal à comprendre comment tu peux voir le lien à l'écran, alors que celui-ci ne contient aucun texte à l'intérieur.
Si un lien n'est pas une balise autofermante, c'est quand même qu'il y a une raison.

Corrigé, c'est vrai que j'aurais du être plus précis également.

pour info , je n'ai toujours pas trouvé la solution. je vais devoir changer mes plans.

Qu'est ce que tu as comme erreur?