Hola a todos, Buenas,
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>
y/o en mis checkboxes
Código HTML:
<input type="checkbox" name="type_de_contrat[]" value="CDI" >
<input type="checkbox" name="type_de_contrat[]" value="CDD" >
He visto que un array dentro de WHERE IN en pdo tiene que escribirse myArray =('1','2','3','4'), pero ¿cómo conseguir esta sintaxis desde un multiselect[] ? o unas checkboxes[] ? ¿ Y que poner en $param[]...?
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());
}