setDomain(1);
$acces_j = $dom_1->getJoin($PMBuserid,4,'notice_id');
}
// on commence par voir ce que la saisie utilisateur est ($ex_query)
$ex_query = clean_string($ex_query);
$EAN = '';
$isbn = '';
$code = '';
// --------- LLIUREX ---------- 04/02/2013
function f_rellena_ceros($as_dato) {
if(strlen($as_dato)>0 && strlen($as_dato)<9){
for($i=strlen($as_dato); $i<9; $i++)
$as_dato="0".$as_dato;}
return $as_dato;
}
// --------- LLIUREX ----------
if(isEAN($ex_query)) {
// la saisie est un EAN -> on tente de le formater en ISBN
$EAN=$ex_query;
$isbn = EANtoISBN($ex_query);
// si échec, on prend l'EAN comme il vient
if(!$isbn)
$code = str_replace("*","%",$ex_query);
else {
$code=$isbn;
$code10=formatISBN($code,10);
}
} else {
if(isISBN($ex_query)) {
// si la saisie est un ISBN
$isbn = formatISBN($ex_query);
// si échec, ISBN erroné on le prend sous cette forme
if(!$isbn)
$code = str_replace("*","%",$ex_query);
else {
$code10=$isbn ;
$code=formatISBN($code10,13);
}
} else {
// ce n'est rien de tout ça, on prend la saisie telle quelle
$code = str_replace("*","%",$ex_query);
// filtrer par typdoc_query si selectionné
if($typdoc_query) $where_typedoc=" and typdoc='$typdoc_query' ";
}
}
if(!$nb_results) {
// on compte
if ($EAN && $isbn) {
// cas des EAN purs : constitution de la requête
$requete = "SELECT distinct notices.* FROM notices ";
$requete.= $acces_j;
$requete.= "left join exemplaires on notices.notice_id=exemplaires.expl_notice ";
$requete.= "WHERE niveau_biblio='m' AND (exemplaires.expl_cb like '$code' OR exemplaires.expl_cb='$ex_query' OR notices.code in ('$code','$EAN'".($code10?",'$code10'":"").")) ";
$myQuery = mysql_query($requete, $dbh);
} elseif ($isbn) {
// recherche d'un isbn
$requete = "SELECT distinct notices.* FROM notices ";
$requete.= $acces_j;
$requete.= "left join exemplaires on notices.notice_id=exemplaires.expl_notice ";
$requete.= " WHERE niveau_biblio='m' AND (exemplaires.expl_cb like '$code' OR exemplaires.expl_cb='$ex_query' OR notices.code in ('$code'".($code10?",'$code10'":"").")) ";
$myQuery = mysql_query($requete, $dbh);
if(mysql_num_rows($myQuery)==0) {
// rien trouvé en monographie
// cas où un exemplaire de bulletin correspond à un ISBN
$requete = "SELECT distinct notices.*, bulletin_id FROM notices ";
$requete.= $acces_j;
$requete.= "left join bulletins on bulletin_notice=notice_id left join exemplaires on (bulletin_id=expl_bulletin and expl_notice=0) ";
$requete.= "WHERE niveau_biblio='s' AND (exemplaires.expl_cb like '$ex_query' OR bulletin_numero like '$ex_query' OR bulletin_cb like '$ex_query' OR notices.code like '$ex_query') ";
$requete.= "GROUP BY bulletin_id ";
$rqt_bulletin=1;
}
} elseif ($code) {
// recherche d'un exemplaire
// note : le code est recherché aussi dans le champ code des notices
// (cas des code-barres disques qui échappent à l'EAN)
//
$requete = "SELECT distinct notices.* FROM notices ";
$requete.= $acces_j;
$requete.= "left join exemplaires on notices.notice_id=exemplaires.expl_notice ";
$requete.= "WHERE niveau_biblio='m' AND (exemplaires.expl_cb like '$code' OR notices.code like '$code') $where_typedoc ";
$myQuery = mysql_query($requete, $dbh);
if(mysql_num_rows($myQuery)==0) {
// rien trouvé en monographie
$requete = "SELECT distinct notices.*, bulletin_id FROM notices ";
$requete.= $acces_j;
$requete.= "left join bulletins on bulletin_notice=notice_id left join exemplaires on (bulletin_id=expl_bulletin and expl_notice=0) ";
$requete.= "WHERE niveau_biblio='s' AND (exemplaires.expl_cb like '$code' OR bulletin_numero like '$code' OR bulletin_cb like '$code' OR notices.code like '$code') $where_typedoc ";
$requete.= "GROUP BY bulletin_id ";
$rqt_bulletin=1;
}
} else {
error_message($msg[235], $msg[307]." $ex_query".($pmb_allow_external_search?"
".$msg["connecteurs_external_search_sources"]."":""), 1, "./catalog.php?categ=search&mode=0");
die();
}
$nb_results= mysql_num_rows($myQuery);
$limit_page= " limit $nb_per_page_search ";
$page=0;
} else {
$limit_page= " limit ".$page*$nb_per_page_search.", $nb_per_page_search ";
// echo "EAN : $EAN
isbn : $isbn
code : $code
";
if ($EAN && $isbn) {
// cas des EAN purs : constitution de la requête
$requete = "SELECT distinct notices.* FROM notices ";
$requete.= $acces_j;
$requete.= "left join exemplaires on notices.notice_id=exemplaires.expl_notice ";
$requete.= "WHERE niveau_biblio='m' AND (exemplaires.expl_cb like '$code' OR exemplaires.expl_cb='$ex_query' OR notices.code in ('$code','$EAN'".($code10?",'$code10'":"").")) ";
$requete.= $limit_page;
$myQuery = mysql_query($requete, $dbh);
} elseif ($isbn) {
// recherche d'un isbn
$requete = "SELECT distinct notices.* FROM notices ";
$requete.= $acces_j;
$requete.= "left join exemplaires on notices.notice_id=exemplaires.expl_notice ";
$requete.= "WHERE niveau_biblio='m' AND (exemplaires.expl_cb like '$code' OR exemplaires.expl_cb='$ex_query' OR notices.code in ('$code'".($code10?",'$code10'":"").")) ";
$requete.= $limit_page;
$myQuery = mysql_query($requete, $dbh);
if(mysql_num_rows($myQuery)==0) {
// rien trouvé en monographie
// cas où un exemplaire de bulletin correspond à un ISBN
$requete = "SELECT distinct notices.*, bulletin_id FROM notices ";
$requete.= $acces_j;
$requete.= "left join bulletins on bulletin_notice=notice_id left join exemplaires on (bulletin_id=expl_bulletin and expl_notice=0) ";
$requete.= "WHERE niveau_biblio='s' AND (exemplaires.expl_cb like '$ex_query' OR bulletin_numero like '$ex_query' OR bulletin_cb like '$ex_query' OR notices.code like '$ex_query') ";
$requete.= "GROUP BY bulletin_id ".$limit_page;
$rqt_bulletin=1;
}
} elseif ($code) {
// recherche d'un exemplaire
// note : le code est recherché aussi dans le champ code des notices
// (cas des code-barres disques qui échappent à l'EAN)
//
$requete = "SELECT distinct notices.* FROM notices ";
$requete.= $acces_j;
$requete.= "left join exemplaires on notices.notice_id=exemplaires.expl_notice ";
$requete.= "WHERE niveau_biblio='m' AND (exemplaires.expl_cb like '$code' OR notices.code like '$code') $where_typedoc ";
$requete.= $limit_page;
$myQuery = mysql_query($requete, $dbh);
// --------- LLIUREX ------ 04/02/2013
//rellena ceros
if(mysql_num_rows($myQuery)==0) {
// rien trouvé en monographie
$requete = "SELECT distinct notices.*, bulletin_id FROM notices ";
$requete.= $acces_j;
$requete.= "left join bulletins on bulletin_notice=notice_id left join exemplaires on (bulletin_id=expl_bulletin and expl_notice=0) ";
$requete.= "WHERE niveau_biblio='m' AND (exemplaires.expl_cb like '".f_rellena_ceros($code)."' OR bulletin_numero like '$code' OR bulletin_cb like '$code' OR notices.code like '".f_rellena_ceros($code)."') $where_typedoc ";
}
// --------- LLIUREX ------
if(mysql_num_rows($myQuery)==0) {
// rien trouvé en monographie
$requete = "SELECT distinct notices.*, bulletin_id FROM notices ";
$requete.= $acces_j;
$requete.= "left join bulletins on bulletin_notice=notice_id left join exemplaires on (bulletin_id=expl_bulletin and expl_notice=0) ";
$requete.= "WHERE niveau_biblio='s' AND (exemplaires.expl_cb like '$code' OR bulletin_numero like '$code' OR bulletin_cb like '$code' OR notices.code like '$code') $where_typedoc ";
$requete.= "GROUP BY bulletin_id ".$limit_page;
$rqt_bulletin=1;
}
} else {
error_message($msg[235], $msg[307]." $ex_query".($pmb_allow_external_search?"
".$msg["connecteurs_external_search_sources"]."":""), 1, "./catalog.php?categ=search&mode=0");
die();
}
}
if ($rqt_bulletin!=1) {
if(mysql_num_rows($myQuery)) {
if(mysql_num_rows($myQuery) > 1 || $page) {
// la recherche fournit plusieurs résultats !!!
// boucle de parcours des notices trouvées
// inclusion du javascript de gestion des listes dépliables
// début de liste
print sprintf("