Llevo 2 días luchando con SELECT WHERE IN en pdo....
Quiero que mysql devuelva los resultados correspondientes a los valores seleccionados en mi multiselect
Código HTML:
<select multiple="multiple" name="secteur_searched[]" > <option value="1">Accueil - Secrétariat - Fonctions Administratives</option> <option value="2">Achats - Juridique - Qualité; - RH - Direction</option> etc... </select>
Código HTML:
<input type="checkbox" name="type_de_contrat[]" value="CDI" > <input type="checkbox" name="type_de_contrat[]" value="CDD" >
Muchísimas gracias por anticipado,
Código:
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()); $sth2->debugDumpParams(); */ function parms($query2,$param) { $indexed=$param==array_values($param); foreach($param as $k=>$v) { if(is_string($v)) $v="'$v'"; if($indexed) $query2=preg_replace('/\?/',$v,$query2,1); else $query2=str_replace("$k",$v,$query2); } return $query2; } print parms($query2,$param); 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()); }