Se connecter avec
S'enregistrer | Connectez-vous

php/mysql : Afficher champs d'une table figurant dans les cellules d'une autre table

Dernière réponse : dans Programmation

Bonjour tous,

Alors le titre n'est peu être pas très explicite, je détail :

j'ai 2 tables sql :

TBL_HOTEL : x champs
TBL_HOTEL_SECTION_TYPE :
1 champs Col_name dont les valeurs sont les noms des champs de ma table TBL_HOTEL
1 champs Col_show (valeur 0 ou 1) associé

le but est que lorsque dans TBL_HOTEL_SECTION_TYPE Col_show = 1 j'affiche la colonne de TBL_HOTEL souhaité. Le but final étant dans une interface admin de choisir les champs que je souhaite afficher ou non sur mon tableau principal.

Pour le moment j'arrive à le faire mais je bloque sur une concaténation de variable... si vous avez des idées (peu être un meilleur moyen d'accéder à ce que je souhaite)je suis prenneur, voici le bout de code en question :

  1. $reqwhichshow = mysql_query('SELECT * FROM TBL_HOTEL_SECTION_TYPE WHERE Col_show= "1" ') or die('Erreur SQL !<br>'.mysql_error());
  2. $nba = "0";
  3. while ($reswhichshow = mysql_fetch_array($reqwhichshow))
  4. {
  5. $entete_main[$nba] = $reswhichshow['Col_name'];
  6. echo '<th>'.$entete_main[$nba].'</th>'; // affiche entete du tableau : liste des champs à afficher
  7. $nba++;
  8. }
  9. // c'est ici que le problème se pose je ne sais pas comment concaténer les variables de ma boucle while
  10. // $concatres = ' '.$entete_main[0].','.$entete_main[1].','.$entete_main[2].','.$entete_main[3].','.$entete_main[4].' '; //test manuel
  11.  
  12. $reqwhichshow = mysql_query('SELECT '.$concatres.' FROM TBL_HOTEL') or die('Erreur SQL !<br>'.mysql_error()); // requete pour afficher les données de la table principale



merci pour votre aide !

Kaym
0kaym0 a édité ce message
Lassé par la pub ? Créez un compte

zeb a dit :
Salut,

Toute pièce de code doit être présentée conformément au règlement.


bonjour Zeb, j'ai tenter d'ajouter les balises mais celles-ci ne me placent pas mon code correctement , je viens de le refaire ça semble bon désolé
0kaym0 a édité ce message

Si ça intéresse quelqu'un un jour j'ai trouvé ma solution : fonction implode()

  1. $column_names = array(); // j'initialise mon tableau
  2. while ($reswhichshow = mysql_fetch_array($reqwhichshow))
  3. {
  4. echo '<th>'.$reswhichshow['Col_name'].'</th>';
  5. $column_names[] = $reswhichshow['Col_name']; // j'ajoute les valeur une à une dans mon tableau
  6. }
  7.  
  8. $select_columns = implode(', ', $column_names);
  9. // je concatène les valeur en y ajoutant une virgule afin d'avoir une chaine qui pourra être insérée dans ma requete
  10.  
  11. $reqwhichshow = mysql_query('SELECT '.$select_columns.' FROM TBL_HOTEL') or die('Erreur SQL !<br>'.mysql_error());


Kaym
0kaym0 a édité ce message
Expert Programmation

Salut et merci deux fois : pour avoir mis ton poste en forme, et pour être revenu avec une solution.
Celle-ci est excellente.

Toutefois, j'attire ton attention sur celle que je te propose, qui est triviale, et qui fonctionne dans TOUS les langages, même ceux qui ne possèderaient pas d'équivalent à implode() :
  1. $champs = '';
  2. while (...)
  3. {
  4. ...
  5. $champs .= ', '.$champ;
  6. }


Tu te retrouves à l'issue avec une liste commençant par un séparateur, qu'il suffit de supprimer :

  1. $champs = substr($champs, 2);

zeb a édité ce message
Lassé par la pub ? Créez un compte
  • Contenus similaires :
Tags :