Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
908 connectés 

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ajax

n°1782629
redah75
Posté le 04-09-2008 à 15:34:41  profilanswer
 

Bonjour,
 
une petite question qui vous paraitra peut etre banale :)
 
j'ai un formulaire de saisie avec une dizaine de champs. parmis ces champs j'ai par exemple 'auteur'.
lorsque je tape une lettre je propose une liste d'auteur, et si on trouve notre auteur on clique dessus. jusqu'ici il y a pas de probleme!
 
mais comment faire pour inserer uniquement l'identifiant de l'auteur ds ma base de donnees sachant que seulement le nom de l'auteur est visible???
 
Merci de votre aide
Reda

mood
Publicité
Posté le 04-09-2008 à 15:34:41  profilanswer
 

n°1782939
Bidem
Posté le 05-09-2008 à 09:53:59  profilanswer
 

1) Quand l'appel 'ajax' arrive et que tu vas chercher en base la liste des noms commençant par ce qui a été tapé, garde en session cette liste (avec l'id)

 

2) quand le formulaire arrive, tu n'as plus qu'a chercher dans cette liste l'id correspondant au nom finalement saisi

 

2') si le nom ne s'y trouve pas, tu dois faire une requête à la base pour récupérer l'id


Message édité par Bidem le 05-09-2008 à 09:54:21
n°1782972
redah75
Posté le 05-09-2008 à 11:00:52  profilanswer
 

ca ne sera pas long et lent ???
j'aurais a peu pres 100000 enregistrements, ca prendra enormement de temps pour comparer une chaine de caractere!!

n°1783039
Bidem
Posté le 05-09-2008 à 12:03:34  profilanswer
 

Citation :

lorsque je tape une lettre je propose une liste d'auteur


C'est cette liste qu'il faut garder en session. si elle fait 100000 enregistrements t'as un gros problème de conception.

 

Montre nous le code appelé lors de l'appel 'ajax'


Message édité par Bidem le 05-09-2008 à 12:04:24
n°1783060
redah75
Posté le 05-09-2008 à 12:49:30  profilanswer
 

un probleme de conception?? :) mais pourquoi? on peut tres bien avoir des milliers d'enregistrement :)
 
voici ma fonction javascript :
 

Code :
  1. function xhr_search_article(val1, val2, val3)
  2. {
  3. if(val1)
  4. {
  5.  if(window.ActiveXObject) var xhr = new ActiveXObject("Microsoft.XMLHTTP" ); // Internet Explorer
  6.  else var xhr = new XMLHttpRequest(); // Firefox, Mozilla, ...
  7.  xhr.onreadystatechange = function()
  8.  {
  9.   if(xhr.readyState == 4)
  10.   {
  11.    if(xhr.status == 200)
  12.    {
  13.     var val_final = "<table width='100%' border='0' cellpadding='0' cellspacing='0'>";
  14.     if(xhr.responseText != "" )
  15.     {
  16.      var lines = xhr.responseText.split('\n');
  17.      for (var i = 0; i < lines.length; i++)
  18.      {
  19.       var line = lines[i].split('~');
  20.       for (var j = 0; j < 2; j++)
  21.       {
  22.        val_final += "<tr><td colspan='2' hight='15'><a href='javascript:;' class='linkMenu1' onClick=\"window.location.href='add-article.php?det=" + line[0] + "';\">" + line[1] + "</a></td></tr>";
  23.        break;
  24.       }
  25.      }
  26.     }
  27.     val_final += "<tr><td height='20' valign='bottom'><a href='add-article.php' class='link5'>Créer un nouvel article</a></td><td width='10' align='right' valign='bottom' class='v12'><b><a href='javascript:;' onClick=\"open_close('" + val3 + "');\" title='Fermer'><span class='red'>x</span></a></b></td></tr>";
  28.     val_final += "</table>";
  29.     document.getElementById(val3).style.display = '';
  30.     document.getElementById(val3).innerHTML = val_final;
  31.    }
  32.    else document.getElementById(val3).innerHTML = "Error code: " + xhr.status;
  33.   }
  34.  };
  35.  //Open the file, POST method
  36.  xhr.open("POST", "xhr_recherche.php?search=" + val1, true);
  37.  xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  38.  xhr.send();
  39. }
  40. else document.getElementById(val3).style.display = 'none';
  41. }


 
 
ds le fichier xhr_recherche.php il y a une simple requette SQL

n°1783095
Bidem
Posté le 05-09-2008 à 14:06:06  profilanswer
 

Citation :

mais pourquoi? on peut tres bien avoir des milliers d'enregistrement


Donc quand tu commences à taper un nom l'ajax te propose une liste de 100000 auteurs pour 1 lettre tapée ???... t'en a combien en tout dans ta base, 3 millions ? :/

 
Citation :

ds le fichier xhr_recherche.php il y a une simple requette SQL


C'est justement ça que je voulais voir.


Message édité par Bidem le 05-09-2008 à 14:07:07
n°1783097
redah75
Posté le 05-09-2008 à 14:09:30  profilanswer
 

non non non :) g en tout 100000, mais les resultats seront limite a par exemple 20.
voici ma requete ds le fichier xhr_recherche.php:

Code :
  1. SELECT ... FROM auteurs WHERE nom LIKE '%$search%'


Message édité par redah75 le 05-09-2008 à 14:09:48
n°1783098
skeye
Posté le 05-09-2008 à 14:13:34  profilanswer
 

Tu ajoutes à ton formulaire un champ caché contenant l'id de l'auteur (tu récupères nom+id via ta fonction xhr)?


---------------
Can't buy what I want because it's free -
n°1783179
redah75
Posté le 05-09-2008 à 15:45:12  profilanswer
 

bonne idee... :)
merci ;)

n°1783181
redah75
Posté le 05-09-2008 à 15:46:02  profilanswer
 

une autre petite question, est ce mieux de recuperer les resultats sous forme de texte ou plutot en xml??

mood
Publicité
Posté le 05-09-2008 à 15:46:02  profilanswer
 

n°1783208
Bidem
Posté le 05-09-2008 à 16:06:09  profilanswer
 

Citation :

Tu ajoutes à ton formulaire un champ caché contenant l'id de l'auteur (tu récupères nom+id via ta fonction xhr)?


 
C'est pas top ça.
Ton navigateur va faire un appel au serveur (qui va faire une requête SQL) pour récupérer une info dont le seul but est d'être transmise au serveur...
 
Autant attendre la soumission du formulaire pour faire ça.

n°1783210
skeye
Posté le 05-09-2008 à 16:08:18  profilanswer
 

Bidem a écrit :

Citation :

Tu ajoutes à ton formulaire un champ caché contenant l'id de l'auteur (tu récupères nom+id via ta fonction xhr)?

 

C'est pas top ça.
Ton navigateur va faire un appel au serveur (qui va faire une requête SQL) pour récupérer une info dont le seul but est d'être transmise au serveur...

 

Autant attendre la soumission du formulaire pour faire ça.

 

c'est négligeable. Tu ne fais pas une requête supplémentaire, t'en fais déjà une pour le nom, il suffit de transmettre l'ID en plus. Ce qui t'évite de refaire une requête pour retrouver l'id à partir du nom à la validation, à compter qu'il soit unique.


Message édité par skeye le 05-09-2008 à 16:08:33

---------------
Can't buy what I want because it's free -

Aller à :
Ajouter une réponse
 

Sujets relatifs
[Javascript] Problème liste déroulante et jquery[Ajax][Resolut] Pb avec div.innerHTML = xhr.responseText; sous ie
Probleme Ajax/Prototype ajax.requestTemporisation ob_start() + ajax
Ajax et evenementUn site en ajax et les fonctions javascript ?
[resolu] Ajax et XML. Mon script ne fonctionne pas.Url et ajax
validation d'un formulaire ajax via la touche "entrée"Navigation en ajax dans un catalogue
Plus de sujets relatifs à : Ajax


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR