object dans JS

object dans JS - HTML/CSS - Programmation

Marsh Posté le 24-04-2006 à 14:29:39    

C'est surement une question con mais quand on est newbie et pas informaticien on rame.... D'ou cette question.
Voici la procédure que je suis.
1) Je lis une table mysql  en php:   mysql_fetch_object()
 
2) je recolle le tout dans un formulaire

 print <form   name="form_litige" method="POST" > ';
    for($i=0;$i<sizeof($T_obj_data);$i++)  
       print "<input type=text name=obj".$id." value=".$T_obj_fournis[$i].">";
    }
  print "<input type=text name=max value=".$i.">";
  print " </form> ";


 
3) Je relis depuis le JS

document.formulaire.fax.value=document.form_litige.obj1->fax.value
document.formulaire.tel.value=document.form_litige.obj1->tel.value


 
 
Naturellement ça ne marche pas. Pourtant ça me semblait logique, mais je pense qu'il doit me manquer des notions de vocabulaire.
Si quelqu'un peut m'aider..... Merci  :jap:


Message édité par thierryR le 24-04-2006 à 15:05:00
Reply

Marsh Posté le 24-04-2006 à 14:29:39   

Reply

Marsh Posté le 24-04-2006 à 16:03:23    

:bounce:  
si je comprend bien, les object ne sont pas les bienvenus dans le JS

Reply

Marsh Posté le 24-04-2006 à 16:27:21    

c'est surtout que là tu n'as pas d'objet dans ton js [:spamafote]
Et puis on accède aux propriétés d'un objet avec . en js et non ->
 
Là tu mélanges allègrement PHP, JS...
Bref pour ton problème:

Code :
  1. document.formulaire.fax.value=document.form_litige.obj1.value;


et tu récuperas bien la valeur de l'input que tu as créés ainsi:

Code :
  1. print "<input type=text name=obj".$id." value=".$T_obj_fournis[$i].">";


Je te conseille par ailleurs fortement de quoter tes names et values dans ton html ( tip: essay de passer une valeur avec un espace sans quote):

Code :
  1. print '<input type=text name="obj'.$id.'" value="'.$T_obj_fournis[$i].'>';


Message édité par anapajari le 24-04-2006 à 16:28:50
Reply

Marsh Posté le 24-04-2006 à 16:54:11    

Je te remercie de la réponse. Ca fait plaisir. Apprennant le js tout juste, pour extraire le fax de mon objet il faut donc ecrire.

Code :
  1. document.formulaire.fax.value=document.form_litige.obj1.fax.value;

Reply

Marsh Posté le 24-04-2006 à 17:11:40    

... je passe ...

Reply

Marsh Posté le 24-04-2006 à 17:21:46    

Quest ce que tu cherche à faire?

Reply

Marsh Posté le 24-04-2006 à 18:31:32    

C'est simplement en selectionnant un choix dans une liste, je voulais remplir d'autre champs lié à ce choix.
Ex: choix d'un fournisseur
remplir les champs "tel" et "fax" sur le masque sans faire d'envoi.

Reply

Marsh Posté le 24-04-2006 à 18:46:34    

Code :
  1. document.formulaire.fax.value=document.form_litige.obj1.fax.value;


 
en réponse j'ai "

Code :
  1. document.form_litige.obj1 has no properties

"


Message édité par thierryR le 24-04-2006 à 18:46:55
Reply

Marsh Posté le 24-04-2006 à 18:53:48    

tu ``exporte`` ta base de donnée en javascript, en utilisant des Array:

Code :
  1. var fournisseurs=new Array(
  2.   new Array('06.06.06.06.06','06.06.06.06.07'),
  3.   new Array('01.01.01.01.01','01.02.01.02.02')
  4. );
  5. function selectionne(num)
  6. {
  7.   f=window.monformulaire;
  8.   f.tel=fournisseurs[num][0];
  9.   f.fax=fournisseurs[num][1];
  10. }


Dans le select tu ajoute un onchange:

Code :
  1. <form name="monformulaire">
  2. <select name="fournisseur" onchange="javascript: selectionne(this.selectedIndex);return true;"
  3. ...
  4. <input type=text name="tel">
  5. <input type=text name="fax">
  6. ...


Message édité par nargy le 24-04-2006 à 18:55:41
Reply

Marsh Posté le 24-04-2006 à 19:34:49    

Ben ton exemple est bien mais ce que je cherche à faire est un peu différent.
J'exporte un array d'object.  
En php on ne peut obtenir que des objects reprèsentant 1 ligne. (mysql_fetch_object())  quand nous recherchons plusieurs ligne on en fait un array.
J'ai donc un array d'object exporté vers le js. C'est peut-être pour ça qu'il n'en veut apparemment pas.
Ce qui coince par ton exemple est le chargement de

Code :
  1. var fournisseurs=new Array(


 
J'espère bien comprendre !! :p

Reply

Marsh Posté le 24-04-2006 à 19:34:49   

Reply

Marsh Posté le 24-04-2006 à 19:44:50    

> J'exporte un array d'object.
- laisse tomber l'array d'objets, à moins que tu ait des méthodes à mettre dans ton objet, utilise mysql_fetch_array.

Reply

Marsh Posté le 24-04-2006 à 19:51:09    

pour l'export de de la table:
http://php.net/implode
http://php.net/addslashes

Reply

Marsh Posté le 24-04-2006 à 20:17:57    

J'ai résolu mon problème autrement.
en PHP  

Code :
  1. <form   name="form_litige" method="POST" > ';
  2. <? php
  3.   $T_obj_fournis=read_tt_fournisseur(); // tous les  fournisseurs
  4.     for($i=0;$i<sizeof($T_obj_fournis);$i++) {
  5. $obj_fournis=$T_obj_fournis[$i];
  6.         $T= array($obj_fournis->id,$obj_fournis->fax,$obj_fournis->tel);
  7. ?>
  8.         '<input type="hidden" name="T'.$i.'" value="'.rawurlencode(implode(':', $T)) .'">';
  9.     }
  10.   }
  11. '<input type="hidden" name="max" value="'.$i.'">';
  12. ' </form> ';


 
puis en JS

Code :
  1. function jsfournis() {
  2. max    = document.form_litige.max.value
  3. idf    = document.formulaire.nom.value
  4. // on construit un tableau par ligne reçue
  5. for(var i=0;i< max;i++)
  6.   {
  7.    T = new Array();
  8.    L = eval('document.form_litige.T'+i+'.value')
  9.    L = unescape(L)
  10.    T = L.split(':')
  11.     if((T[0]- idf) == 0) // Le id fournisseur correspond à notre tableau
  12.      { document.formulaire.fax.value       = T[1]
  13.        document.formulaire.tel.value       = T[2]
  14.     }
  15.    }//for  
  16. }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed