champ de recherche auto-suggestif

91 posts in this topic

Posted · Report post

la il n'ya plus de limite et ça buggue.

En fait au dela de 150 dans le limit y a une erreur et effectivement avec juste l'id il n'y avais pas de soucis...

Share this post


: post
Share on other sites

Posted · Report post

et si c'etait dans l'article 151 qu'il y avait un souci de caractere spécial ?

Share this post


: post
Share on other sites

Posted · Report post

en fait j'ai bien regardé, en fait dans les premiers cas, & est bien remplacé par & mais par la suite non,

à mon avis la solution consisterai ) mettre en place un str_replace du & par $amp; dans la chaine.

Share this post


: post
Share on other sites

Posted · Report post

genre

str_replace("&","&" , utf8_encode($article['nom_fr']))

Share this post


: post
Share on other sites

Posted · Report post

en fait j'ai bien regardé, en fait dans les premiers cas, & est bien remplacé par & mais par la suite non,

à mon avis la solution consisterai ) mettre en place un str_replace du & par $amp; dans la chaine.

Bon tu est un AS, la ça fonctionne.

Reste a régler la pertinence des résultats, car la peux importe les lettres saisi, le formulaire propose tous les résultats.

Share this post


: post
Share on other sites

Posted · Report post

et là ce n'est qu'une requete sql amélioré, transforme $sql ...

Share this post


: post
Share on other sites

Posted · Report post

ca te donne ceci

$query = "SELECT * FROM `peel_produits` WHERE `nom_FR` like %".$_GET['keyword']."% ";

et bien sur, lorsque tu appelle la page tu appelle 'autocompletion.php?keyword='.motclef

et motclef étant la chaine récupérée, (je te rappelle que nous sommes en javascript donc pas de $ devant les variables)

Share this post


: post
Share on other sites

Posted · Report post

et là ce n'est qu'une requete sql amélioré, transforme $sql ...

Pas compris désolé.

Share this post


: post
Share on other sites

Posted · Report post

on a posté en meme temps, modifie ta requete comme indiqué au dessus non?

Le but c'est pas que le xml ne montre que les produits contenant le mot clef?

Share this post


: post
Share on other sites

Posted · Report post

on a posté en meme temps, modifie ta requete comme indiqué au dessus non?

Le but c'est pas que le xml ne montre que les produits contenant le mot clef?

Exactement si je tape "m" je veux voir les produit qui commence par "m".

Voici la requete mais ça ne fonctionne pas.

<?php
include("../configuration.inc.php");
header('Content-type: text/xml; charset=utf-8');

//$query = "SELECT * FROM `peel_produits` WHERE `etat`='1'";
$query = "SELECT * FROM `peel_produits` WHERE `nom_fr` like %".$_GET['input']."% ";
$result = @mysql_query($query);
$test=1;
if (mysql_num_rows($result) > 0) {
echo "<results>";
while ($article = mysql_fetch_array($result)) {
$bodytag = utf8_encode($article['nom_fr']);
$bodytag = str_replace("&", "$amp;", $bodytag);
echo "<rs id=\"".$article['id']."\" info=\"".$test."\">".$bodytag."</rs>";
$test++;
}
print "</results>";
}

?>[/codebox]

Share this post


: post
Share on other sites

Posted · Report post

LA solution ce trouve dans le traitement des données sous forme de tableau dans le script d'exemple :

$input = strtolower( $_GET['input'] );
$len = strlen($input);


$aResults = array();

if ($len)
{
for ($i=0;$i<count($aUsers);$i++)
{
// had to use utf_decode, here
// not necessary if the results are coming from mysql
//
if (strtolower(substr(utf8_decode($aUsers[$i]),0,$len)) == $input)
$aResults[] = array( "id"=>($i+1) ,"value"=>htmlspecialchars($aUsers[$i]), "info"=>htmlspecialchars($aInfo[$i]) );

//if (stripos(utf8_decode($aUsers[$i]), $input) !== false)
// $aResults[] = array( "id"=>($i+1) ,"value"=>htmlspecialchars($aUsers[$i]), "info"=>htmlspecialchars($aInfo[$i]) );
}
}[/codebox]

Rest a faire une adaptation

Share this post


: post
Share on other sites

Posted · Report post

http://www.3dvf.fr/autosuggest/bsn.AutoSuggest_2.1.html

Voila ça marche ;)

Par contre je ne reussi pas l'integration sur mon site : www.3dvf.fr

noya_m comment avez vous integrez le code dans haut.php?

J'ai regardé la source de votre site mais chez moi ça ne fonctionne pas.

Merci

Share this post


: post
Share on other sites

Posted · Report post

je pense que tu as oublié d'inserer le fichier javascript ou le script javascript qui gere la requete XMLHTTP request

Share this post


: post
Share on other sites

Posted · Report post

je pense que tu as oublié d'inserer le fichier javascript ou le script javascript qui gere la requete XMLHTTP request

Non j'ai bien tous mis dans haut .php :

<!-- ****************************** suggestion *************************************  -->
<script type"text/javascript">
var useBSNns = true;
</script>
<script type="text/javascript" src="http://www.3dvf.fr/autosuggest/js/bsn.AutoSuggest_2.1_comp.js" charset="utf-8"></script>
<link rel="stylesheet" href="http://www.3dvf.fr/autosuggest/css/autosuggest_inquisitor.css" type="text/css" media="screen" charset="utf-8" />
<!-- ****************************** suggestion ************************************* -->
</head>[/codebox]

[codebox]<td width="220" valign="top" class="boxText">
<form method="GET" action="achat/recherche.php" name="recherche">
<input class="formulaire1" type="text" name="motclef" size="15" id="testinput_xml" value="<?echo vb script:"http://www.3dvf.fr/autosuggest/test.php?json=true&",
varname:"input",
json:true,
shownoresults:false,
callback: function (obj) { document.getElementById('testid').value = obj.id; }
};
var as_json = new bsn.AutoSuggest('testinput', options);


var options_xml = {
script: function (input) { return "http://www.3dvf.fr/autosuggest/test.php?input="+input+"&testid="+document.getElementById('testid').value; },
varname:"input"
};
var as_xml = new bsn.AutoSuggest('testinput_xml', options_xml);

</script>

<!-- ************************************************** -->
</td>

Share this post


: post
Share on other sites

Posted · Report post

c'est en ligne ?

Share this post


: post
Share on other sites

Posted · Report post

trop facile, tu as fait une erreur de copie regarde :

<script type"text/javascript">

var useBSNns = true;

</script>

c'est

<script type="text/javascript">

var useBSNns = true;

</script>

Share this post


: post
Share on other sites

Posted · Report post

non ce n'est pas ça, l'erreur est présente sur la page de demonstration est le script fonctionne quand même. La je viens de corriger chez moi, mais ça ne fonctionne toujours pas.

Share this post


: post
Share on other sites

Posted · Report post

arf, bon je regarde la suite désolé..

Share this post


: post
Share on other sites

Posted · Report post

extrait de ton code source, le get element by id va chercher l'iid testid alors que toi tu as pour id pour le champs de recherche :"testinput_xml"

	 <input type="text" name="motclef" size="15"  value="" id="testinput_xml">

	   <input src="http://www.3dvf.fr/template/button_search.gif" alt="Recherche" title=" Recherche " border="0" type="image">


	   </form>

	   <!-- ******************** suggestion ****************************** -->

<script type="text/javascript">

	var options = {

		script:"http://www.3dvf.fr/autosuggest/test.php?json=true&",

		varname:"input",

		json:true,

		shownoresults:false,

		callback: function (obj) { document.getElementById('testid').value = obj.id; }

	};

	var as_json = new bsn.AutoSuggest('testinput', options);



	var options_xml = {

		script: function (input) { return "http://www.3dvf.fr/autosuggest/test.php?input="+input+"&testid="+document.getElementById('testid').value; },

		varname:"input"

	};

	var as_xml = new bsn.AutoSuggest('testinput_xml', options_xml);


</script>


<!-- ************************************************** -->

Share this post


: post
Share on other sites

Posted · Report post

et puisque j'y suis, pense à metre une limite à 15au moins, mais aussi dans la requete sql à verifier si le produit est en ligne ou non.. parce que je viens de tomber sur un test meta qui je pense n'est pas forcement là d'habitude.

Share this post


: post
Share on other sites

Posted · Report post

c'est exactement le meme code que l'exemple donc l'erreur ne viens pas de la.

Share this post


: post
Share on other sites

Posted · Report post

Salut,

envois moi tes fichiers afin de le mettre dans ton code en privé

Voila ça marche ;)

Par contre je ne reussi pas l'integration sur mon site : www.3dvf.fr

noya_m comment avez vous integrez le code dans haut.php?

J'ai regardé la source de votre site mais chez moi ça ne fonctionne pas.

Merci

Share this post


: post
Share on other sites

Posted · Report post

Pouvez vous mettre le code de test.php sur cette page

Merci

Share this post


: post
Share on other sites

Posted · Report post

Salut,

envois moi tes fichiers afin de le mettre dans ton code en privé

Dans la boite...

Share this post


: post
Share on other sites

Posted · Report post

test.php le voici :

<?php
include("../configuration.inc.php");
$input = $_REQUEST['input'];
$aResults = array();

$query = "SELECT * FROM `peel_produits` WHERE `nom_fr` LIKE '".$input."%' ";
$qr = @mysql_query($query);

while($row=mysql_fetch_array($qr))
{
$aResults[] = array( "id"=>($row['id']) ,"value"=>htmlspecialchars($row['nom_fr']), "info"=>htmlspecialchars($row['id']) );
}

header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");

if (isset($_REQUEST['json']))
{
header("Content-Type: application/json");

echo "{\"results\": [";
$arr = array();
for ($i=0;$i<count($aResults);$i++)
{
$arr[] = "{\"id\": \"".$aResults[$i]['id']."\", \"value\": \"".$aResults[$i]['value']."\", \"info\": \"\"}";
}
echo implode(", ", $arr);
echo "]}";
}
else
{
header("Content-Type: text/xml");

echo "<?xml version=\"1.0\" encoding=\"utf-8\" ?><results>";
for ($i=0;$i<count($aResults);$i++)
{
echo "<rs id=\"".$aResults[$i]['id']."\" info=\"".$aResults[$i]['info']."\">".$aResults[$i]['value']."</rs>";
}
echo "</results>";
}
?>[/codebox]

Share this post


: post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

Twitter Advisto ecommerce

Facebook PEEL Shopping