PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 10-02-2015 13:14:57

Kayakeuse
Membre
Inscription : 13-09-2013
Messages : 10

PDO - SELECT ... WHERE IN checkboxes[] + multiselect[]

Bonjour,

Après des HEURES de recherches sur le WORLD WIDE web et de tests, restées vains, je vous pose la question :
Tout le code absent qui se trouve avant et après fonctionne, mais je bug sur mon multiselect[] et mes checkboxes[]
Merci beaucoup pour votre aide, Dieu ou qui que ce soit d'autre vous le rendra ! smile


 if (!empty($_REQUEST['secteur_searched']) AND is_array($_REQUEST['secteur_searched']))
    { $secteur_searched=implode(',',$_REQUEST['secteur_searched']);
    $where[] = "j.job_secteur IN (:job_secteur) " ;
    $param[':job_secteur']= $secteur_searched;  var_dump($secteur_searched);
  }

 if(!empty($_REQUEST['type_de_contrat']) AND count($_REQUEST['type_de_contrat']) > 0 )
   {$type_de_contrat = count($_REQUEST["type_de_contrat"]) ? implode(",",$_REQUEST["type_de_contrat"]) : '';
    $where[]=  "j.job_contrat IN (:job_contrat) " ;
    $param[':job_contrat']= $type_de_contrat; var_dump($type_de_contrat);
   }    
   
if (!empty($where))
   {
   $query.= ' WHERE ' . implode(' AND ', $where);
   }

 $query.= " ORDER BY j.job_date_insertion DESC";
 
$sth =$marInterim ->prepare($query);
$sth->execute($param);

 

Dernière modification par Kayakeuse (10-02-2015 13:28:02)

Hors ligne

#2 10-02-2015 13:49:03

Mmezaza
Membre
Lieu : Gondwanacity
Inscription : 09-02-2015
Messages : 7

Re : PDO - SELECT ... WHERE IN checkboxes[] + multiselect[]

dernier avertissement avant expulsion !!!!

Hors ligne

#3 10-02-2015 13:55:33

Kayakeuse
Membre
Inscription : 13-09-2013
Messages : 10

Re : PDO - SELECT ... WHERE IN checkboxes[] + multiselect[]

Signalée comme parasite...

Hors ligne

#4 10-02-2015 16:17:42

tof73
Membre
Inscription : 21-12-2014
Messages : 156
Site Web

Re : PDO - SELECT ... WHERE IN checkboxes[] + multiselect[]

que retourne
var_dump($_REQUEST);
?

Hors ligne

#5 10-02-2015 17:20:16

Kayakeuse
Membre
Inscription : 13-09-2013
Messages : 10

Re : PDO - SELECT ... WHERE IN checkboxes[] + multiselect[]

Mais MmeDébile t'as pas mieux à faire, de plus intelligent ??????

-@Tof73, Merci pour ta réponse, je viens juste de recevoir la notification - 1 heure après ton post apparemment....

Je n'ai pas été très honnête, en voulant faire court je n'ai pas posté tout mon code. Erreur grossière de ma part. Faire court pour ne pas rebuter n'est pas une bonne idée...
Lorsque je renseigne le champ job_intitule ou alors le champ job_keyword, mes requêtes se passent bien : je récupère dans mon div les emplois correspondants à ma recherche.
Mais je choisis une recherche par secteur (multiselect name='secteur_seached[]') ou par type_de_contrat (checkboxes name='type_de_contrat[]'), rien ne s'affiche.

J'espère que tu sauras trouver mon erreur, en fait j'y connais rien en PDO, moi qui croyait que c'était aussi simple que mysql_query...

MERCI

var_dump($secteur_searched) retourne (1,2,10,50,56000), bref toutes les options values sélectionnées
idem sur var_dump($type_de_contrat) qui retourne (CDI,CDD,etc)

var_dump($_REQUEST)
array (size=5)
  'job_searched' => string '' (length=0)
  'job_keyword' => string '' (length=0)
  'secteur_searched' =>
    array (size=7)
      0 => string '1' (length=1)
      1 => string '2' (length=1)
      2 => string '3' (length=1)
      3 => string '4' (length=1)
      4 => string '5' (length=1)
      5 => string '6' (length=1)
      6 => string '13' (length=2)
  'type_de_contrat' =>
    array (size=2)
      0 => string 'CDI' (length=3)
      1 => string 'CDD' (length=3)
  'submit_search' => string 'VALIDER' (length=7)


try{
$query =  "SELECT * FROM marinterim_job_offers j
          JOIN marimmo_villes v ON v.ville_id =j.job_ville  ";
 $where = array();
 $param = array();
 
  if (!empty($_REQUEST['job_searched']))
     {  $where[] = "j.job_intitule=:job_intitule ";
        $param[':job_intitule'] = $_REQUEST['job_searched'];
     }
 
 if (!empty($_REQUEST['job_keyword']))
    { $where[] =  " j.job_descriptif LIKE CONCAT('%', :job_descriptif, '%') " ;
      $param[':job_descriptif'] = $_REQUEST['job_keyword'];
    }
 
 $secteur_searched="";
 if (!empty($_REQUEST['secteur_searched']) AND is_array($_REQUEST['secteur_searched']))
    { foreach ($_REQUEST["secteur_searched"] as $selectedOption)
      $secteur_searched.=$selectedOption.",";  
  }
 if ($secteur_searched)
     { $secteur_searched = rtrim($secteur_searched, ',');
    $where[] = "j.job_secteur IN (:job_secteur) " ;
    $param[':job_secteur']= $secteur_searched; // var_dump($secteur_searched);
   }
   
 $type_de_contrat="";      
 if(!empty($_REQUEST['type_de_contrat']) AND count($_REQUEST['type_de_contrat']) > 0 )
   {foreach ($_REQUEST["type_de_contrat"] as $selectedCheckbox)
     $type_de_contrat.=$selectedCheckbox.",";  
  }
 if ($type_de_contrat)
     { $type_de_contrat = rtrim($type_de_contrat, ',');
    $where[]=  "j.job_contrat IN (:job_contrat) " ;
  $param[':job_contrat']= $type_de_contrat; var_dump($type_de_contrat);
   }    
   
if (!empty($where))
   {
   $query.= ' WHERE ' . implode(' AND ', $where); // WHERE crite1 AND critere2 AND critere 3,
   }

 $query.= " ORDER BY j.job_date_insertion DESC";  echo $query;

$sth =$marInterim ->prepare($query);
$sth->execute($param);
//print_r($sth->errorInfo());

$compte = $sth->fetchAll();
$nb_resultats = count($compte);
$errors['nb_resultats_recherche'] = $nb_resultats; // ok

/********************/
   if ( !empty($_REQUEST['afficher_x_resultats']))
    { $per_page=$_REQUEST['afficher_x_resultats'];
    }
 else {$per_page=10; }


/* Results per page */
$nb_pages = ceil($nb_resultats/$per_page);  
$current_page = isset($_REQUEST['page']) && ($_REQUEST['page'] > 0) && ($_REQUEST['page'] <= $nb_pages) ? $_REQUEST['page'] : 1;
$start = ($current_page-1)*$per_page; //  $param[':start']= $start;

$query2= $query." LIMIT $start,$per_page ";
 echo '<br /> $query2 =  '.$query2;

$sth2 =$marInterim ->prepare($query2);  
$sth2-> execute($param);
//print_r($sth2->errorInfo());


 while($datos= $sth2->fetch(PDO::FETCH_ASSOC))
      { $en_date_insertion=$datos['job_date_insertion'];   
     $explode_insertion= explode("-", $en_date_insertion);
     $date_insertion_fr = $explode_insertion[2]."-".$explode_insertion[1]."-".$explode_insertion[0];     
     $job_id= $datos['job_id'];
     $job_intitule= strtoupper($datos['job_intitule']);
     $job_ville = $datos['ville_nom'];
     $job_cp = $datos['cp'];
           
    echo "
                       <div class='offers btns'>
                       <a class='link_vers_offre' href='job_offer_detail.php?job_id=$job_id'>
                       <table id='table_liste_des_offres'>
                       <tr>
                       <td class='liste_intitule'> " .$job_intitule." </td>
                       <td class='liste_ref'>Offre n°" .$job_id."   du   ".$date_insertion_fr ." </td>
                       <td class='liste_ville'> ".$job_cp. " ".$job_ville." </td>
                       </tr>
                       </table>
                       </a>
                       </div>
                           ";
             
    }
 
} catch(Exception $e)
        { exit('<b>Catched exception at line '. $e->getLine() .' :</b> '. $e->getMessage());
        }
}

 

Dernière modification par Kayakeuse (10-02-2015 17:24:37)

Hors ligne

#6 10-02-2015 18:26:57

tof73
Membre
Inscription : 21-12-2014
Messages : 156
Site Web

Re : PDO - SELECT ... WHERE IN checkboxes[] + multiselect[]

Hors ligne

#7 10-02-2015 18:29:14

Kayakeuse
Membre
Inscription : 13-09-2013
Messages : 10

Re : PDO - SELECT ... WHERE IN checkboxes[] + multiselect[]

J'ai passé l'après-midi sur StackOverFlow ... et j'ai déjà cherché des heures avant de poster , et ce link évidemment je l'ai vu 1000 fois, et l'ai testé en vain

Hors ligne

#8 10-02-2015 18:30:41

Kayakeuse
Membre
Inscription : 13-09-2013
Messages : 10

Re : PDO - SELECT ... WHERE IN checkboxes[] + multiselect[]

Kayakeuse a écrit :

Bonjour,

Après des HEURES de recherches sur le WORLD WIDE web et de tests, restées vains, je vous pose la question :

Hors ligne

#9 11-02-2015 09:14:52

Mmezaza
Membre
Lieu : Gondwanacity
Inscription : 09-02-2015
Messages : 7

Re : PDO - SELECT ... WHERE IN checkboxes[] + multiselect[]

Kayakeuse a écrit :

Mais MmeDébile t'as pas mieux à faire, de plus intelligent ??????

C'est Mme Zaza s'il vous plait!
Le PDO(Projet démocratique organisé) n'est pas plus "complexe" que le mysql_query, c'est juste une manière différente d'aborder un code qui considère que le tout est objet, le seul moyen de vérifier ici d'où l'erreur vient et d'utiliser un IDE(Indice de développement ergométrique) pour débuger pas à pas. Ou alors de revenir à la première méthode de la Théorie générale des organisations :faire des échos, car oui ça fait allusion : c’est à dire ici, c’est le contraire, au lieu de panacée, la pédagogie à l'égard de la complexité consent à gérer ce système phénoménal avéré, tu sais ça.
je vous en prie.

Dernière modification par Mmezaza (11-02-2015 09:16:13)

Hors ligne

Pied de page des forums