salut,
tu peux le faire en AJAX
il y a quelques années, j'ai codé un script avec cette technologie
c'était un moteur de recherche relié à un dictionnaire Français-Anglais en base de données
voici le script en 2 fichiers :
searchDef.php :
<?PHP
include_once("../includes/definitions.inc.php");
include_once("../includes/common.inc.php");
include_once("../includes/gestionFichiersTxtParam.inc.php");
include_once("../includes/gestionParamConnServMysql.inc.php");
include_once("../includes/gestionMysql.inc.php");
session_name(NOM_SESSION_VOCAB);
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>VOCAB</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<link rel="stylesheet" type="text/css" href="../CSS/vocab.css" />
<script src="../javascript/gestionString.js"></script>
<script>
//<![CDATA[
//Note : extLI_E2F et extLI_F2E correspondent aux LI etendus cad la valeur -1 existe et signifie que la def est unilaterale
//Note : restLI_E2F et restLI_F2E correspondent aux LI restreints cad la valeur -1 n'existe pas
var nbDefParPage = 10; //nbDefParPage doit etre superieur ou egal a 2
var xmlDocRes;
var numPage;
function formatXmlDocRes(){
var eltsEn = xmlDocRes.getElementsByTagName("english");
var eltsFr = xmlDocRes.getElementsByTagName("french");
for(var i = 0; i < eltsEn.length; i++){
if(eltsEn[i].childNodes.length == 0){
eltsEn[i].appendChild(document.createTextNode(""));
};
if(eltsFr[i].childNodes.length == 0){
eltsFr[i].appendChild(document.createTextNode(""));
};
}
}
//gere l'affichage dans la partie "Modification d'une definition"
function gestionDispMod(typeDef){
switch(typeDef){
case "EnToFr":
document.getElementById("newRestLI_F2E").disabled = true;
document.getElementById("newRestLI_E2F").disabled = false;
document.getElementById("newFlagFr").disabled = true;
document.getElementById("newFlagEn").disabled = false;
break;
case "FrToEn":
document.getElementById("newRestLI_F2E").disabled = false;
document.getElementById("newRestLI_E2F").disabled = true;
document.getElementById("newFlagFr").disabled = false;
document.getElementById("newFlagEn").disabled = true;
break;
case "both":
document.getElementById("newRestLI_F2E").disabled = false;
document.getElementById("newRestLI_E2F").disabled = false;
document.getElementById("newFlagFr").disabled = false;
document.getElementById("newFlagEn").disabled = false;
break;
};
}
//calcule le nombre de pages correspondant au document XML "xmlDocRes" en fonction du nombre de definitions par page "nbDefParPage"
function calcNbPages(){
var nbDefTotal = (xmlDocRes.getElementsByTagName("english")).length;
return Math.ceil(nbDefTotal / nbDefParPage);
}
//met a jour l'affichage du nombre de definitions trouvees
function majParaNbFoundDef(){
var nbDefTotal = xmlDocRes.getElementsByTagName("english").length;
if(nbDefTotal <= 1){
document.getElementById("nbFoundDef").innerHTML = nbDefTotal + " définition trouvée";
}
else{
document.getElementById("nbFoundDef").innerHTML = nbDefTotal + " définitions trouvées";
};
}
//met a jour l'affichage du tableau des definitions trouvees
function majTabDef(){
var nbDefTotal = xmlDocRes.getElementsByTagName("english").length;
if(nbDefTotal == 0){
document.getElementById("tableSearchRes").style.display = "none";
document.getElementById("navigPrec").style.display = "none";
document.getElementById("navigSuiv").style.display = "none";
}
else{
var nbDispDef;
var rangFirstDispDef = nbDefParPage * (numPage - 1);
var eltsDef = xmlDocRes.getElementsByTagName("definition");
var eltsEn = xmlDocRes.getElementsByTagName("english");
var eltsFr = xmlDocRes.getElementsByTagName("french");
var eltsExtLI_E2F = xmlDocRes.getElementsByTagName("extLI_E2F");
var eltsExtLI_F2E = xmlDocRes.getElementsByTagName("extLI_F2E");
var eltsFlag = xmlDocRes.getElementsByTagName("flag");
var tempNumDef, tempEn, tempFr, tempExtLI_E2F, tempExtLI_F2E, tempFlag;
document.getElementById("tableSearchRes").style.display = "table";
if((numPage * nbDefParPage) <= nbDefTotal){
nbDispDef = nbDefParPage;
}
else{
nbDispDef = nbDefTotal % nbDefParPage;
};
if(numPage == 1){
document.getElementById("navigPrec").style.display = "none";
}
else{
document.getElementById("navigPrec").style.display = "table-cell";
};
if(numPage == calcNbPages()){
document.getElementById("navigSuiv").style.display = "none";
}
else{
document.getElementById("navigSuiv").style.display = "table-cell";
};
for(var i = 0; i < nbDispDef; i++){
tempNumDef = eltsDef[rangFirstDispDef + i].getAttribute("num");
tempEn = eltsEn[rangFirstDispDef + i].firstChild.nodeValue;
tempFr = eltsFr[rangFirstDispDef + i].firstChild.nodeValue;
tempExtLI_E2F = eltsExtLI_E2F[rangFirstDispDef + i].firstChild.nodeValue;
tempExtLI_F2E = eltsExtLI_F2E[rangFirstDispDef + i].firstChild.nodeValue;
tempFlag = eltsFlag[rangFirstDispDef + i].firstChild.nodeValue;
document.getElementById("tr"+i).style.display = "table-row";
if((tempFlag == 2) || (tempFlag == 3)){
document.getElementById("td"+i+"-0").innerHTML = "<span style=\"color:red\">* </span>";
}
else{
document.getElementById("td"+i+"-0").innerHTML = "";
};
document.getElementById("td"+i+"-0").innerHTML += myHtmlEntExceptBR(tempFr);
if((tempFlag == 1) || (tempFlag == 3)){
document.getElementById("td"+i+"-1").innerHTML = "<span style=\"color:red\">* </span>";
}
else{
document.getElementById("td"+i+"-1").innerHTML = "";
};
document.getElementById("td"+i+"-1").innerHTML += myHtmlEntExceptBR(tempEn);
document.getElementById("td"+i+"-2").innerHTML = tempExtLI_F2E;
document.getElementById("td"+i+"-3").innerHTML = tempExtLI_E2F;
document.getElementById("button"+i+"-4").setAttribute("onclick", 'initModDef(' + tempNumDef + ")");
document.getElementById("button"+i+"-5").setAttribute("onclick", "gestionDelDef(" + tempNumDef + ")");
};
for(var i = nbDispDef; i < nbDefParPage; i++){
document.getElementById("tr"+i).style.display = "none";
};
};
}
//renvoie les donnees POST pour la requete AJAX de recherche des definitions
function postDataForSearch(searchedStr, typeSearch, isCaseSensitive, onlyFlagTerms){
var res;
res = "searchedStr=" + encodeURIComponent(searchedStr);
res += "&typeSearch=" + typeSearch;
res += "&isCaseSensitive=" + isCaseSensitive;
res += "&onlyFlagTerms=" + onlyFlagTerms;
return res;
}
//renvoie les donnees POST pour la requete AJAX de modification de la definition
function postDataForModDef(numDef, english, french, extLI_E2F, extLI_F2E, flag){
var res;
res = "numDef=" + numDef;
res += "&english=" + encodeURIComponent(english);
res += "&french=" + encodeURIComponent(french);
res += "&extLI_E2F=" + extLI_E2F;
res += "&extLI_F2E=" + extLI_F2E;
res += "&flag=" + flag;
return res;
}
//gere les elements de la page au chargement de celle-ci
function gestionOnload(){
var tempTr;
var tempTd;
var tempButton;
document.getElementById("searchedStr").focus();
for(var i = 0; i < nbDefParPage; i++){
tempTr = document.createElement("tr");
tempTr.setAttribute("id", "tr"+i);
if((i % 2) == 1){
tempTr.setAttribute("style", "background-color:rgb(195,195,195)");
}
else{
tempTr.setAttribute("style", "background-color:rgb(220,220,220)");
};
document.getElementById("tbodySearchRes").appendChild(tempTr);
for(var j = 0; j < 6; j++){
tempTd = document.createElement("td");
tempTd.setAttribute("id", "td"+i+"-"+j);
if(j > 1){
tempTd.setAttribute("align", "center");
};
if(j > 3){
tempButton = document.createElement("button");
tempButton.setAttribute("id", "button"+i+"-"+j);
if(j == 4){
tempButton.setAttribute("title", "MODIFIER");
tempButton.innerHTML = "Mod";
}
else{
tempButton.setAttribute("title", "SUPPRIMER");
tempButton.innerHTML = "Del";
};
tempTd.appendChild(tempButton);
};
tempTr.appendChild(tempTd);
};
};
}
//gere la recherche des definitions
function gestionSearch(searchedStr, typeSearchIsOnlyEn, typeSearchIsOnlyFr, isCaseSensitive, onlyFlagTerms){
var typeSearch;
document.getElementById("divModDef").style.display = "none";
if(typeSearchIsOnlyEn){
typeSearch = "onlyEn";
}
else if(typeSearchIsOnlyFr){
typeSearch = "onlyFr";
}
else{
typeSearch = "both";
};
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}
else if(window.ActiveXObject){
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
else{
alert("Votre navigateur n'est pas compatible avec AJAX");
};
if(xhr){
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
xmlDocRes = xhr.responseXML;
formatXmlDocRes();
numPage = 1;
majParaNbFoundDef();
majTabDef();
document.getElementById("divSearchRes").style.display = "block";
window.location = "#ancreSearchRes";
};
};
xhr.open("POST", "./searchDefRes.php?<?PHP echo(session_name()."=".session_id()) ?>", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
xhr.send(postDataForSearch(searchedStr, typeSearch, isCaseSensitive, onlyFlagTerms));
};
}
//gere la modification de la definition
function gestionModDef(numDef, english, french, flagEn, flagFr, typeIsE2F, typeIsF2E, restLI_E2F, restLI_F2E){
var extLI_E2F, extLI_F2E;
var flag = 0;
if(typeIsE2F){
extLI_F2E = -1;
}
else{
extLI_F2E = restLI_F2E;
if(flagFr){
flag = 2;
};
};
if(typeIsF2E){
extLI_E2F = -1;
}
else{
extLI_E2F = restLI_E2F;
if(flagEn){
flag++;
};
};
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}
else if(window.ActiveXObject){
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
else{
alert("Votre navigateur n'est pas compatible avec AJAX");
};
if(xhr){
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
xmlDocRes.evaluate('./definition[@num="' + numDef + '"]/english', xmlDocRes.documentElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.firstChild.nodeValue = myNL2BR(english);
xmlDocRes.evaluate('./definition[@num="' + numDef + '"]/french', xmlDocRes.documentElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.firstChild.nodeValue = myNL2BR(french);
xmlDocRes.evaluate('./definition[@num="' + numDef + '"]/extLI_E2F', xmlDocRes.documentElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.firstChild.nodeValue = extLI_E2F;
xmlDocRes.evaluate('./definition[@num="' + numDef + '"]/extLI_F2E', xmlDocRes.documentElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.firstChild.nodeValue = extLI_F2E;
xmlDocRes.evaluate('./definition[@num="' + numDef + '"]/flag', xmlDocRes.documentElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.firstChild.nodeValue = flag;
majTabDef();
window.location = "#ancreSearchRes";
document.getElementById("divModDef").style.display="none";
alert("Vos modifications ont bien \xE9t\xE9 enregistr\xE9es");
};
};
xhr.open("POST", "./modifyDefAjax.php?<?PHP echo(session_name()."=".session_id()) ?>", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
xhr.send(postDataForModDef(numDef, english, french, extLI_E2F, extLI_F2E, flag));
};
}
//initialise la modification de la definition
function initModDef(numDef){
var english = xmlDocRes.evaluate('./definition[@num="' + numDef + '"]/english', xmlDocRes.documentElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.firstChild.nodeValue;
var french = xmlDocRes.evaluate('./definition[@num="' + numDef + '"]/french', xmlDocRes.documentElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.firstChild.nodeValue;
var extLI_E2F = xmlDocRes.evaluate('./definition[@num="' + numDef + '"]/extLI_E2F', xmlDocRes.documentElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.firstChild.nodeValue;
var extLI_F2E = xmlDocRes.evaluate('./definition[@num="' + numDef + '"]/extLI_F2E', xmlDocRes.documentElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.firstChild.nodeValue;
var defCreationDateTime = xmlDocRes.evaluate('./definition[@num="' + numDef + '"]/defCreationDateTime', xmlDocRes.documentElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.firstChild.nodeValue;
var LI_EnToFr_lastUpdateDateTime = xmlDocRes.evaluate('./definition[@num="' + numDef + '"]/LI_EnToFr_lastUpdateDateTime', xmlDocRes.documentElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.firstChild.nodeValue;
var LI_FrToEn_lastUpdateDateTime = xmlDocRes.evaluate('./definition[@num="' + numDef + '"]/LI_FrToEn_lastUpdateDateTime', xmlDocRes.documentElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.firstChild.nodeValue;
var flag = xmlDocRes.evaluate('./definition[@num="' + numDef + '"]/flag', xmlDocRes.documentElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.firstChild.nodeValue;
document.getElementById("spanModNumDef").innerHTML = numDef;
document.getElementById("spanModDefCreationDateTime").innerHTML = defCreationDateTime;
document.getElementById("numDefForMod").value = numDef;
document.getElementById("newEnglish").value = myBR2NL(english);
document.getElementById("newFrench").value = myBR2NL(french);
if(LI_FrToEn_lastUpdateDateTime == "NULL"){
document.getElementById("spanModLI_FrToEn_lastUpdateDateTime").innerHTML = "jamais "vu"";
}
else{
document.getElementById("spanModLI_FrToEn_lastUpdateDateTime").innerHTML = ""vu" la dernière fois le : " + LI_FrToEn_lastUpdateDateTime;
};
if(LI_EnToFr_lastUpdateDateTime == "NULL"){
document.getElementById("spanModLI_EnToFr_lastUpdateDateTime").innerHTML = "jamais "vu"";
}
else{
document.getElementById("spanModLI_EnToFr_lastUpdateDateTime").innerHTML = ""vu" la dernière fois le : " + LI_EnToFr_lastUpdateDateTime;
};
document.getElementById("newFlagFr").checked = ((flag == 2) || (flag == 3));
document.getElementById("newFlagEn").checked = ((flag == 1) || (flag == 3));
document.getElementById("newTypeE2F").checked = (extLI_F2E == -1);
document.getElementById("newTypeF2E").checked = (extLI_E2F == -1);
document.getElementById("newTypeBoth").checked = ((extLI_E2F != -1) && (extLI_F2E != -1));
if(extLI_E2F != -1){
document.getElementById("optNewRestLI_E2F_" + extLI_E2F).selected = true;
};
if(extLI_F2E != -1){
document.getElementById("optNewRestLI_F2E_" + extLI_F2E).selected = true;
};
if(extLI_E2F == -1){
gestionDispMod("FrToEn");
}
else{
if(extLI_F2E == -1){
gestionDispMod("EnToFr");
}
else{
gestionDispMod("both");
};
};
document.getElementById("divModDef").style.display = "block";
window.location = "#ancreModDef";
}
//gere la suppression de la definition
function gestionDelDef(numDef){
var nbDefTotalAvantSupp = xmlDocRes.getElementsByTagName("english").length;
var defNodeToDel;
var msgConfSuppr = "Confirmez-vous la suppression de la d\xE9finition ?";
if(!confirm(msgConfSuppr)) return;
if((document.getElementById("divModDef").style.display != "none") && (numDef == document.getElementById("numDefForMod").value)){
document.getElementById("divModDef").style.display = "none";
};
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}
else if(window.ActiveXObject){
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
else{
alert("Votre navigateur n'est pas compatible avec AJAX");
};
if(xhr){
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
if((numPage == calcNbPages()) && ((nbDefTotalAvantSupp % nbDefParPage) == 1)){
numPage--;
};
defNodeToDel = xmlDocRes.evaluate('./definition[@num="' + numDef + '"]', xmlDocRes.documentElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
xmlDocRes.documentElement.removeChild(defNodeToDel);
majParaNbFoundDef();
majTabDef();
alert("La d\xE9finition a bien \xE9t\xE9 supprim\xE9e");
};
};
xhr.open("POST", "./deleteDefAjax.php?<?PHP echo(session_name()."=".session_id()) ?>", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
xhr.send("numDef=" + numDef);
};
}
//]]>
</script>
</head>
<body onload="gestionOnload()">
<?PHP
$filename = "searchDef.php";
$cheminAbsInitial = "vocab/common";
include("../includes/menu.inc.php");
?>
<div id="main">
<?PHP
if(isset($_SESSION["login"])){
?>
<table border="0" width="100%">
<tr>
<td><h2>MOTEUR DE RECHERCHE</h2></td>
</tr>
</table>
<br />
<?PHP
if(!isset($_SESSION["idCurrentBase"])){
echo("Vous devez sélectionner une base.<br />\n");
}
else{
?>
<form name="formSearchDef" action="javascript:void%200" accept-charset="utf-8" onsubmit="gestionSearch(this.searchedStr.value, document.getElementById('typeSearchOnlyEn').checked, document.getElementById('typeSearchOnlyFr').checked, this.isCaseSensitive.checked, this.onlyFlagTerms.checked);return false">
<table border="0" width="100%">
<colgroup width="45%" span="1" align="right"></colgroup>
<colgroup width="55%" span="1" align="left"></colgroup>
<tr>
<td>
<label>Chaîne de caractères recherchée : </label>
</td>
<td>
<input id="searchedStr" type="text" name="searchedStr" size="40" maxlength="<?PHP echo MAXLENGTH_SEARCHED_STR ?>" />
</td>
</tr>
<tr>
<td>
</td>
<td>
* est le joker (il remplace n'importe quelle chaîne de caractères)
<br />
</td>
</tr>
<tr>
<td>
<label>Rechercher dans : </label>
</td>
<td>
<input id="typeSearchOnlyEn" type="radio" name="typeSearch" value="onlyEn" /><label>les termes anglais uniquement</label>
<br />
<input id="typeSearchOnlyFr" type="radio" name="typeSearch" value="onlyFr" /><label>les termes français uniquement</label>
<br />
<input id="typeSearchBoth" type="radio" name="typeSearch" value="both" checked="checked" /><label>tous les termes</label>
</td>
</tr>
<tr>
<td>
</td>
<td>
<br />
<input id="isCaseSensitive" type="checkbox" name="isCaseSensitive" value="true" />
<label>Case sensitive</label>
</td>
</tr>
<tr>
<td>
</td>
<td>
<br />
<input id="onlyFlagTerms" type="checkbox" name="onlyFlagTerms" value="true" />
<label>Uniquement les termes marqués</label>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<br />
<button type="submit">LANCER LA RECHERCHE</button>
</td>
</tr>
</table>
</form>
<br />
<a id="ancreSearchRes"></a>
<div id="divSearchRes" style="display:none">
<fieldset>
<legend><b>Résultat de la recherche</b></legend>
<p id="nbFoundDef"></p>
<table id="tableSearchRes" border="1" width="100%">
<thead>
<tr style="background-color:darkgray">
<th>FRENCH</th>
<th>ENGLISH</th>
<th>F2E</th>
<th>E2F</th>
<th> </th>
<th> </th>
</tr>
</thead>
<tbody id="tbodySearchRes">
</tbody>
</table>
<table border="0" width="100%">
<tr>
<td id="navigPrec" class="style2">
<button type="button" onclick="numPage=1;majTabDef()"> << </button>
<button type="button" onclick="numPage--;majTabDef()"> < </button>
</td>
<td id="navigSuiv" class="style1">
<button type="button" onclick="numPage++;majTabDef()"> > </button>
<button type="button" onclick="numPage=calcNbPages();majTabDef()"> >> </button>
</td>
</tr>
</table>
</fieldset>
</div>
<br />
<a id="ancreModDef"></a>
<div id="divModDef" style="display:none">
<fieldset>
<legend><b>Modification d'une définition</b></legend>
Numéro : <span id="spanModNumDef"></span><br />
Créée le : <span id="spanModDefCreationDateTime"></span><br /><br />
Tous les tags <br /> sont automatiquement supprimés.
<form id="formModDef" name="formModDef" action="javascript:void%200" accept-charset="utf-8" onsubmit="gestionModDef(this.numDefForMod.value, this.newEnglish.value, this.newFrench.value, document.getElementById('newFlagEn').checked, document.getElementById('newFlagFr').checked, document.getElementById('newTypeE2F').checked, document.getElementById('newTypeF2E').checked, this.newRestLI_E2F.value, this.newRestLI_F2E.value);return false">
<input id="numDefForMod" name="numDefForMod" type="hidden" />
<table border="0" width="100%">
<colgroup width="20%" span="1" align="right"></colgroup>
<colgroup width="80%" span="1" align="left"></colgroup>
<tr>
<td>
<label>Français : </label><br />
<input id="newFlagFr" type="checkbox" name="newFlagFr" value="vrai" />
<label>flag </label><br /> <br />
</td>
<td>
<textarea id="newFrench" name="newFrench" cols="65" rows="4"></textarea>
<br />
<span id="spanModLI_FrToEn_lastUpdateDateTime"></span>
<br />
</td>
</tr>
<tr>
<td>
<label>Anglais : </label><br />
<input id="newFlagEn" type="checkbox" name="newFlagEn" value="vrai" />
<label>flag </label><br /> <br />
</td>
<td>
<textarea id="newEnglish" name="newEnglish" cols="65" rows="4"></textarea>
<br />
<span id="spanModLI_EnToFr_lastUpdateDateTime"></span>
<br />
</td>
</tr>
<tr>
<td><label>Type : </label></td>
<td>
<input id="newTypeF2E" type="radio" name="newType" value="F2E" onclick="gestionDispMod('FrToEn')" /><label onclick="document.getElementById('newTypeF2E').checked=true;gestionDispMod('FrToEn')">FrToEn</label><br />
<input id="newTypeE2F" type="radio" name="newType" value="E2F" onclick="gestionDispMod('EnToFr')" /><label onclick="document.getElementById('newTypeE2F').checked=true;gestionDispMod('EnToFr')">EnToFr</label><br />
<input id="newTypeBoth" type="radio" name="newType" value="both" onclick="gestionDispMod('both')" /><label onclick="document.getElementById('newTypeBoth').checked=true;gestionDispMod('both')">both</label>
</td>
</tr>
<tr>
<td><label>LearningIndex FrToEn : </label></td>
<td>
<select id="newRestLI_F2E" name="newRestLI_F2E" size="1">
<?PHP
for($i = 0; $i <= MAX_LEARNING_INDEX; $i++){
echo("<option id=\"optNewRestLI_F2E_".$i."\" value=\"".$i."\">".$i."</option>\n");
};
?>
</select>
</td>
</tr>
<tr>
<td><label>LearningIndex EnToFr : </label></td>
<td>
<select id="newRestLI_E2F" name="newRestLI_E2F" size="1">
<?PHP
for($i = 0; $i <= MAX_LEARNING_INDEX; $i++){
echo("<option id=\"optNewRestLI_E2F_".$i."\" value=\"".$i."\">".$i."</option>\n");
};
?>
</select>
</td>
</tr>
<tr>
<td><button type="submit">Enregistrer</button></td>
<td></td>
</tr>
</table>
</form>
</fieldset>
</div>
<?PHP
};
}
else{
echo(MSG_ERREUR_PROTECTED_ZONE);
$_SESSION = array();
session_destroy();
};
echo(DISP_ON_ALL_WIDTH);
?>
</div>
</body>
</html>
searchDefRes.php :
<?PHP
include_once("../includes/definitions.inc.php");
include_once("../includes/common.inc.php");
include_once("../includes/gestionFichiersTxtParam.inc.php");
include_once("../includes/gestionParamConnServMysql.inc.php");
include_once("../includes/gestionMysql.inc.php");
function myStrPos($haystack, $needle, $isCaseSensitive){
if($isCaseSensitive){
return strpos($haystack, $needle);
}
else{
return stripos($haystack, $needle);
};
}
//renvoie true si la chaîne de caractères $haystack contient la chaîne de caractères $needle
//dans $needle, le caractère * correspond au joker
//la recherche est (resp. n'est pas) sensible à la casse si $isCaseSensitive est égal à true (resp. false)
function myStrMatchAux($haystack, $needle, $isCaseSensitive){
if($needle == "") return true;
if(strpos($needle, "*") === false) return (myStrPos($haystack, $needle, $isCaseSensitive) !== false);
if($needle[0] == "*") return myStrMatchAux($haystack, substr($needle, 1), $isCaseSensitive);
$tabNeedle = explode("*", $needle, 2);
$posFirstNeedleInHaystack = myStrPos($haystack, $tabNeedle[0], $isCaseSensitive);
if($posFirstNeedleInHaystack === false) return false;
return myStrMatchAux(substr($haystack, $posFirstNeedleInHaystack + strlen($tabNeedle[0])), $tabNeedle[1], $isCaseSensitive);
}
//renvoie true si la chaîne de caractères $haystack contient la chaîne de caractères $needle
//dans $haystack, les "<br />" sont considérés comme des sauts de ligne
//dans $needle, le caractère * correspond au joker
//la recherche est (resp. n'est pas) sensible à la casse si $isCaseSensitive est égal à true (resp. false)
function myStrMatch($haystack, $needle, $isCaseSensitive){
$haystackArray = explode("<br />", $haystack);
foreach($haystackArray as $line){
if(myStrMatchAux($line, $needle, $isCaseSensitive)) return true;
};
}
session_name(NOM_SESSION_VOCAB);
session_start();
if(isset($_SESSION["login"])){
header('Content-Type:text/xml; charset=UTF-8');
echo("<?xml version=\"1.0\" encoding=\"utf-8\" ?>");
echo("<base>");
$searchedStr = $_POST["searchedStr"];
$typeSearch = $_POST["typeSearch"];
$isCaseSensitive = ($_POST["isCaseSensitive"] == "true");
$onlyFlagTerms = ($_POST["onlyFlagTerms"] == "true");
$link = connectSelectMysqlVocab("../../private/paramConnServMysql.txt", NAME_BD);
$query = "SELECT num, english, french, learningIndexEnToFr, learningIndexFrToEn, defCreationDateTime, LI_EnToFr_lastUpdateDateTime, LI_FrToEn_lastUpdateDateTime, flag
FROM save_def_".$_SESSION["typeCurrentBase"]."
WHERE idBase = ".$_SESSION["idCurrentBase"];
if($onlyFlagTerms){
switch($typeSearch){
case "onlyEn" :
$query .= " AND flag IN (1, 3)";
break;
case "onlyFr" :
$query .= " AND flag IN (2, 3)";
break;
case "both" :
$query .= " AND flag <> 0";
break;
};
};
$query .= " ORDER BY num ASC";
$res = execQueryMysql($query, $link);
while($ref = mysql_fetch_assoc($res)){
if((($typeSearch == "both" || $typeSearch == "onlyEn") && myStrMatch(antiMyXmlEntities($ref["english"]), $searchedStr, $isCaseSensitive)) || (($typeSearch == "both" || $typeSearch == "onlyFr") && myStrMatch(antiMyXmlEntities($ref["french"]), $searchedStr, $isCaseSensitive))){
echo("<definition num=\"".$ref["num"]."\">");
echo("<english>".strtr($ref["english"], array("<br />" => "<br />"))."</english>");
echo("<french>".strtr($ref["french"], array("<br />" => "<br />"))."</french>");
echo("<extLI_E2F>".$ref["learningIndexEnToFr"]."</extLI_E2F>");
echo("<extLI_F2E>".$ref["learningIndexFrToEn"]."</extLI_F2E>");
echo("<defCreationDateTime>".date("d-m-y, H:i:s", strtotime($ref["defCreationDateTime"]))."</defCreationDateTime>");
if($ref["LI_EnToFr_lastUpdateDateTime"] == NULL){
echo("<LI_EnToFr_lastUpdateDateTime>NULL</LI_EnToFr_lastUpdateDateTime>");
}
else{
echo("<LI_EnToFr_lastUpdateDateTime>".date("d-m-y, H:i:s", strtotime($ref["LI_EnToFr_lastUpdateDateTime"]))."</LI_EnToFr_lastUpdateDateTime>");
};
if($ref["LI_FrToEn_lastUpdateDateTime"] == NULL){
echo("<LI_FrToEn_lastUpdateDateTime>NULL</LI_FrToEn_lastUpdateDateTime>");
}
else{
echo("<LI_FrToEn_lastUpdateDateTime>".date("d-m-y, H:i:s", strtotime($ref["LI_FrToEn_lastUpdateDateTime"]))."</LI_FrToEn_lastUpdateDateTime>");
};
echo("<flag>".$ref["flag"]."</flag>");
echo("</definition>");
};
};
mysql_free_result($res);
echo("</base>");
}
else{
echo(MSG_ERREUR_PROTECTED_ZONE);
$_SESSION = array();
session_destroy();
};
?>
@+
dix2