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

Zend_Db PHP Discussion :

mettre en place une recherche par rémunération sous forme d'intervalle


Sujet :

Zend_Db PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Novembre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur étude et développement

    Informations forums :
    Inscription : Novembre 2009
    Messages : 125
    Points : 55
    Points
    55
    Par défaut mettre en place une recherche par rémunération sous forme d'intervalle
    Bonjour,
    je développe un moteur de recherche multi critère, ce dernier marche très bien sauf pour le dernier critère qui est la fourchette de rémunération qui consiste à taper un intervale de rémunératin ( pour la recherche d'offre : je développe un module de recrutement) ma requête est comme suit:
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    function getResultSearch($langCode,$motscles, $domaine , $local,$contrat,$Remuneration){
    			  $tmotscles = explode(" ",$motscles);
    				  if($domaine != 0)
    				  {
    				    $where_domaine = " AND o.domaineId = '{$domaine}' ";
    				  }
     
    				  if($contrat != 0)
    				  {
    				    $where_contrat = " AND o.contratId = '{$contrat}' ";
    				  }
     
    				  if($local != 0)
    				  {
    				    $where_local = " AND o.localId = '{$local}' ";
    				  }
    				 if($Remuneration != 0)
    				  {
    				    $where_remuneration = " AND (o.offreRemunerationMin <= '{$Remuneration}' ";
    				  }
    				$sc = "
    			    	SELECT 	{$this->alias}.offreId, 
    				      	 	{$this->alias}.offreTitre, 
    				       		{$this->alias}.offreText, 
    				       		{$this->alias}.langCode, 
    				       		{$this->alias}.offreMotsCles,
    				       		o.contratId,
    				       		o.localId,
    				       		o.domaineId,
    				       		o.offreActive, 
    				       		o.offreRemunerationMin, 
    				       		o.offreRemunerationMax,
    					   		dt.domaineTitre,
    					   		ct.contratTitre,
    					   		lt.localTitre,
    				       		o.offreDateModif 
    			    	FROM {$this->table} {$this->alias} 
    			    	INNER JOIN recrutement_offre o ON {$this->alias}.offreId = o.offreId 
    				   	INNER JOIN recrutement_domaine_text dt 
    				   		ON o.domaineId = dt.domaineId
    				   		AND dt.langCode = '{$langCode}'
    				   	INNER JOIN recrutement_contrat_text ct 
    				   		ON o.contratId = ct.contratId
    				   		AND ct.langCode = '{$langCode}'
    				   	INNER JOIN recrutement_local_text lt   
    				   		ON o.localId = lt.localId
    				   		AND lt.langCode = '{$langCode}'
    					LEFT JOIN thermidor_language l ON  {$this->alias}.langCode = l.langCode    
    					WHERE {$this->alias}.langCode = '{$langCode}' 
    					AND  o.`offreActive` = 1 
    					{$where_domaine} 
    					{$where_contrat} 
    					{$where_local}
    					{$where_remuneration}
    					";
     
    						if(is_array($tmotscles))
    						{
    						  	foreach ($tmotscles as $mc){
    						   		$sc .= " AND {$this->alias}.offreMotsCles LIKE '%{$mc}%'";
    						   	}
     
    						  }
     
    					$sc .= " GROUP BY {$this->alias}.`offreId` ";
     
    				  if($rc = Database::execute_sql($sc))
    				  {
    				    return $this->parseResults($rc);
    				  }
    		}
    en fait je compare que la valeur minimale de la rémunération, pour les autres critéres ça marche.
    ce qui ne donne pas de bon résultats c le bout de code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     if($Remuneration != 0)
    				  {
    				    $where_remuneration = " AND (o.offreRemunerationMin <= '{$Remuneration}' ";
    				  }
    Merci d'avnce pour votre aide.

  2. #2
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Bonjour,
    Dire que ça ne fonctionne pas ne suffit pas, il faudrait expliquer ce qui ne vas pas (résultat donnée, résultat attendu)

  3. #3
    Membre du Club
    Femme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Novembre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur étude et développement

    Informations forums :
    Inscription : Novembre 2009
    Messages : 125
    Points : 55
    Points
    55
    Par défaut
    Ce qui va bien c'est que les 4 autres critères marchent bien, je veux dire la recherche marche, sauf pour la rémunération.
    merci

  4. #4
    Membre du Club
    Femme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Novembre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur étude et développement

    Informations forums :
    Inscription : Novembre 2009
    Messages : 125
    Points : 55
    Points
    55
    Par défaut
    Finalement, j'ai pu trouvé le problème, c'est qu'il fallait tester le type du paramètre , le bout de code à modifier est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     if(is_numeric($Remuneration))
    				  { 
    					  if($Remuneration != 0)
    					  {
    					    $where_remuneration = " AND (o.offreRemunerationMin >= {$Remuneration} ) ";
    					  }
    				  }
    				  else{
    				  $where_local = " AND o.offreRemunerationMin  LIKE '%{$Remuneration}%'";
    				  }
    donc voila .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] e mettre en place une base de données sous intranet
    Par Debutant10 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/03/2012, 23h34
  2. Mettre en place une recherche
    Par solorac dans le forum Langage
    Réponses: 2
    Dernier message: 10/11/2011, 11h04
  3. Mettre en place une passerelle sous linux
    Par gorgonite dans le forum Contribuez
    Réponses: 49
    Dernier message: 02/11/2010, 09h20
  4. [phpMyAdmin] Mettre en place une clé étrangère sous phpMyAdmin
    Par habasque dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 30/11/2006, 21h47
  5. Comment mettre en place une structure 3 tiers.
    Par WOLO Laurent dans le forum Débats sur le développement - Le Best Of
    Réponses: 13
    Dernier message: 27/07/2003, 22h01

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