Categories > TinyButStrong general (FR) >

Une liste déroulante html remplie par requete

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: taz
Date: 2007-07-12
Time: 13:45

Une liste déroulante html remplie par requete

Bonjour,
Je n'arrive pas a comprendre comment remplir ma liste déroulante html avec le résultat de ma fonction php.

ma fonction pour la requete :
function liste_serie_bd($database_dbprotect, $dbprotect)
{
   $liste_serie = "SELECT series_bd FROM t_series_bd";
     $liste_serie = mysql_query($liste_serie, $dbprotect) or die(mysql_error());
     $liste_serie = mysql_fetch_row($liste_serie);
     return $liste_serie;
}

mon fichier php :
$liste_serie = liste_serie_bd($database_dbprotect, $dbprotect);
$TBS->MergeBlock('liste_series','array','liste_serie');
$TBS->LoadTemplate('../../modeles/bd.html');
$TBS->Show() ;

le fichier html
<select name='serie_bd'>
    <option value='0'>[var.selectionner_1_bd]</option>
    <option value='[liste_series.series_bd;block=option]'>[series_bd;block=option]</option>
</select>

Alors mon tableau $liste_serie contient biens les enregistrements que je souhaite. Mais je n'arrive pas a transmettre cela au modèle.

Une star des mergeblock pourrait-il m'en dire un peu plus la dessus;

Merci à vous et à TBS
By: Skrol29
Date: 2007-07-12
Time: 14:30

Re: Une liste déroulante html remplie par requete

Salut,

À priori ton modèle HTML est ok bien qu'il contienne une mini erreur de champ. Il faudrait écrire  :
<option value='[liste_series.series_bd;block=option]'>[liste_series.series_bd]</option>

Il me semble aussi que ta fonction liste_serie_bd() ne retourne qu'un seul enregistrement et non pas le tableau complet.
By: taz
Date: 2007-07-12
Time: 14:55

Re: Une liste déroulante html remplie par requete

J'ai modifié ma fonction pour obtenir un tableau et qd je compte le nombre d'enregistrements j'en ai 34. C'est mieux déjà
function liste_serie_bd($database_dbprotect, $dbprotect)
{
   $liste_serie = "SELECT series_bd FROM t_series_bd";
  $liste_serie = mysql_query($liste_serie, $dbprotect) or die(mysql_error());
  return $liste_serie;
}

J'ai modifié le html comme tu me l'a conseillé.

Et dans ma liste déroulante j'ai toujours
[liste_series.series_bd]
comme s'il ne compilait pas la page et le modèle. Y a t'il un plugin particulier pour ce genre d'opération ?
By: Skrol29
Date: 2007-07-12
Time: 20:59

Re: Une liste déroulante html remplie par requete

Non ce sont des fonctions natives de bases.

Est que les deux champs [liste_series.series_bd;block=option] et [liste_series.series_bd] ne sont pas fusionnés ou seulement l'un des deux ?

Vérifie bien que tu n'as pas d'espace involontaires mal placés dans la définition des champs. Les espaces sont acceptés dans les paramètres mais pas dans les noms de champs.
By: taz
Date: 2007-07-13
Time: 10:07

Re: Une liste déroulante html remplie par requete

Merci de tes reponses.

Alors j'ai trouvé la solution en espérant que ce soit orthodoxe.

html
<select name='serie_bd'>
               <option value='0'>[var.selectionner_1_bd]</option>
                 <option value='[liste_series.val;block=option]'>[liste_series.val]</option>
            </select>

php
$series = liste_serie_bd($database_dbprotect, $dbprotect);
             // Appel du fichier modele
             $TBS->LoadTemplate('../../modeles/bd.html');
             $TBS->MergeBlock('liste_series','array','series');

fonction
function liste_serie_bd($database_dbprotect, $dbprotect)
{
   $liste_serie = "SELECT series_bd FROM t_series_bd ORDER BY series_bd ASC";
     $series_bd = mysql_query($liste_serie, $dbprotect) or die(mysql_error());
     $i = 0;
     while($liste_des_series = mysql_fetch_row($series_bd)) {
        $series[$i] = $liste_des_series[0];
            $i = $i + 1;
   }
     return $series;
}

J'ai bien ma liste déroulante maintenant. Pas évident mais en fait mon tableau devait pas être construit correctement je pense au sens TBS.