IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Affichage filtré


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Par défaut Affichage filtré
    Bonjour,
    Je veux afficher une liste d'offre d'emploi par catégorie(jobline composant de Joomla).
    Voilà mon formulaire de recherche (jobline.html.php) : (la partie qui nous interesse est celle avec la balise select)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <form method="get" action="index.php" onsubmit="return checkForm(this);" name="searchForm">
              <input type="hidden" name="option" value="<?php echo $option; ?>" />
              <input type="hidden" name="task" value="results" />
              <input type="hidden" name="Itemid" value="<?php echo $Itemid; ?>" />
              <input type="text" class="inputbox" name="search" value="<?php echo ($search ? $search : ""); ?>" />
     
              <select name="search_fonction_job" class="select">';
               <option value="%">Tous</option>';
    	  <?php	foreach ($rows as $row1) {
    			echo '<option value='.$row1->id_fonction_job;
    			if (isset($search_fonction_job) && $search_fonction_job !== '%' && $search_fonction_job == $row1->id_fonction_job) {echo ' selected';}
    			echo'>'.$row1->fonction_job.'</option>';  }?>
     
    		  </select>
              <input class="button" type="submit" value="<?php echo _JL_SEARCH; ?>" />
              </form>
    Je récupère la valeur du champ select (jobline.php) et je créait ma variable requete à insérer dans la requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Load request parameters.
     
    $search_fonction_job =  mosGetParam( $_REQUEST ,'search_fonction_job', '' );
    if ($search_fonction_job=='%')
    { $requete = ""; }
    else { $requete = "c.id_fonction_job='$search_fonction_job' AND"; }
    Puis dans la fonction qui affiche la liste j'insère ma requête (jobline.php) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    function listJobPostings( $type, $sort, $limit, $limitstart) {
    	global $database, $option, $is_editor, $my, $mainframe, $cfgjl, $Itemid;
     
    	.....
     
    	// Read properties from db.
    	$database->setQuery( "SELECT * "
    		. "\nFROM #__jl_jobposting AS c"
    		. "\nWHERE $requete c.state='1' "
    		. ($access ? "\n	AND c.access<='$gid'" : "" )
            . $publishedquery
    		. $typequery
    		. "\nORDER BY $ordering"
    		. "$limitquery"
    	);
    	$items = $database->loadObjectList();
    En fesant ca cela ne fonctionne pas, si je remplace manuellement $requete par " c.id_fonction_job='9' AND " (par exemple) cela fonctionne mais dès que je réinsère la variables $search_fonction_job à la place de '9' cela ne fonctionne plus. De plus quand je fais un echo $requete; il m'affiche correctement le bout de requete a insérer. Mais si je met l'echo $requete dans la fonction, rien ne se passe.
    J'en déduit donc que la variable n'arrive pas jusqu'à la fonction.
    Faut-il initialiser la variable pour cette fonction ?

  2. #2
    Membre éprouvé Avatar de bartrik
    Inscrit en
    Novembre 2003
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 104
    Par défaut
    on peut voir le résultat de ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Par défaut
    Quand je selectionne une fonction (categorie), il m'affiche ça :
    ( exemple la fonction qui correpond à l'identifiant 9)
    c.id_fonction_job='9' AND
    Quand je selectionne aucune fonction en particulier (toutes), il ne m'affiche rien

  4. #4
    Membre éprouvé Avatar de bartrik
    Inscrit en
    Novembre 2003
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 104
    Par défaut
    ta fonction listJobPostings a quel moment on lui indique le contenu de $requete ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Par défaut
    Et bien le contenu de $requete est seulement définie au début du script ou se trouve cette fonction.
    J'ai essayé de définir le contenu à l'intérieur même de la fonction mais cela ne fonctionne pas non plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function listJobPostings( $type, $sort, $limit, $limitstart ) {
    	global $database, $option, $is_editor, $my, $mainframe, $cfgjl, $Itemid;
     
    ....
     
    if ($search_fonction_job=='%')
    { $requete = ""; }
    else { $requete = "c.id_fonction_job='$search_fonction_job' AND"; }
     
    	// Read properties from db.
    	$database->setQuery( "SELECT * "
    		. "\nFROM #__jl_jobposting AS c"
    		. "\nWHERE $requete c.state='1' "
    		. ($access ? "\n	AND c.access<='$gid'" : "" )
            . $publishedquery
    		. $typequery
    		. "\nORDER BY $ordering"
    		. "$limitquery"

  6. #6
    Membre éprouvé Avatar de bartrik
    Inscrit en
    Novembre 2003
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 104
    Par défaut
    Citation Envoyé par gueud Voir le message
    Et bien le contenu de $requete est seulement définie au début du script ou se trouve cette fonction.
    J'ai essayé de définir le contenu à l'intérieur même de la fonction mais cela ne fonctionne pas non plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function listJobPostings( $type, $sort, $limit, $limitstart ) {
    	global $database, $option, $is_editor, $my, $mainframe, $cfgjl, $Itemid;
     
    ....
     
    if ($search_fonction_job=='%')
    { $requete = ""; }
    else { $requete = "c.id_fonction_job='$search_fonction_job' AND"; }
     
    	// Read properties from db.
    	$database->setQuery( "SELECT * "
    		. "\nFROM #__jl_jobposting AS c"
    		. "\nWHERE $requete c.state='1' "
    		. ($access ? "\n	AND c.access<='$gid'" : "" )
            . $publishedquery
    		. $typequery
    		. "\nORDER BY $ordering"
    		. "$limitquery"
    la c'est pareil $search_fonction_job n'est pas transmis a ta fonction, enfin il me semble.
    Perso je rajouterai $requete a l'appel de la fonction (la 1ere version), comme ça :
    listJobPostings( $type, $sort, $limit, $limitstart, $requete )

    Sinon faudrai que je fasse plus d'éssais, mais j'ai pas trop le temps ni un joomla d'installé.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Par défaut
    Toujours pas de résultat en faisant comme tu viens de m'indiquer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    function listJobPostings( $type, $sort, $limit, $limitstart, $search_fonction_job, $requete ) {
    	global $database, $option, $is_editor, $my, $mainframe, $cfgjl, $Itemid;
     
    ....
     
    $search_fonction_job =  mosGetParam( $_REQUEST ,'search_fonction_job', '' );
    if ($search_fonction_job=='%')
    { $requete = ""; }
    else { $requete = "c.id_fonction_job='$search_fonction_job' AND"; }
    echo  $requete;
     
    	// Read properties from db.
    	$database->setQuery( "SELECT * "
    		. "\nFROM #__jl_jobposting AS c"
    		. "\nWHERE $requete c.state='1' "
    		. ($access ? "\n	AND c.access<='$gid'" : "" )
            . $publishedquery
    		. $typequery
    		. "\nORDER BY $ordering"
    		. "$limitquery"
    	);
    L'echo $requete; ne renvoie rien du tout, qu'on selectionne une fonction ou pas... Je ne vois vraiment pas d'ou vient le problème ..

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    montre nous le code ou tu appelles listJobPostings de plus où donnes-tu une valeur a $search_fonction_job

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Par défaut
    La fonction ListJobPosting est appelée ici (jobline.php) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    switch ( $task ) {
    	case "add":
    		editJobPosting( 0 );
    		break;
    ....	
     
    	case "search":
    		showSearchForm( $search );
    		break;
    	case "list":
    	default:
    		listJobPostings( $type, $sort, $limit, $limitstart,$search_fonction_job, $requete );
    Et pour $search_fonction_job, je ne lui donne pas de valeur, c'est l'utilisateur qui choisit dans la liste une categorie (voir le code ci-dessus 1erpost) et elle est récupéré grâce à $search_fonction_job = mosGetParam( $_REQUEST ,'search_fonction_job', '' );

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Par défaut
    Existe-t-il un autre moyen pour récupérer la valeur d'un champ select et l'utiliser ensuite pour filtrer une recherche?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Par défaut
    Je viens d'identifier le problème :
    Lorsque je supprime dans le formulaire la ligne name=task value=results, la recherche sur le champ select fonctionne mais celle sur le champ texte ne fonctionne plus. Auriez vous une solution pour que je puisse combiner les deux ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
      <form method="post" action="index.php" onsubmit="return checkForm(this);" name="searchForm">
              <input type="hidden" name="option" value="<?php echo $option; ?>" />
              <input type="hidden" name="task" value="results" />
              <input type="hidden" name="Itemid" value="<?php echo $Itemid; ?>" />
              <input type="text" class="inputbox" name="search" value="<?php echo ($search ? $search : ""); ?>" />
     
              <select name="search_fonction_job" class="select">';
               <option value="%">Tous</option>';
    	  <?php	foreach ($rows as $row1) {
    			echo '<option value='.$row1->id_fonction_job;
    			if (isset($search_fonction_job) && $search_fonction_job !== '%' && $search_fonction_job == $row1->id_fonction_job) {echo 'selected';}
    			echo'>'.$row1->fonction_job.'</option>';  }?>
     
    		  </select>
              <input class="button" type="submit" value="<?php echo _JL_SEARCH; ?>" />
              </form>

Discussions similaires

  1. Affichage filtre de contexte en entete
    Par ptikiki dans le forum Cognos
    Réponses: 4
    Dernier message: 05/04/2013, 12h16
  2. Problème affichage filtre
    Par gabgom dans le forum Signal
    Réponses: 0
    Dernier message: 06/10/2011, 16h06
  3. [XL-2007] affichage filtre graph croisé dynamique
    Par excel2007excel dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 29/04/2009, 15h19
  4. Réponses: 2
    Dernier message: 13/10/2005, 14h24
  5. Filtre d'affichage de balise selon leur attributs
    Par Norely dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 03/04/2003, 14h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo