Database mysql php -> fct javascript
-
-
-
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 ;)
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:
- Database mysql php -> fct javascript
- Borland database engine - Télécharger - Édition & Programmation
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Telecharger javascript - Télécharger - Langages
- Expert php pinterest - Télécharger - Langages