PHP/ Selecteur dans liste déroulante

Résolu/Fermé
Signaler
Messages postés
23
Date d'inscription
jeudi 26 avril 2012
Statut
Membre
Dernière intervention
22 mai 2012
-
 tsig00 -
Bonjour,

je suis actuellement en stage IG, je travail actuellement pour faire une interface qui affiche ma requête dans un tableau(ça j'ai réussi), avec pour inconvénient que j'ai appris à faire une page php (qui exécute le script) et une page html ( qui affiche le résultat). Malheureusement on travail sur un base de donnés sql et le TBS(TinyButStrong) ne fonctionne pas...(il faut télécharger driver ou je ne sais plus trop quoi et je ne me sent pas trop de le faire dans la boite ou je suis... donc pas touche^^)

Donc ma première question est: peut on faire de l'affichage dynamique c'est à dire faire apparaitre mes variables issues de mes requêtes sql dans ma page php dans une autre page html?(sans TBS).. si oui comment?

sinon j'ai tout mis dans la même page et j'ai mon tableau.

Mon deuxième objectif (prioritaire celui ci) est d'insérer une liste déroulante dans la barre de titre de mon tableau, y afficher un selecteur pour pouvoir sélectionner les champs à faire apparaitre dans mon tableau (je suis dessus depuis deux jours et j'ai du mal.

J'ai fait une liste déroulante mais j'entre les champs en dur.. comment faire que les différents choix de cette liste correspondent aux différents champs choisi par le selecteur.. et comment afficher les choix de la liste déroulante en variable...

Je pensais faire une requete pour chaque case titre.. mais je n'arrive pas à intégrer le php au tableau... dois je le faire dans un while pour sortie les :
"select disctinct 'champs concernés' from 'table concerné' ".

je parcours les forums mais je ne suis pas assez calé pour déchiffrer toutes les infos qui ne correspondent pas forcement à mon projet.

Donc toutes aide sera la bienvenue.

Cordialement

15 réponses

Messages postés
4311
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
833
Salut,

Alors déjà il faut bien comprendre que TBS est un moteur de template basé sur les variables globales de PHP.

Traduction : alors qu'en général on insère des variables PHP dans du HTML via la méthode PHP "echo", avec TBS il faut que tu rendes ta variable PHP globale et ensuite tu l'appelles avec TBS...

Je ne sais pas si je suis clair.
En gros :

<div><?php echo($monPrenom);?></div>


Deviendra :

<?php global $gMonPrenom = $monPrenom; ?>
<div>[onload;var.gMonPrenom]</div>
1
Messages postés
23
Date d'inscription
jeudi 26 avril 2012
Statut
Membre
Dernière intervention
22 mai 2012

ok ... j'avoue que c'est encore assez flou pour moi^^
sinon j'ai essayer ton code.. chez moi il ne fonctionne pas... mais j'ai réussi à mettre le résultat de mon tableau dans une variable $_GLOBALS, voila ou j'en suis:

//connexion à la base de données
//test de connexion
//requête
//execution de la requête
//definie chaque case du tableau comme variable

//test de fonction var global
function globale()
{
$GLOBALS['table']=$GLOBALS[var1]+$GLOBALS[var2];
}

//affiche le tableau en brut
echo '<pre>';
print_r($table);
echo '</pre>';

//ferme connexion


Donc j'arrive a tous mettre dans la variable $table dans un tableau, mais je n'arrive pas à la récupérer sur une autre page.... j sais pas si je doit la mettre en super globale de sessions, ou cookies...je pensais que $GLOBALS était justement une superglobal :) permettant de récuperer mes variables dans toutes mes pages.. mais je ne sais pas comment faire.


Sinon j'ai réussi à tout combiner sur une seule page mais je n'arrive toujours pas à insérer un sélecteur dans ma liste déroulante...je m'explique:

Donc je dois faire un tableau qui se rafraîchie toutes les 10 sec environ et qui correspond au résultat d'une requête. il m'est demandé de faire une liste déroulante (qui à l'avantage de prendre peu de place), dans laquelle on peut sélectionner plusieurs options ( sélecteur) pour les classer par type.. les options correspondront à aux champs répondant à la requêtes principale.

donc j 'arrive à mettre une liste déroulante et à y afficher les options en fonction de la requete:
ex: 'select disctinct nom_oiseau from T_foret' (j'suis deja content de ca^^)
mais pour y ajouter un sélecteur j'ai beaucoup de mal...donc si quelqu'un à une idée je testerais pour lui^^
...quelqu'un m'a dit que tout était possible en php^^
0
Messages postés
4311
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
833
Salut !

Alors en effet pour passer ton tableau entre pages, les globales ne serviront à rien. Les globales sont accessibles à tous les scripts en cours d'utilisation ; une fois le code PHP exécuté, elles disparaissent. Il faut donc, comme tu l'as justement dis, utiliser les sessions !

<?php
   session_start();
   $_SESSION['monTableau'] = $GLOBALS['table'];
?>

Pour ce qui est des listes déroulantes, tu es sur la bonne voie ! Admettons que ta requête du select distinct fonctionne et te renvoie donc un tableau contenant les noms d'oiseau. Tu auras ensuite dans ton code quelque chose du genre :

<select>
   <?php
      for ($i=0 ; $i<count($mesOiseaux) ; $i++){
         echo ('<option value="'.$mesOiseaux[$i]['nomOiseau'].'">'.$mesOiseaux[$i]['nomOiseau'].'</option>');
      }
   ?>
</select>
0
Messages postés
23
Date d'inscription
jeudi 26 avril 2012
Statut
Membre
Dernière intervention
22 mai 2012

ok bon pour la session start j'ai du mal... je la marque dans le haut de page de la page ou j'initialise la variable c'est bien ca? apres plusieurs essaies je me suis rendu compte que ma variable
$GLOBALS['table']=$GLOBALS[var1]+$GLOBALS[var2];
était loin d'etre infaillible.. donc j'ai mis le resultat de ma requete dans un variable
$table[$i]= array ( var1, var2,..);


Donc en haut de cette page j'ai mis:
<?php 
   session_start(); 
   $_SESSION['monTableau'] = $table; 
?> 


Mais je ne sais pas comment récuperer la variable dans une autre page... je ne suis pas trés doué sur ce coup^^
Dois-je aussi faire un session_start sur la page ou je désire récuperer cette variable? comment puis je la récupérer?
echo $monTableau;
?
Bref pas glorieux^^





Pour le sujet de la liste déroulante j'ai fait autrement:

<td class="contour_cellule">Oiseaux 
                <select name=liste size=1 style=font-size: 8 pt> 
                  <option selected value=''>Oiseaux</option> 
                      <?php while(odbc_fetch_row($requete)) 
                      { 
                         $Ooiseau=odbc_result($requete,1); ?>   
                  <option value=<?php $Ooiseau; ?>><?php echo $Ooiseau; ?></option> 
                      <?php  
                      }  
                      ?></td> 



Mais comment ajouter un selecteur à ces options?... la j'commence à m'inquiéter^^
j'ai essayer plusieurs solutions sans grand succés...j'en suis la mais c'est du bricolage:
<code> 
<td class="contour_cellule">Oiseaux 
                <select name=liste size=1 style=font-size: 8 pt> 
                  <option selected value=''>Oiseaux</option> 
                      <?php while(odbc_fetch_row($requete)) 
                      { 
                         $Ooiseau=odbc_result($requete,1); ?>   
                  <option value=<?php $Ooiseau; ?><input type="checkbox" name="$Ooiseau" id="$Ooiseau" /> <label for="$Ooiseau">><?php echo $Ooiseau; ?></label></option> 
                      <?php  
                      }  
                      ?></td> 
</code>

..Mais pas la peine de vous préciser que ce code ne fonctionne pas...zut!
0
Messages postés
4311
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
833
Bon alors.

Déjà le problème des sessions.
Si tu définis :

<?php 
   session_start(); 
   $_SESSION['monTableau'] = $table; 
?> 

Alors dans toutes les autres pages tu pourras faire :

<?php 
   session_start(); 
   $monTableauRecupere = $_SESSION['monTableau']; 
?> 

Quant à tes listes déroulantes, j'aimerais surtout que tu expliques ce que tu appelles un "sélecteur" ?!
0
Messages postés
23
Date d'inscription
jeudi 26 avril 2012
Statut
Membre
Dernière intervention
22 mai 2012

Super! désolé pour le silence j'suis en week-end le vendredi midi (hé oui y en a qui on de la chance^^)...

Donc j'ai essayer à la maison ça marche très bien, juste le temps de comprendre qu'il faut initialiser la variable session dans le start..par contre il faut exécuter la page qui édite la variable avant de pouvoir l'utiliser (j vais voir si avec un include ça peut le faire).

Sinon concernant le sélecteur: ce sont des cases à cocher... par exemple on peut choisir entre les différents oiseaux disponibles dans notre liste déroulante et il y a une case devant chacun d'eux, on coche les cases correspondantes aux oiseaux que l'on désire voir figurer dans le tableau: je souhaiterais donc pouvoir utiliser le principe de la liste déroulante mais de pouvoir sélectionner plusieurs choix de cette liste.. et d'avoir la même ergonomie que la liste (qui ne prends pas beaucoup de place quand on ne l'utilise pas).
0
Messages postés
23
Date d'inscription
jeudi 26 avril 2012
Statut
Membre
Dernière intervention
22 mai 2012

...le week-end fut bref..mais intense^^

J'ai un autre souci...(deux en fait:mrgreen: :)
J'ai fais mon tableau avec liste déroulante et j'arrive à afficher liste dynamique en fonction de ma requete, mon soucis étant d'afficher mon tableau en fonction du choix de ma liste déroulante...2 problemes me barrent la route...

1) quand j'initialise ma liste déroulante elle me met par défaut les derniers choix du 'select distinct nom_oiseau from oiseau' alors que j'ai par défaut oiseau avec value=''...:roll:

$execution_requete="select distinct nom_oiseau from T_Oiseaux"; 

... 

<select name=liste size=1 style=font-size: 8 pt> 
                  <option selected value=''>Oiseau</option> 
                      <?php while(odbc_fetch_row($execution_requete)) 
                      { 
                         $OOiseau=odbc_result($rexecution_requete,1); ?>   
                  <option value=echo $OOiseau;><?php echo $OOiseau; ?></option> 
                      <?php  
                      }  
                      ?></td> 


Dans la liste déroulante j'ai bien tous les oiseaux dispo (du select distinct), j'ai bien marqué par défaut 'Oiseau', mais le tableau m'affiche que les lignes de mon dernier oiseau de la liste...je pense qu'il prends la dernière value du while.. mais c'est pas du tout ce que je veux... si quelqu'un à une solution à me proposer ce serait chouette^^.

2) Mon deuxième souci est que lorsque je change les valeurs de ma liste il faudrait régénérer le tableau au changement de valeur.. mais ça j devrais trouver sur fofo...
0
Bon c'est pas folichon le nombre de reponse:cry:..mais j'ai bien avancé quand même^^

Donc j'ai réussi à mettre en place un script de mise à jour en java script, et j'ai mis mes valeurs de la liste déroulante en dur.
Mais je me retrouve face à un autre probleme, voila ou j'en suis pour l'instant (...accrocher vous:)) :



-une 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="../style2.css" rel="stylesheet" type="text/css">
  <title></title>

<script type="text/javascript">
function MAJ(str)
{
var ajax;    

  ajax=new XMLHttpRequest();
  
ajax.onreadystatechange=function()
 {
  if (ajax.readyState==4 && ajax.status==200)
    {
    document.getElementById("txtHint").innerHTML=ajax.responseText;
    }
 }
ajax.open("GET","oiseau.php?q="+str,true);
ajax.send();
}
</script> 


</head>
<body>

<form action="">
<div id="txtHint">Les oiseaux seront affichés ici...</div>
<table class="contour"> 
<tr class="titre">
<td class="contour_cellule">age</td>
<td class="contour_cellule">repas</td>
<td class="contour_cellule"><select name="categorie onchange="MAJ(this.value);">
      <option value="">Selectionnes une categorie:</option>
      <option value="gros">Gros</option>
      <option value="moyen">Moyen</option>
      <option value="petit">Petit</option>                           
      </select></td>
<td class="contour_cellule">Couleur</td>
<td class="contour_cellule">Nbre_Oeuf</td>
<td class="contour_cellule">Nom_Oiseau</td>
</tr>

</table>
</div>
</form>

</body>
</html>



et une page PHP:

<!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="../style2.css" rel="stylesheet" type="text/css">
  <title></title>
<?php
$q=$_GET["q"];

//connexion à la base de donnnées
$conn=odbc_connect('','','');

//test de connexion 
if ($conn==false) 
{die("échec de la connexion");}

//requete en fonction du choix de la liste deroulante
$sql="SELECT * FROM T_Oiseau WHERE taille = '$q') ";


//execution de la requete
$rs=odbc_exec($conn,$sql);
$i = 0 ;
?>

          <table class="contour">
            <!-- Ligne de titres du tableau -->            
            
<?php
//boucle la BD pour récupérer toutes les lignes
while(odbc_fetch_row($rs))
{ 
            $repas=odbc_result($rs,"repas");
            $taille=odbc_result($rs,"taille");
            $couleur=odbc_result($rs,"couleur");
            $Nbre_Oeuf=odbc_result($rs,"Nbre_Oeuf");
            $Nom_Oiseau=odbc_result($rs,"Nom_Oiseau");
     ?>
            <tr>
                <td class="contour_cellule"><?php echo $repas; ?></td>
                <td class="contour_cellule"><?php echo $taille; ?></td>
                <td class="contour_cellule"><?php echo $couleur; ?></td>
                <td class="contour_cellule"><?php echo $Nbre_Oeuf; ?></td>
                <td class="contour_cellule"><?php echo $Nom_Oiseau; ?></td>    
              </tr>
              
      
<?php
}
?>
</table>

<?php
//pour liberer les resultats en mémoires lors de l'éxécution du script
//pour éviter d'utiliser trop de mémoire lors de l'éxecution du script
odbc_free_result($rs);

//ferme connexion
odbc_close($conn);
?>            
 </body>
</html>



donc mon code pour ma liste déroulante était bonne mais je n'arrivais pas à actualiser le tableau, chose que mon script me permet de faire...

..Mais ( car il y a un mais!):

1)j'ai un soucis de mise en page, en effet je n'arrive pas à mettre ma ligne de titre(html) dans le même tableau que le resultat de ma requete(php)... J'ai réussi à dissocier mon code en deux pages et j'aimerais que ca reste ainsi...quelqu'un a t il une solution à ce problème?


2)de plus j'aimerais que par défaut le tableau m'affiche tous les resultats de la requête sans prendre en compte la liste déroulante ( c'est çà dire tous les oiseaux, toute taille confondu...), car pour l'instant je suis obliger de choisir une taille d'oiseau dans mon tableau pour qu'un résultat apparaisse.
je pense à un truc du genre:

<td class="contour_cellule"><select name="categorie onchange="MAJ(this.value);">
      <option value="gros;moyen;petit">Selectionnes une categorie:</option>
      <option value="gros">Gros</option>
      <option value="moyen">Moyen</option>
      <option value="petit">Petit</option>                           
      </select></td>


..mais qui fonctionne^^, à savoir qu'à terme ma liste déroulante sera le resultat d'une requete et non plus inscrit en dur...bon j m'arrete là..pour l'instant^^
0
Messages postés
1682
Date d'inscription
mardi 12 juillet 2011
Statut
Membre
Dernière intervention
20 juillet 2012
313
salut,

je vois que tu utilise odbc, pour la bdd tu utilise access ou quoi :x ?

perso je vérais bien un truc dans ce genre:
<script type="text/javascript">   
function MAJ(str)   
{   
var ajax;       

  ajax=new XMLHttpRequest();   
     
ajax.onreadystatechange=function()   
 {   
  if (ajax.readyState==4 && ajax.status==200)   
    {   


va voir ici -> http://www.siteduzero.com/tutoriel-3-36169-xajax-applications-ajax-faciles-avec-php-et-xajax.html   
il faut que tu récupère ta liste d'oiseau avec tes li   
en faite ta fonction php retourneras une chaine préformaté. 

    document.getElementById("liste_oiseau").innerHTML=ajax.responseText;   
    }   
 }   
ajax.open("GET","oiseau.php?q="+str,true);   
ajax.send();   
}   
</script>    
<!--t'écrit ton code html pour la liste des tailles avec du php pour récupérer les tailles, puis tu fait un évènement onChange (ou onClick je sais plus) qui appel la fonction MAJ
<?php  
$res=odbc_exec($con,"SELECT * FROM T_Oiseau");   
echo "<ul>";   
echo "<div id=\"liste_oiseaux\">";   
while($oiseau=odbc_fetch_array($res){//pas sur que odbc_fetch_array existe   
echo "<li>".$oiseau['taille']."</li>";   
echo "<li>".$oiseau['repas']."</li>"; //et autres...  
}   
echo "</div>";   
echo "</ul>";   
?>  

dites non aux lois liberticide (hadopi, sopa,pipa,arjel,acta,ipred) et à la censure numérique !!!
0
Messages postés
23
Date d'inscription
jeudi 26 avril 2012
Statut
Membre
Dernière intervention
22 mai 2012

Bonjour, et merci pour ta réponse...

-oui j'utilise odbc je travaille sur sql par l'intermediaire d'un erp appellé excalibur..j'ai repris dans le cadre de mon stage le travaille déjà effectuer et je ne connais pas d'autres méthodes dans mon cas, mais je suis ouvert à toutes propositions:).

-j'ai lue le topic du site du zéro sur le xajax... interressant mais mon script JS fonctionne, je ne vois pas l'interet de le retravaillé en xajax...ou je n'ai pas vraiment percu l'interet de ce liens...

-pour ce qui est du:
" $oiseau=odbc_fetch_array($res)" il fonctionne trés bien oui, mais le mettre dans des balisise <li> n'a pas d'interet pour moi non plus car je désire remplir le tableau définie par ma page html...

Donc je n'ai pas saisie la portée de tes arguments ou bien j'ai mal formuler mon problème:

1)Mon code fonctionne j'ai uniquement un souci de mise en page. Je l'ai modifier pour qu'il apparaisse dans le même tableau en répetant le <tr> titre de la table dans la page php mais quand je l'execute le résultat me donne 2 tableau: c'est à dire quan dj'ouvre ma page html j'ai le titre et mon tableau (vide) avec ma liste déroulante dans une case du tableau mais lorsque je choise unevaleur de ma liste déroulante le tableau de la page php apparais (tout bien comme il faut)à mais juste au dessous le tableau <tr> titre de la page html reste... je pense à un script pour le faire disparaitre onchange ou onclick comme tu dis...j vous montre ma page php qui donne ce résultat:

<!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="../style2.css" rel="stylesheet" type="text/css"> 
  <title></title> 
<?php 
$q=$_GET["q"]; 

//connexion à la base de donnnées 
$conn=odbc_connect('','',''); 

//test de connexion  
if ($conn==false)  
{die("échec de la connexion");} 

//requete en fonction du choix de la liste deroulante 
$sql="SELECT * FROM T_Oiseau WHERE taille = '$q') "; 


//execution de la requete 
$rs=odbc_exec($conn,$sql); 
$i = 0 ; 
?> 

            <!-- Ligne de titres du tableau -->             
             
<table class="contour">  
<tr class="titre"> 
<td class="contour_cellule">age</td> 
<td class="contour_cellule">repas</td> 
<td class="contour_cellule"><select name="categorie onchange="MAJ(this.value);"> 
      <option value="">Selectionnes une categorie:</option> 
      <option value="gros">Gros</option> 
      <option value="moyen">Moyen</option> 
      <option value="petit">Petit</option>                            
      </select></td> 
<td class="contour_cellule">Couleur</td> 
<td class="contour_cellule">Nbre_Oeuf</td> 
<td class="contour_cellule">Nom_Oiseau</td> 
</tr> 

<?php 
//boucle la BD pour récupérer toutes les lignes 
while(odbc_fetch_row($rs)) 
{  
            $repas=odbc_result($rs,"repas"); 
            $taille=odbc_result($rs,"taille"); 
            $couleur=odbc_result($rs,"couleur"); 
            $Nbre_Oeuf=odbc_result($rs,"Nbre_Oeuf"); 
            $Nom_Oiseau=odbc_result($rs,"Nom_Oiseau"); 
     ?> 
            <tr> 
                <td class="contour_cellule"><?php echo $repas; ?></td> 
                <td class="contour_cellule"><?php echo $taille; ?></td> 
                <td class="contour_cellule"><?php echo $couleur; ?></td> 
                <td class="contour_cellule"><?php echo $Nbre_Oeuf; ?></td> 
                <td class="contour_cellule"><?php echo $Nom_Oiseau; ?></td>     
              </tr> 
               
       
<?php 
} 
?> 
</table> 

<?php 
//pour liberer les resultats en mémoires lors de l'éxécution du script 
//pour éviter d'utiliser trop de mémoire lors de l'éxecution du script 
odbc_free_result($rs); 

//ferme connexion 
odbc_close($conn); 
?>             
 </body> 
</html> 


la page php viens s'ajouter à la page html... ce qui donne un résultat pas trés beau...


2) pour ce qui est de la page de démarrage avec un tableau déjà rempli j'ai penser à ajouter une page qui contient le tableau rempli et qui appelle la page html au changement de valeurs de la liste déroulante.. mais je suis tout ouie de faire ca que dans mes deux pages.. si des zones restent flou je reste à votre disposition.
0
Messages postés
1682
Date d'inscription
mardi 12 juillet 2011
Statut
Membre
Dernière intervention
20 juillet 2012
313
en faite, l'interet que je percois dans le xAjax (d'après le tuto) c'est de pouvoir utiliser une méthode bien précise, et donc retourner une valeur (par exemple ta liste d'oiseau pour une liste déroulante ou autre chose)

après avoir relu, et si je comprend bien, tu veux faire un truc dans ce genre là:
<table class="contour"> //titre de colonne
<tr class="titre">
<td class="contour_cellule">age</td>
<td class="contour_cellule">repas</td>
<td class="contour_cellule"><select name="categorie onchange="MAJ(this.value);">
      <option value="">Selectionnes une categorie:</option>
      <option value="gros">Gros</option>
      <option value="moyen">Moyen</option>
      <option value="petit">Petit</option>                           
      </select></td>
<td class="contour_cellule">Couleur</td>
<td class="contour_cellule">Nbre_Oeuf</td>
<td class="contour_cellule">Nom_Oiseau</td>
</tr>
<?php
//boucle la BD pour récupérer toutes les lignes
while(odbc_fetch_row($rs))//contenu des colonnes. génération des oiseau toute taille confondu au chargement de la page, et selection des oiseau suivant la taille choisi dans la liste déroulante
{ 
            $repas=odbc_result($rs,"repas");
            $taille=odbc_result($rs,"taille");
            $couleur=odbc_result($rs,"couleur");
            $Nbre_Oeuf=odbc_result($rs,"Nbre_Oeuf");
            $Nom_Oiseau=odbc_result($rs,"Nom_Oiseau");
     ?>
            <tr>
                <td class="contour_cellule"><?php echo $repas; ?></td>
                <td class="contour_cellule"><?php echo $taille; ?></td>
                <td class="contour_cellule"><?php echo $couleur; ?></td>
                <td class="contour_cellule"><?php echo $Nbre_Oeuf; ?></td>
                <td class="contour_cellule"><?php echo $Nom_Oiseau; ?></td>    
              </tr>
              
      
<?php
}
?>
</table>
0
Messages postés
23
Date d'inscription
jeudi 26 avril 2012
Statut
Membre
Dernière intervention
22 mai 2012

Oui c'est exactement ce que je veux^^
Pour ce qui est de la liste déroulante en dynamique j'ai réussi à l'intégrer mais j'ai un soucis au niveau du value qui n'est pas reconnu pas ma fonction JS :maj(). De plus elle apparaît dans la page HTML... je relirais le tuto xajax plus d'en profondeur :).

Ce souci est secondaire pour l'instant je me concentre sur l'affichage du tableau: tu as donc bien compris le but de ma manoeuvre, mon soucis étant donc que lorsque je selectionne une valeur de la liste déroulante ma requete s'effectue faisant apparaitre le tableau avec titre et contenu php, mais le tableau avec juste le titre (sans contenu de la page html) reste au bas de la page: je me retrouve donc avec 2 tableaux.

Autre soucis est que lorsque j'actualise ma page html, le tableau est vide, je voudrais que par défaut la page s'actualise sur le tableau complet...
Dans mon :
$sql="SELECT * FROM T_Oiseau WHERE taille = '$q') ";

j'aimerais également que la variable $q puisse prendre toutes les valeurs, toutes les tailles ( c'est à dire afficher tout le tableau). Pour ajouter à la liste déroulante la possibilités de ré-afficher tout le tableau sans avoir à rafraîchir la page...
j'ai essayer avec:
$q = *;
$q="gros;moyen;petit" ;
$q = %;
rien ne fonctionne pour le moment...
0
Messages postés
1682
Date d'inscription
mardi 12 juillet 2011
Statut
Membre
Dernière intervention
20 juillet 2012
313
pour ta requète:
$q="%";
$sql="SELECT * FROM T_Oiseau WHERE taille like '$q') ";

dans un premier temps, tu dois afficher la liste des oiseaux sans distinction de taille avec ton php.
ta liste d'oiseau (ton tableau d'oiseau) seras entouré d'un div avec par exemple liste_oiseau comme id
ensuite tu as un évènement sur ta liste déroulante qui viendras changer le html situé entre le div liste_oiseau. tu génère le nouveau html de la manière que tu veux avec xmlhttprequest (personnellement c'est un appel vers une fonction php qui me renvoi du texte, mais je sais pas si ça se fait en get...)

j'ai bon ?
0
Messages postés
23
Date d'inscription
jeudi 26 avril 2012
Statut
Membre
Dernière intervention
22 mai 2012

merci je fais mes petits tests, ca risque de prendre du temps...mais je suis dessus:) pour le '%' fonctionne pas..surement une erreur de syntaxe.. je reposte surement aprés le repas^^
0
Messages postés
23
Date d'inscription
jeudi 26 avril 2012
Statut
Membre
Dernière intervention
22 mai 2012

Ok, bon bien pas fameux mais j'ai sauver la casse^^
pour :
$sql="SELECT * FROM T_Oiseau WHERE taille like '$q') ";
hé bien ça ne fonctionne pas et j'ai du mal à l'expliquer...(peut être l'erp qui bloque) bref j'ai initialiser une variable qui concatène les différentes possibilités ( pas glorieux mais ca fonctionne en attendant mieux)

Pour le plus difficile... hé bien j'ai pas réussi à rentrer tout dans mon tableau avec mes deux pages.. j'ai bien booker la méthode xmlhttprequest qui me parait être une bonne idée mais j'ai encore trop de lacunes pour l'instant j vais devoir me taper encore beaucoup de tuto avant de voir le bout...
mais bonne nouvelle (hé oui quand même^^) en mettant tout sur une table j'ai réussi à avoir ce que je voulais c'est a dire un seul et unique tableau, et qui affiche ce que je lui demande.. comme il s'agit d'un intranet il n'y a pas trop de risque niveau sécurité..décu de ne pas avoir fait tout ca proprement mais j'ai un peu mal au crane la^^

Reste encore le souci de la première page qui affiche un tableau vide...bien que sans la liste déroulante pas de problème. J'ai essayer avec selected dans la balise option mais ça ne fonctionne pas ça ne prends pas la valeur malgrès le fait que ça affiche bien le choix selected... donc j vais un peu voir ce que j'trouve la dessus... si une idée viens le tuto reste ouvert.
0
Messages postés
1682
Date d'inscription
mardi 12 juillet 2011
Statut
Membre
Dernière intervention
20 juillet 2012
313
pour les tests, essaye de mettre les données en dur, exemple:
$sql="SELECT * FROM T_Oiseau WHERE taille like '%') ";

1) est ce que tu arrive a afficher la totalité de tes oiseaux au chargement de ta page php ? (c'est le principale)

2) si oui, est ce que tu arrive a retourner le bon résultat avec ta fonction javascript ? (exemple la liste de tout les oiseaux de taille 'petit', le 'petit' étant écrit en dur dans le code, histoire de tester)

3) si oui, il faut que tu arrive a remplacer le html généré par le php par le html généré par le javascript
0
Messages postés
23
Date d'inscription
jeudi 26 avril 2012
Statut
Membre
Dernière intervention
22 mai 2012

1) oui pour le select j'ai mis mes données en dur, j'ai essayer pleins de truc et j'ai donc instancer comme ça:
$touteTaille ="gros' or taille = 'moyen' or taille = 'petit";

et dans la liste déroulante:
<option value="<?php echo $touteTaille ?>">Toutes les tailles</option>

c'est bon ça fonctionne. Mais comme dis j'arrive pas a charger tout au chargement, il faut que je sélectionne 'Toutes les tailles' dans la liste déroulante...

2) oui clairement j'arrive quand il est écrit en dur dans la liste déroulante..(...enfin...quand tu dit en dur dans le code javascript, tu veux dire en dur sur la requete sql ?.. sinon je ne vois pas)

3) la dessus j comprend pas très bien... mon code javascript est juste une fonction qui met à jour ma requête en fonction de ma liste déroulante... ma requête est en php.. et elle affiche en html les variables php issu de ma requete... je comprends ça comme ça...
donc je ne vois pas le html généré par le java script, j crois que t es trop balaise , j ai pas réussi à exploiter la fonction xmlhttprequest si c'est de ça que tu parles...
0
Messages postés
1682
Date d'inscription
mardi 12 juillet 2011
Statut
Membre
Dernière intervention
20 juillet 2012
313
je m'exprime peut être mal (ou alors je saisi mal la demande)

en faite, ce que moi je ferais, c'est d'un coté afficher tout les oiseaux avec le php (le truc basique, faire un select de tout tes oiseaux sans distinction de taille)

et ensuite tu as ta liste déroulante généré indépendement de ta liste d'oiseaux, qui contient toutes les tailles. cette liste a un évènement javascript qui appel ta fonction MAJ

cette fonction MAJ génère la même liste d'oiseaux, mais avec la taille prise en compte (donc ya le html complet avec les <td> etc...)

et pour faire le remplacement du html (dans ta fonction javascript), je crois qu'il suffit d'entourer d'un div ton <table> ... </table> (dans ton html)

je m'explique bien ou c'est fouilli ?
0
lol de mieux en mieux ^^
mais le souci c'est que c'est un écran d'affichage et que je dois dans un souci d'ergonomie économiser un maximum d'espace, il est pour mon projet primordial d'intégrer la liste déroulante au titre du tableau.... j'avais penser suivre ton raisonnement et faire une deuxième page qui onchange redirige vers celle qui fonctionne... je vais essayer dans cette voie. C'est dingue quand même que la valeur par défaut ne fonctionne pas.. mais ce serait trop simple évidemment.
0
Messages postés
1682
Date d'inscription
mardi 12 juillet 2011
Statut
Membre
Dernière intervention
20 juillet 2012
313
attention, je n'ai jamais dis de faire une seconde page avec une redirection sur l'évènement onchange !!!!

je ne fais que répété le même code depuis tout a l'heure ^^
relis le code que j'ai fait (et viens de modifier)
tu comprendras peut être mieux. il suffit juste de changer le html directement avec du javascript
<script type="text/javascript">
function MAJ(str)
{
var ajax;

ajax=new XMLHttpRequest();

ajax.onreadystatechange=function()
{
if (ajax.readyState==4 && ajax.status==200)
{

document.getElementById("liste_oiseau").innerHTML="<tr><td>NOUVEAU PIAFFFFFFFFFFFFFFF</td></tr>";
}
}
ajax.open("GET","oiseau.php?q="+str,true);
ajax.send();
}
</script>
<!--t'écrit ton code html pour la liste des tailles avec du php pour récupérer les tailles, puis tu fait un évènement onChange (ou onClick je sais plus) qui appel la fonction MAJ
<?php
$res=odbc_exec($con,"SELECT * FROM T_Oiseau");
echo "<table>";
echo "<div id=\"liste_oiseaux\">";
while($oiseau=odbc_fetch_array($res){//pas sur que odbc_fetch_array existe

echo "<tr><td>".$oiseau['taille']."</td>";
echo "<td>".$oiseau['repas']."</td></tr>"; //et autres...
}
echo "</div>";
echo "</table>";
?>
0
Messages postés
23
Date d'inscription
jeudi 26 avril 2012
Statut
Membre
Dernière intervention
22 mai 2012

ok merci pour tes conseil, je retourne sur ma base lundi, j vais essayer de refaire ca à la maison sur une autre base... en attendant bon week end!
0
Messages postés
23
Date d'inscription
jeudi 26 avril 2012
Statut
Membre
Dernière intervention
22 mai 2012

bon bon j'ai trouvé une solution qui me parait plus abordable et qui fonctionne chez moi sur autre base

$connexion = mysql_connect("localhost", "", "") 
    or die("Impossible de se connecter : " . mysql_error()); 
     
//choix de la base de données 
mysql_select_db("test"); 

if (!empty($_GET["q"])) 
{ 
$q=$_GET["q"]; 
       
//requete en fonction du choix de la liste deroulante  
$sql="SELECT * FROM T_Oiseau WHERE taille = '$q'";  
} 

else 
{       
//requete en fonction du choix de la liste deroulante  
$sql="SELECT * FROM T_Oiseau"; 
  
} 

//Exécuter la requete 
$resultats = mysql_query($sql); 
?> 


ca me parait presque trop facile^^ mais comme c'est pas sur l'évènement "onchange" la tableau charge à l'actualisation de la page... j'essaye ca lundi je tiendrais au courant si ça marche..et j'appellerais à l'aide si ça ne fonctionne pas^^
0
ok ça fonctionne très bien! reste a faire cohabiter plusieurs listes déroulantes.. mais ce n'est qu'une histoire de requête et de quelques centaine de litres de café^^...
J'ai un autre souci c'est de remplacer ma liste déroulante par plus d'option de recherche, un peu comme excel le propose, mais je vais poster un nouveau sujet et déclarer celui ci comme résolu...si je trouve comment faire:) !
merci encore vordano!
++
0