Pour ça, j'ai pensé utiliser AJAX, mais je ne vois pas comment faire. Quel code et où placer mon code.
Voilà déjà le code que j'ai fait :
<?
echo "<br /><br />Choose the different criteria which correspond to your request : ";
/*---------------------------------*/
//on ouvre le fichier criteria.xml
$criteriaFile = $cfg['ressources_root'].'criteria.xml';
$domCriteria = new DOMDocument('1.0','UTF-8');
$domCriteria->load($criteriaFile);
$xpCriteria = new DOMXPath($domCriteria);
$cat_criteria = $domCriteria->getElementsByTagName('cat');
$result_find_criteria = $domCriteria->getElementsByTagName('criteria');?>
<form name="critera" method="post" action="search-engine.php"><?
echo "<ul>";
foreach($cat_criteria as $cat){
$name_cat = $cat->getAttribute('name');
$id_cat = $cat->getAttribute('id');
echo "<br /><input type=\"checkbox\" name=\"cat\" value=\"$id_cat\">".$name_cat."</input>";
foreach ($cat->childNodes as $criteria)
{
if ($criteria->nodeType != XML_ELEMENT_NODE) continue;
if ($criteria->tagName == 'criteria')
{
$name_criteria = $criteria->getAttribute('name');
$id_criteria = $criteria->getAttribute('id');
echo "<ul><input type=\"checkbox\" name=\"crit\" value=\"$id_criteria\">$name_criteria</input></ul>";
}
}
}
echo "</ul>";?>
<input type="submit" value="Search" />
</form>
<?
/*-----------------------------------------------------*/
//on affiche le résultat en fonction d'un seul critère //
/*-----------------------------------------------------*/
$link_file = $cfg['ressources_root'].'/matrix/criteria-practice.xml';
//simple xml va convertir ce fichier xml en tableau
//Chaque type de balise enfant de la racine est une propriété qui est un tableau indexé numériquement et chaque index est un nouvel objet SimpleXML.
$xml = simplexml_load_file($link_file);
if ( $_POST['cat'] or $_POST['crit'] ){
foreach($xml->link as $value) {//tableau qu'on parcours. Chaque valeur est un objet simpleXML
if($value->criteria[0]['idcat']==$_POST['cat'] or $value->criteria[0]['idcrit']==$_POST['crit']) {
//Il s'agit de récupérer la valeur de l'attribut 'idcat' du noeud 'criteria' de la balise 'link' analysée - pareil pour 'idcrit'
$practice[]=( (int)$value->practice[0]['id'] );
$id_practice = $practice[0];
}
}
//on ouvre le document xml qui correspond à la recherche
$practiceFile = $cfg['ressources_root'].'content/practice/'.$id_practice.'.xml';
$domPractice = new DOMDocument('1.0','UTF-8');
$domPractice->load($practiceFile);
$xpPractice = new DOMXPath($domPractice);
$item_practice = $domPractice->getElementsByTagName('item');
if (isset($item_practice)){
foreach ($item_practice as $item) {
foreach ($item->childNodes as $child){
if($child->nodeType != XML_ELEMENT_NODE) continue;
if($child->tagName == 'title'){
$titre = utf8_decode($child->firstChild->nodeValue);}
elseif($child->tagName == 'short_description'){
$short_description = utf8_decode($child->firstChild->nodeValue);}
}
echo "<p>$titre<br/>$short_description";
}
}
else {
echo "pas de practice";
}
}
?>