Retourner une valeur dans un submit

Retourner une valeur dans un submit - HTML/CSS - Programmation

Marsh Posté le 12-09-2008 à 10:23:48    

Bonjour,
 
Actuellement, je travaille sur une application php, html, javascript mais je bloque sur un petit détail.
 
J'ai un formulaire que je retourne grace à un submit. celui-ci permet de faire un insert dans ma bdd et de retourner l'id correspondant à cet enregistrement. Par la suite, je voudrai redirectionner vers une page avec cet identifiant sous la forme :  "window.location.replace("CreationCompo.php?syn_id="+id+"&compo_id="+compo_id);"
 
 
Pour le moment voici, ma fonction javascript :  

Code :
  1. function ajoutCompo(id)
  2. {
  3.     if (ins.new_compo_titre.value=='' || ins.new_compo_desc.value=='' || ins.modele.value=='0' ) {
  4.     alert ("Vérifiez que vous avez renseigné le champs suivant :\n\n- Titre du composant \n\n- Description du composant \n\n- Type de modèle" );
  5.    }else{
  6.    ins.submit();
  7.    window.location.replace("CreationCompo.php?syn_id="+id+"&compo_id="+compo_id);
  8.    alert ("Composant créé !" );
  9.    }
  10. }


cependant, je ne sais pas comment recuperer le compo_id qui provient du ins.submit(). L'insert se fait correctement mais je ne sais pas comment exploiter le "return $compo_id;". sinon la fonction ajoutCompo fonctionne en mettant la valeur de compo_id en dur !
 
est ce quelqu'un aurai une indication a me donner ?
 

Reply

Marsh Posté le 12-09-2008 à 10:23:48   

Reply

Marsh Posté le 12-09-2008 à 10:49:35    

D'où vient le compo_id ?
De ins.submit(), mais d'où exactement ?
Je ne sais pas mais je pense à la solution de l'utilisation d'une valeur dans un champ caché.

<input type="hidden" id="compo_id" value="123">

et

..."&compo_id="+ins.compo_id.value)...

Reply

Marsh Posté le 12-09-2008 à 11:08:34    

ins est le nom de mon formulaire qui contient un certain nombre de champs à inserer dans ma base de données.
 
le compo_id est la valeur retourner par ma fonction :  
 

Code :
  1. function CreationCompo($titre,$description, $modele, $plage_nb, $plage_datepart, $plage_datefin, $hauteur, $largeur, $syn_id)
  2. {
  3. ...
  4. $compo="INSERT INTO ts_compo (compo_titre, compo_desc, compo_mod_id, compo_vue, compo_plage_nb, compo_plage_datepart, compo_plage_datefin) values ('$titre','$description', '$mod_id', '$compo_vue', '$plage_nb', '$plage_datepart', '$plage_datefin')";
  5. $result_compo=Requete_db($compo,"graphes" );
  6. $select=Requete_db("select compo_id from ts_compo where compo_titre='$titre'","graphes" );
  7.       foreach($select as $value)
  8.         {
  9.         $compo_id = $value[0];
  10.         }
  11. ...
  12. return $compo_id;
  13. }


 
sinon ton idée est bonne mais je ne pense pas pouvoir l'appliqué pour mon cas car lorsque je transmet mes valeurs au submit, le compo_id n'existe pas encore. le compo_id est en quelques sortent le resultat du submit.

Reply

Marsh Posté le 12-09-2008 à 12:26:05    

je pense que le probleme vient de l'appel de la fonction :  
$add->CreationCompo($titre,$description, $modele, $plage_nb, $plage_datepart, $plage_datefin, $hauteur, $largeur, $syn_id);
 
lorsque je fais un echo sur $add, je devrai avoir la valeur retournée ($compo_id) non ?

Reply

Marsh Posté le 13-09-2008 à 15:05:04    

non, car $add est un objet (une instance de ta classe) alors que tu cherches à récupérer la valeur retournée par ta méthode CreationCompo().  
 

Code :
  1. <?php
  2. // ...
  3. $compo_id = $add->CreationCompo($titre,$description, $modele, $plage_nb, $plage_datepart, $plage_datefin, $hauteur, $largeur, $syn_id);
  4.  
  5. print "Compo id : $compo_id";
  6.  
  7. // ...
  8. ?>


 
Autre chose : pour que la variable object soit lisible il faut qu'elle soit une string
 

Code :
  1. <?php
  2. class MyClass {
  3.     private $var = 'ok !';
  4.     
  5.     public function getVar() {
  6.         return $this->var;
  7.     }
  8. }
  9. $object = new MyClass();
  10. echo $object;
  11. //Affiche Object car $object est de type Object (Dérivé de Class) et
  12. //n'est pas affichable
  13. ?>


 
Pour qu'un echo sur un objet affiche une chaine, il faut définir la méthode magique __toString() (même si je ne te le conseille pas)
 

Code :
  1. <?php
  2. class MyClass {
  3.     private $var = 'ok !';
  4.     
  5.     public function getVar() {
  6.         return $this->var;
  7.     }
  8.     
  9.     function __toString() {
  10.         return $this->var;
  11.     }
  12. }
  13. $object = new MyClass();
  14. echo $object;
  15. ?>
  16.  
  17. //Affiche "ok !" car la méthode magique __toString est appelée et renvoie une string affichable.


Message édité par Profil supprimé le 13-09-2008 à 15:14:47
Reply

Sujets relatifs:

Leave a Replay

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