begin process at 2008 08 29 21:20:29
1 233 885 membres
407 nouveaux aujourd'hui
14 294 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Utiliser les données d'un Cfquery avec AJAX [ Base de données / Autre ] (Timwaz)

Utiliser les données d'un Cfquery avec AJAX le 29/07/2008 12:04:22

Timwaz
Lut à tous,

Grâce aux bonnes âmes de ce site j'ai réussi à adapter un système d'autocompletion.

Nickel ... à part que celui utilise dans l'exemple un tableau java

suggests = new Array('aaaa','aaab','aabb','abbb','abbc','0000','0001','0011','0111','0112');

Evidement  ce que je veux c'est utiliser les données d'un Cfquery

Ma question est donc simple. Peux t'on transférer les données issues de mon cfquery vers un tableau
java

suggests = new Array(LES DONNEES RESULTANTES DE MON CFQUERY);

Pff dur dur les débuts dans le monde de la prog

Par avance merci les gars

Re : Utiliser les données d'un Cfquery avec AJAX le 29/07/2008 13:11:23

nickadele
Membre Club
(Admin CS)
Re,

tu as plusieurs solution pour renvoyer les données à l'utilisateur :
- sous forme XML qu'il faudra remettre en page coté client
- Jquery qu'il faudra remettre en page coté client
- Array qu'il faudra remettre en page coté client
...autres formats
- formaté directement en HTML (ex: un tableau) qu'il suffit de placer dans un conteneur coté client

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
Mon Blog

Re : Utiliser les données d'un Cfquery avec AJAX le 29/07/2008 14:23:25

Timwaz
 Je pensais m'en sortir avec un truc du style

<cfloop query = "ListeGlobFR">
   #ArrayAppend(suggests, "#Nom# #Téléphone# #Portable#")#
</cfloop>

dans la mesure où je n'ai pas besoin de mise en page particulière et que la seule chose que je veux c'est remplir un tableau java avec les données issues du query

Merci

Re : Utiliser les données d'un Cfquery avec AJAX le 29/07/2008 14:58:21

nickadele
Membre Club
(Admin CS)
Réponse acceptée !
Re,

<cfloop query = "ListeGlobFR">
   #ArrayAppend(suggests, "#Nom# #Téléphone# #Portable#")#
</cfloop>
<cfreturn suggest/>


et que la seule chose que je veux c'est remplir un tableau java >> Javascript tu veux dire ???
Mais je suppose que tu souhaites afficher ton tableau javascript ?
Dans ce cas tu auras plus simple en récupérant ton tableau au format HTML (<table><tr>....), tu n'auras pas à faire la mise en page coté client !

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
Mon Blog

Re : Utiliser les données d'un Cfquery avec AJAX le 29/07/2008 15:26:10

Timwaz
Javascript oui :-)

Et non je ne veux pas l'afficher, il va juste servir à alimenter l'affichage fait par l'autocompletion (javascript trouvé sur ce site, et mes histoires de menus dynamiques où tu m'as déjà pas mal aidé)

J'ai cependant trouvé un petit lien qui explique tous ça pous CS8, je vais tenter d'adapter ça à mon cas.

[ Lien ]

Merci

Re : Utiliser les données d'un Cfquery avec AJAX le 30/07/2008 11:36:16

Timwaz

Lut,

Encore un petite question pour finaliser tous ça

J'ai un fichier cfc qui contient le code suivant

<cfcomponent output="false">
<cfset THIS.dsn="cfartgallery">
<cffunction name="getChoose" access="remote" returnType="array">  
 <cfset var suggests=ArrayNew(2)>
 <cfset var i=0>
 <cfquery name="ListeGlobFR" datasource="Access">
  SELECT Nom, Téléphone, Portable
  FROM Personnel
  ORDER BY Nom ASC
 </cfquery>
 <cfloop index="i" from="1" to="#ListeGlobFR.RecordCount#">
      <cfset suggests[i][1]=ListeGlobFR.Nom[i]>
      <cfset suggests[i][2]=ListeGlobFR.Téléphone[i]>
  <cfset suggests[i][3]=ListeGlobFR.Portable[i]>
 </cfloop>   
 <cfreturn suggests>
</cffunction>
</cfcomponent>

Un fichier cfm qui contient

<cfobject component="getChoose" name="analyse">
<cfinvoke component="getChoose" method="getChoose" returnvariable="suggests"> </cfinvoke>
<cfdump var = "#suggests#" >


Le cfdump m'affiche bien le contenu de #suggests# sous entendu (ce que je comprend en fait lol) que ma fonction à bien ajouter les datas du cfquery dans
un tableau nommé suggests.

Alors Pkoi ma fonction javasript n'arrive pas à utiliser ce tableau et que pour IE
suggests est indéfini ? Le fait de retourner le tableau suggests comme résultat
ne suffit pas pour être utilisé ?

Par avance merci


function showValue(inside)
{
 divDest      = document.getElementById('menuRightHidden');
 divDest.innerHTML   = '';
 valueOfElement    = '';
 exist      = 0;
 nbOfElement     = 0;
 divDest.style.top   = positionAbsolute(inside, 'top') + inside.offsetHeight;
 divDest.style.left   = positionAbsolute(inside, 'left');
 divDest.style.width   = inside.offsetWidth - 3;
   
 for (i = 0; i < suggests.length; i++)
 {
  if (suggests[i].indexOf(inside.value) == 0 && inside.value != '')
  {
   nbOfElement++;
   exist     = 1;
   valueOfElement   = suggests[i];
   currentDiv    = document.createElement("div");
   currentInner   = document.createTextNode(suggests[i]);
   currentDiv.indice  = suggests[i];
   currentDiv.className = 'currentDiv';
   currentDiv.onclick  = function()
   {
    inside.value = this.indice;
    divDest.style.visibility = 'hidden';
   }
   currentDiv.appendChild(currentInner);
   divDest.appendChild(currentDiv);
  }
 }
 if (exist == 0 || (valueOfElement.length  == inside.value.length && nbOfElement == 1))
  divDest.style.visibility = 'hidden'
 else
  divDest.style.visibility = 'visible';
}


Re : Utiliser les données d'un Cfquery avec AJAX le 30/07/2008 12:18:57

nickadele
Membre Club
(Admin CS)
Réponse acceptée !
Re,

c'est normal puisque "suggests" est déclaré coté serveur.
Ce que le serveur renvoie c'est un array et non un array nommé "suggests".

Peux-tu me dire quand et comment est appelées ta fonction javascript "ShowValue" ?

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
Mon Blog

Re : Utiliser les données d'un Cfquery avec AJAX le 30/07/2008 13:30:29

Timwaz
Plusieurs fonctions (voir ci dessous) en fait avec un appel dans le cfm (la seule chose qu'il y a d'ailleurs)

<table width="400" height= "30" border="1">
   <tr>
    <td>
     <div align="center"><input onkeyup= "showValue(this);" /></div>
    </td>
    <td>
     <div align="center"></div></td>
   </tr>
</table>

Si on ajoute cette ligne ça fonctionne, (puisque le tableau existe coté client est ce ça ?)

suggests = new Array('aaaa','aaab','aabb','abbb','abbc','0000','0001','0011','0111','0112');

Donc comment la faire exister coté client ?????? Je sèche complet sur le sujet
HELP



FONCTIONS

function positionAbsolute(obj, mode)
{
 currentValue = 0;
 if (obj.offsetParent)
 {
  if (mode == 'top')
   currentValue = obj.offsetTop;
  else if (mode == 'left')
   currentValue = obj.offsetLeft;
  while (obj = obj.offsetParent)
   if (mode == 'top')
    currentValue += obj.offsetTop;
   else if (mode == 'left')
    currentValue += obj.offsetLeft;
 }
 return currentValue;
}
  
function showValue(inside)
{
 divDest      = document.getElementById('menuRightHidden');
 divDest.innerHTML   = '';
 valueOfElement    = '';
 exist      = 0;
 nbOfElement     = 0;
 divDest.style.top   = positionAbsolute(inside, 'top') + inside.offsetHeight;
 divDest.style.left   = positionAbsolute(inside, 'left');
 divDest.style.width   = inside.offsetWidth - 3;
   
 for (i = 0; i < suggests.length; i++)
 {
  if (suggests[i].indexOf(inside.value) == 0 && inside.value != '')
  {
   nbOfElement++;
   exist     = 1;
   valueOfElement   = suggests[i];
   currentDiv    = document.createElement("div");
   currentInner   = document.createTextNode(suggests[i]);
   currentDiv.indice  = suggests[i];
   currentDiv.className = 'currentDiv';
   currentDiv.onclick  = function()
   {
    inside.value = this.indice;
    divDest.style.visibility = 'hidden';
   }
   currentDiv.appendChild(currentInner);
   divDest.appendChild(currentDiv);
  }
 }
 if (exist == 0 || (valueOfElement.length  == inside.value.length && nbOfElement == 1))
  divDest.style.visibility = 'hidden'
 else
  divDest.style.visibility = 'visible';
}
  
function initMenuRightDiv()
{
 menuRightDiv   = document.createElement("div");
 menuRightDiv.className = 'hiddenDiv';
 menuRightDiv.id   = 'menuRightHidden';
 window.document.body.appendChild(menuRightDiv);
}
  
window.onload = initMenuRightDiv;
</script>

Re : Utiliser les données d'un Cfquery avec AJAX le 30/07/2008 14:05:02

nickadele
Membre Club
(Admin CS)
Pour résumé le principe avec Ajax dans ton cas de figure :
1. L'utilisateur encode une valeur à rechercher
2. Une fonction javascript récupère la valeur et la transmet au serveur.
   -Lors de l'envoie via Ajax, tu dois définir quelle fonction va récupérer la valeur renvoyée par le serveur.
3. Traitement au niveau du serveur.
4. Le serveur renvoie le résultat au client.
5. La fonction déclarée au point 2 récupère les données envoyées par le serveur.
6. Traitement coté client pour afficher le résultat.

Dans le code ci-dessus je ne voit pas l'appel Ajax que tu fais !

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
Mon Blog

Re : Utiliser les données d'un Cfquery avec AJAX le 30/07/2008 14:11:14

nickadele
Membre Club
(Admin CS)
Réponse acceptée !
Pour en savoir plus sur Ajax et XMLHTTPRequest

[ Lien ]

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
Mon Blog


[Page 1 Page 2]
Classé sous : données, utiliser, ajax, array, cfquery

Participer à cet échange

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Boutique

Boutique de goodies CodeS-SourceS