Database mysql php -> fct javascript

Fermé
Fou riant Messages postés 32 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 10 novembre 2009 - 20 juin 2008 à 10:54
Fou riant Messages postés 32 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 10 novembre 2009 - 17 juil. 2008 à 10:32
Bonjour,

Je voulais réaliser una autocomplétion dans un script en local, afin de faire une aide à la saisie dans la crétion d'un nouveau profil.
Voici mon code :


<script type="text/javascript">

var tab = new Array (
<?php
$sql_site = "SELECT Nom_de_Site FROM site Order By Nom_de_Site";
$result_site = mysqli_query ($ressource, $sql_site);
$nb_site = mysqli_num_rows($result_site);
$compteur = 0;
while ($tab_site = mysqli_fetch_assoc($result_site))
{
echo "'".substr($tab_site['Nom_de_Site'], 0, 20)."'";
$compteur += 1;
if ($compteur < $nb_site)
{
echo ', ';
}
}

?>);


function go(alpha){
var aff=document.getElementById('liste');
var affiche=aff.getElementsByTagName('li');


// à chaque caractère tapé, on vide la liste de résultats précédente
while(aff.lastChild)aff.removeChild(aff.lastChild);

// on supprime les accents pour comparaison
for(y=0;y != tab.length;y++){
tab2=tab[y].replace(/[àâä]/gi,'a');
tab2=tab2.replace(/[éèêë]/gi,'e');
tab2=tab2.replace(/[ïî]/gi,'i');
tab2=tab2.replace(/[ôö]/gi,'o');
tab2=tab2.replace(/[ùüû]/gi,'u');
alpha=alpha.replace(/[àâä]/gi,'a');
alpha=alpha.replace(/[éèêë]/gi,'e');
alpha=alpha.replace(/[ïî]/gi,'i');
alpha=alpha.replace(/[ôö]/gi,'o');
alpha=alpha.replace(/[ùüû]/gi,'u');


// on supprime les majuscules et on cherche une correspondance
if(tab2.toLowerCase().indexOf(alpha.toLowerCase())==0){
if(alpha){
// pour chaque correspondance, on crée un nouvel item dans la liste
var el=document.createElement("li");
var tx=document.createTextNode(tab[y]);
// en cliquant sur l'item, on donne sa valeur à la zone de texte et on efface la liste de sélection
el.onclick=function(){document.getElementById('t').value=this.firstChild.data;aff.style.display='none'};
el.appendChild(tx);
aff.appendChild(el)};};
};


var total=affiche.length;// nombre de résultats trouvés

if((total==0) || (total>=50)){
// création d'un item vide (conformité xhtml: pas de liste vide)
var el=document.createElement("li");
var tx=document.createTextNode(" ");
el.appendChild(tx);
aff.style.display='none';// liste invisible
aff.appendChild(el);}
// sinon, on affiche les correspondances trouvées.
else aff.style.display='block';


}

</script>


La partie en gras me permet de récupérer les information situées dans ma base de données et de les retranscire dans un tableau pour la fonction javascript. Cependant, je me trouve face à un problème qui me laisse sur le cul!! Tout ceci marche que si je mets :

echo "'".substr($tab_site['Nom_de_Site'], 0, 1)."'";

Ce qui a pour résultat de ne me récupérer que la première lettre des sites (ou lieux comme vous préférez). C'est pas vraiment pratique pour aider les gens à saisir....
Savez vous pourquoi ça ne fonctionne pas lorsque que je mets plus de lettre alors que si je copie la partie <?php ?> dans le reste du code, les echo m'affiche bien ce que je veux...

Je vous remercie d'avance pour votre aide ;)
A voir également:

1 réponse

Fou riant Messages postés 32 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 10 novembre 2009 2
17 juil. 2008 à 10:32
En fait, la solution vient de ma base de données...Elle était foireuse, et depuis que j'ai changer de base, ça marche tout bien nickel
0