Categories > TinyButStrong general (FR) >

Affichage en série, ça marche presque, mais....

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: bruno
Date: 2011-05-09
Time: 16:06

Affichage en série, ça marche presque, mais....

Bonjour,

après avoir résolu mes soucis de multilinguisme, me voilà à présent confronté à un problème d'affichage en série. En effet, quand on clique sur mon menu principal vertical, on doit arriver sur le listing des sous-rubriques contenues dans ma rubriques parente.
Par exemple si je clique sur le lien "se loger"
on arrivera sur une page listant les différents types de logement (hôtels, gîtes, chambres d'hôte...)

J'ai donc crée un tableau avec pour objectif un remplissage automatique de ses cellules en fonction des sous-rubriques présentes au sein d'une rubrique mère.
Après environ 3heures de tentatives infructueuses, je passe par la case forum car je n'y comprends rien. J'ai crée un tableau en 3 colonnes, mais il m'affiche sur une seule ligne les 5 sous-catégories d'une même rubriques alors que, si j'ai bien compris, il devrait m'afficher sur une première ligne, les 3 premières sous-rubriques, puis, sur une deuxième ligne, les deux sous-rubriques restantes et laisser la dernière cellule vide...

Voici mon code:

Page php:
<?php
  session_start(); 
// INCLUSION DU FICHIER TBS ET DE LA LIBRAIRIE XAJAX
  include("TBS/tbs_class_php5.php");
// PARAMETRES DE CONNEXION A LA BDD
  $serveur = "localhost";
  $utilisateur = "root";
  $motpasse = "";
  $base = "mysqlBDD";
// CONNEXION A LA BASE DE DONNES
  $connexion = mysql_connect($serveur, $utilisateur, $motpasse) or die("Impossible de se conecter au SGBD");
// SELECTION DE LA BASE DE DONNEES
  mysql_select_db($base) or die ("Impossible de sélectionner la BDD");
 
// --------------------------------------------------------------------------
if(isset($_GET['action'] ))
  {
// DEFINI L'ACTION A REALISER EN METHODE GET
  switch($_GET['action'])
    {
// FONCTIONS TBS
    case "search":
// CREATION D'UN NOUVEL OBJET TBS
    $tbs = new clsTinyButStrong;
// MODELE HTML UTILISE POUR AFFICHER LA FONCTION
    $tbs -> LoadTemplate("/pages/search.html");
     
//REQUETE - AFFICHAGE DU MENU
  $Menu = "select
      id_rubrique,
      nom_rubrique_FR AS nom_rubrique,
      rubrique_mere
      from rubriques  where rubrique_mere is null
      order by id_rubrique"; 
  $tbs -> MergeBlock('BlkMenu',$connexion, $Menu);
   
// REQUETE QUI AFFICHE LE TITRE DE LA RUBRIQUE MERE
    $idrubmere = $_GET['num'];
     
    $AffRub = "select nom_rubrique_fr,
               desc_rubrique_fr
               from rubriques
               where id_rubrique = $idrubmere" ;
    $tbs -> MergeBlock ('blkAffRub',$connexion,$AffRub);
     
//Requete affichage sous rubriques
    
    $AffChildRub = "select nom_rubrique_fr,
                      img_rubrique
                      from rubriques
                      where rubrique_mere = '$idrubmere'" ;
    $tbs -> MergeBlock ('blkAffChildRub',$connexion,$AffChildRub,'SELECT id_rubrique FROM rubriques ORDER BY id_rubrique');
           
//     //Affichage du modèle HTML
     
     
     
      $tbs -> Show();
   
      break;
      }
}
?>

et ma page html ;)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
 
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <link href="pages/global.css" type="text/css" rel="stylesheet">
  <link href="pages/search.css" type="text/css" rel="stylesheet">
  <title>ALSACE-INFO.COM</title>
</head>

<body> 
<div id="global">
   <div id="menubis">
        <ul id="menubis">
 
          <li>
            <a href="main.php?action=search&num=[BlkMenu.id_rubrique;block=li]" class="menu">[BlkMenu.nom_rubrique]</a>
          </li>      
        </ul>
  </div>

  <div id="banniere">
    <div id="alsace-info">
      <a href="http://www.alsace-info.com">
      <img src="images/design/alsace-info.png"
           alt="Alsace-info - Toute l'info sur le tourisme en alsace"
           title="Alsace-info - Toute l'info sur le tourisme en alsace"
           width="220" height="127">
      </a>
    </div>
  </div>

  <div id="contenu">
  <div id="listing">
  [blkAffRub.nom_rubrique_fr]
    <table id="tabeau_listing">
      <tr>
      [blkAffChildRub;block=tr;serial]
        <td id="td_listing">
       
        <a href="http://www.alsace-info.com">
        <img src="images/rubriques/[blkAffChildRub.img_rubrique;block=td;blkAffChildRub_1]">
        </a>
        </td>
        <td id="td_listing">                                   
        <img src="images/rubriques/[blkAffChildRub.img_rubrique;block=td;blkAffChildRub_2]">
        </td>
        <td id="td_listing">     
        <img src="images/rubriques/[blkAffChildRub.img_rubrique;block=td;blkAffChildRub_3]">
        </td>
      </tr>
      <tr> 
        <td id="td_listing"> [blkAffChildRub_0;block=td] Vide
        <img src="images/rubriques/[blkAffChildRub.img_rubrique;block=td;blkAffChildRub_4]">
        </td>
        <td id="td_listing">          
        <img src="images/rubriques/[blkAffChildRub.img_rubrique;block=td;blkAffChildRub_5]">
        </td>
        <td id="td_listing">          
        <img src="images/rubriques/[blkAffChildRub.img_rubrique;block=td;blkAffChildRub_6]">
        </td>
      </tr>   
    </table>
  </div>
 

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




D'avance merci pour vos explications. Initialement je voulais créer un système de recherche par le biais de deux listes déroulantes liées, mais ne réussissant pas à faire fonctionner les scripts que j'ai trouvé j'ai pensé me simplifier la vie en passant par un affichage TBS, mais bon... c'est pas ma journée.


@u plaisir de lire vos réponses, bruno
By: Skrol29
Date: 2011-05-09
Time: 21:28

Re: Affichage en série, ça marche presque, mais....

Salut Bruno,

tu dois remplacer les balises
[blkAffChildRub.img_rubrique;block=td;blkAffChildRub_1]
par
[blkAffChildRub_1.img_rubrique;block=td]

Attention aussi car ton code PHP n'est pas protégé contre le SQL Injection.
Tu devrais remplacer
$idrubmere = $_GET['num'];
par
$idrubmere = intval($_GET['num']);
By: bruno
Date: 2011-05-10
Time: 09:44

Re: Affichage en série, ça marche presque, mais....

Merci pour ton aide précieuse skroll, ainsi que tes conseils, je vais de ce pas me renseigner sur les "sql injection" car je ne connais pas du tout...

Ceci dit, je me demandais s'il est possible de faire ce même type d'affichage (en série dans un tableau) mais en utilisant des containers div plutôt qu'un tableau ?

@Bientôt pour d'autres questions :)
By: Skrol29
Date: 2011-05-11
Time: 22:27

Re: Affichage en série, ça marche presque, mais....

> Ceci dit, je me demandais s'il est possible de faire ce même type d'affichage (en série dans un tableau) mais en
> utilisant des containers div plutôt qu'un tableau ?

Cela semble possible si tu arrives à assurer la largeur des div quel que soient le contenu. Tu les places dans un conteneur qui ne peut en avoir que 3 sur sa largeur, puis tu mets les div en "display=inline".
Non testé, mais ça peut peut-être marcher.
By: bruno
Date: 2011-05-17
Time: 11:28

Re: Affichage en série, ça marche presque, mais....

Bonjour Skrol,

j'ai finalement laissé tomber l'affichage dans des div, tout du moins, pour l'instant. Je suis ensuite passé à m'occuper du multilinguisme sur mon site, puis, en revenant sur l'affichage de mes rubriques, me voilà confronté à un nouveau petit soucis. Ca doit pas être compliqué, mais je n'arrive jamais à réutiliser les exemples fournis dans le manuel...

Je lance un nouveau topic histoire de ne pas top éparpiller celui ci ;)