Moteur de recherche avec ajax

cs_katousa
Messages postés
8
Date d'inscription
lundi 21 novembre 2005
Statut
Membre
Dernière intervention
10 mars 2006
- 2 mars 2006 à 10:45
WhiteDwarf
Messages postés
510
Date d'inscription
samedi 29 décembre 2001
Statut
Membre
Dernière intervention
23 mai 2008
- 3 mars 2006 à 18:16
COUCOU...C'EST KATOUSA
je viens de commencer à peine à me familiariser avec ajax , j'essaye maintenant de faire un petit moteur de recherche d'un forum avec ajax, mon pb est que j'arrive pas à faire l'affichage des sujets de ce forum:


mon programme:index.htm


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<html>
<head>
<title>Recherche-Forum</title>

<link rel="stylesheet" type="text/css" href="styles.css" />

<script type="text/javascript" language="JavaScript" src="ajax.js"></script>
<script type="text/javascript" language="JavaScript" src="traitement.js"></script>

<script language="JavaScript">
<!--



var proc;



function requete()
{

document.getElementById("mot").value="";
loadXMLDoc('recherche.php');

window.clearInterval(proc);
proc = setInterval("requete()",20000);

return false;
}



function requete_mot()
{


var mot = document.getElementById("mot").value;
loadXMLDoc('recherche_mot.php?mot=' + mot);

window.clearInterval(proc);
proc = setInterval("requete_mot()",20000);

return false;
}

//-->
</script>

</head>

Les sujets,

----

<form name="choix_mot" onSubmit="return requete_mot()">
Recherche par mot-clé :

</form>

Afficher toutes les sujets

</html>
---

donc : il y a un champs texte dans le quelle un membre du forum accède et tape un mot clé pour effectuer un recherche sur les sujet du forum
il ya un lien ,ou qd on clique on affiche tous les sujet du forum
-----------------
programme:traitement.js

function xmltraitement(monxml) {



var calquehtml = "";


var fichiers = monxml.getElementsByTagName('sujet');

if(fichiers.length == 0) {

calquehtml = "Pas du sujet de discussion pour le mot que vous avez taper";

}
for(var i = 0; i < fichiers.length; i++) {


var titre = fichiers[i].getElementsByTagName('titre')[0].firstChild.data;
var contenu = fichiers[i].getElementsByTagName('contenu')[0].firstChild.data;
var date = fichiers[i].getElementsByTagName('date')[0].firstChild.data;



calquehtml1+= '<hr width=\'700\'>'+
'
'+titre+' ('+date+')
'+
'
'+contenu+'
'+
}

}

document.getElementById('calque_liste').innerHTML = calquehtml ;

}
------------------
programme recherche_mot.php

<?
include "ini.php";
header('Content-type: text/xml');
echo '<?xml version="1.0" encoding="iso-8859-1"?>';
echo '<lessujets>';


dbconnect();


function f_query() {
global $db;

$sql = "SELECT * FROM sujet_discussion WHERE contenu LIKE '%".$_GET["mot"]."%' OR titre_sujet LIKE '%".$_GET["mot"]."%'";

$sqlresults = mysql_db_query($db, $sql);

if(!$sqlresults) {
echo 'recherche_mot .php: erreur SQL.\n';
echo $sql;
exit;
}

while($data = mysql_fetch_array($sqlresults)) {

echo '<sujet>';
echo '<titre>'.$data["titre_sujet"].'</titre>';
echo '<contenu>'.$data["contenu"].'</contenu>';
echo '<date>'.$data["date_sujet_discussion"].'</date>';
echo '</sujet>';

}
}

f_query();
dbclose();


echo '<lessujets>';



?>
-------------------------
programme recherche.php
<?
include "ini.php";
header('Content-type: text/xml');
echo '<?xml version="1.0" encoding="iso-8859-1"?>';
echo '<lessujets>';
dbconnect();


function f_query() {
global $db;

$sql = "SELECT * FROM sujet_discussion";

$sqlresults = mysql_db_query($db, $sql);

if(!$sqlresults) {
echo 'recherche.php: erreur SQL.\n';
echo $sql;
exit;
}

while($data = mysql_fetch_array($sqlresults)) {
/*if($data["lien"]=="_")
{
$data["lien"]="";
}*/
echo '<sujet>';
echo '<titre>'.$data["titre_sujet"].'</titre>';
echo '<contenu>'.$data["contenu"].'</contenu>';
echo '<date>'.$data["date_sujet_discussion"].'</date>';

echo '</sujet>';

}
}

f_query();
dbclose();


echo '</lessujets>';
?>
-----------------
programme ajax.js

// JavaScript Documentvar req;


function loadXMLDoc(url) {

if (window.XMLHttpRequest) {

req = new XMLHttpRequest(); // pour XMLHttpRequest natif (Gecko, Safari, Opera)

try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); // Pour supprimer la sécurité de Mozilla
} catch (e) {}

req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
req.send(null);

} else if (window.ActiveXObject) {

req = new ActiveXObject("Microsoft.XMLHTTP"); // pour IE/Windows ActiveX
if (req) {
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
req.send();
}
} else {

alert("Votre navigateur ne connait pas l'objet MLHttpRequest.");

}
}



function processReqChange() {


if (req.readyState == 4) { // quand le fichier est chargé


if (req.status == 200) { // detécter problème de format


try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (e) {}

xmltraitement(req.responseXML.documentElement);


} else {

alert("Il y avait un problème avec le XML:\n" + req.statusText);

}

}
}
-------------------------------
la feuille de style style.css

.grotitre{
font-family: Arial, Helvetica, sans-serif;
color: Black;
font-size: 16px;
font-weight:bold;
}


.calque_rech {

font-family: Arial, Helvetica, sans-serif;
color: Black;
font-size: 15px;

}


.calque_liste {

width:500px;

}


.texte_titre {

font-family: Arial, Helvetica, sans-serif;
color: #000000;
font-size: 14px;
background:#CCCCCC;
width: 700px;
}


.texte_contenu {

font-family: Arial, Helvetica, sans-serif;
color: #000000;
font-size: 14px;
width: 700px;
background:#E3E3E3;
text-align:justify;

}


.texte_lien {

font-family: Arial, Helvetica, sans-serif;
color: blue;
font-size: 14px;
color: #993300;
text-decoration:underline;

}
-----------------------------------------
la connexion à la base ini.php

<?


// connexion base de données


$hn = "localhost"; // define hostname
$db = "forum_discussion"; // define database name
$dbuser = "root"; // user
$dbpass = "1111"; // password



// fonctions de connexion à bdd


function dbconnect() {
global $hn, $db, $con, $errormsg, $dbpass, $dbuser;
$con = @mysql_connect($hn, $dbuser, $dbpass);
$db_sel = @mysql_select_db($db, $con);
if (!$db_sel) {
dbconnectdev();
}
}


function dbconnectdev() {
global $hn, $db, $con, $errormsg, $dbpass, $dbuser;
$con = @mysql_connect($hn);
$db_sel = @mysql_select_db($db, $con);
if (!$db_sel) {
echo "probleme de connexion à la base de donnees";
exit;
}
}


function dbclose() {
global $con;
mysql_close($con);
}


?>

-------------------------
la table sujet_discussion(id_sujet,titre_sujet, contenu ,date_sujet_discussion)

je vous prie de m'aider car j'arrive pas à comprendre pourquoi ça marche pas, quand je clique sur le boutton rechercher il'ya aucun action que ce fait de meme pour le lien

7 réponses

malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
25
2 mars 2006 à 11:11
Hello,

désolé, mais je n'arrive pas à voir où tu fais appel à Ajax ? je vois les méthodes Ajax, les ytraitements...mais je ne vois pas quand est déclenchée ta méthode Ajax ?
0