"42", //Tous les champs "4"=> "1", // titre "1003"=> "2", // auteur "1018"=> "3", // editeur "31"=> "23", // année d'édition "5"=> "4", // collection "7"=> "22", // ISBN "8"=> "22", // ISSN "21"=> "13" // Mots clés ); $corresp_op=array( "1016"=> "BOOLEAN", "4"=> "BOOLEAN", "1003"=> "BOOLEAN", "1018"=> "BOOLEAN", "31"=> "CONTAINS_AT_LEAST", "5"=> "BOOLEAN", "7"=> "STARTWITH", "8"=> "STARTWITH", //"21"=> "11", "21"=> "BOOLEAN" ); function make_error($nerr,$err_message) { echo $nerr."@".$err_message."@"; exit(); } $mysql_connect = @pmb_mysql_connect(SQL_SERVER,USER_NAME,USER_PASS); if (!$mysql_connect) { make_error(1,"Could'nt connect to database server"); } if (!@pmb_mysql_select_db(DATA_BASE, $mysql_connect)) { make_error(2,"Database unknown"); } //Commande envoyée $command=$_GET["command"]; //Requete $query=$_GET["query"]; function traite_val($value,$idf) { switch ($idf) { case "22": if(isISBN($value)) { // si la saisie est un ISBN $code = formatISBN($value); // si échec, ISBN erroné on le prend sous cette forme if(!$code) $code = $value; } else $code = $value; $ret=$code; break; default: $ret=$value; break; } return $ret; } function construct_query($query,$not,$level,$argn="",$oper="") { global $corresp,$search,$corresp_op; //La requête commence-t-elle par and, or ou and not ? $pos=strpos($query,"and not"); if (($pos!==false)&&($pos==0)) { $ope="ex"; } else { $pos=strpos($query,"or"); if (($pos!==false)&&($pos==0)) { $ope="or"; } else { $pos=strpos($query,"and"); if (($pos!==false)&&($pos==0)) { $ope="and"; } else $ope=""; } } if ($ope!="") { //Si opérateur, recherche des arguments $arqs=array(); preg_match("/^".($ope=="ex"?"and not":$ope)." arg".$level."!1\((.*)\) arg".$level."!2\((.*)\)$/",$query,$args); //print "/^".$ope." arg".$level."!1\((.*)\) arg".$level."!2\((.*)\)$/"; //print_r($args); $return1=construct_query($args[1],0,$level+1,1,$ope); if (($oper)&&($return1)) { $inter="inter_".($level-2+$argn)."_f_".$return1; global ${$inter}; if (!${$inter}) ${$inter}=$oper; //print $inter."=".${$inter}."
"; } $return2=construct_query($args[2],0,$level+1,2,$ope); if ($return2) { //print $level." ".$argn; if ($argn=="") $argn=2; $inter="inter_".($level-1+$argn)."_f_".$return2; global ${$inter}; if (!${$inter}) ${$inter}=$ope; //print $inter."=".${$inter}."
"; } return; } else { $use=explode("=",$query); $idf=$corresp[$use[0]]; if (!$idf) make_error(3,"1=".$use[0]); else { if(empty($search)) { $search = array(); } $search[]="f_".$idf; $vals=array(); $vals[0]=traite_val($use[1],$idf); $field="field_".(!$level?0:($level-2+$argn))."_f_".$idf; global ${$field}; ${$field}=$vals; $op="op_".(!$level?0:($level-2+$argn))."_f_".$idf; global ${$op}; ${$op}=$corresp_op[$use[0]]; return $idf; } } return; } switch ($command) { case "search": //print $query."
"; construct_query($query,0,0); $s=new search(); $table=$s->make_search(); //print $s->make_human_query(); $sql_query="select notice_id from $table limit 100"; $resultat=@pmb_mysql_query($sql_query); echo "0@No errors@"; echo @pmb_mysql_num_rows($resultat); while (list($id)=@pmb_mysql_fetch_row($resultat)) { echo "@$id"; } break; case "get_notice": $id=$query; $e = new export(array($id)); $e -> get_next_notice(); $toiso = new xml_unimarc(); $toiso->XMLtoiso2709_notice($e->notice); echo "0@No errors@"; echo $toiso->notices_[0]; break; } ?>