Organisation de rédaction de fichiers

Eléphant du PHP | 226 Messages

21 juin 2010, 12:11

Bonjour,

J'ai actuellement deux fichiers avec chacun 1 formulaire. Mais ces deux pointent sur le même fichier pour le traitement des données.
Fichier 1:
<form action="resetFonctionBonCom.php" method="post" name="choiceNBonCom" id="choiceNBonCom">
<select name="listeNBonCom" id="listeNBonCom">
...
<input type="submit" name="resetNBonCom" id="resetNBonCom" ...>
</form>
Fichier2:
<form action="resetFonctionBonCom.php" method="post" name="choiceNBonCom" id="choiceNBonCom">
...
<input type="submit" name="transfertNBonCom" id="transfertNBonCom" ...>
</form>
Seul diffère le nom du bouton d'envoi des formulaires. Je m'en sers d'ailleurs dans le fichier unique de traitement des données:
if(isset ($_POST['resetNBonCom'])) {
//va faire telle chose
}
//
if(isset ($_POST['transfertNBonCom'])) {
//va faire autre chose
}
Cette partie est pleinement fonctionnelle. Maintenant, je cherche à intégrer une couche java-script (ajax, jquery) pour l'envoi des données, qui est encore pratiquement la même pour les 2 fichiers. Il n'y a que les affichages de retour de fonction qui changent:

Code : Tout sélectionner

$(function(){ $("#choiceNBonCom").submit(function(){ ... $.post("resetFonctionBonCom.php", $("#choiceNBonCom").serialize(), function(data){ ... if(data != "ok"){ ... } }); return false; }); });
A ce moment là, il n'y a plus rien qui s'exécute côté serveur. Donc, première question : pourquoi mon script coté serveur n'est plus opérationnel dans ces conditions ?
Maintenant, je supprime la condition de traitement, c'est à dire lequel de bouton de soumission qui a été utilisé:
if(isset ($_POST['resetNBonCom'])) {...
Cela fonctionne à nouveau... (j'aurais pris soin évidemment de mettre en commentaire le second script de traitement, pour que le premier puisse marcher)
Alors comment faire ? Dois-je obligatoirement séparer tous les scripts de traitement. Je vais me retrouver avec 36 fichiers supplémentaires...
merci,
«Le matin, quand il t’en coûte de te réveiller, que cette pensée te soit présente: c’est pour faire œuvre d’homme que je m’éveille.»
Marc Aurèle.

Mammouth du PHP | 661 Messages

21 juin 2010, 15:41

slt ::

il semblerait que la fonction jQuery.serialize() ne prenne pas en paramètres les input type="submit"
ce qui fait qu'il n'est pas envoyé en Ajax, ... et donc ne peux etre utilisé dans ta condition !

pour palier à ce problème, tu devrais pouvoir mettre un
<input type="hidden" name="typeForm" value="resetNBonCom" />
pour ensuite faire ta vérif sur ::
if(isset ($_POST['typeForm']) && $_POST['typeForm']=="resetNBonCom") {
//va faire telle chose
}
//
if(isset ($_POST['typeForm']) && $_POST['typeForm']=="transfertNBonCom") {
//va faire autre chose
}
@++
Modifié en dernier par Nours312 le 21 juin 2010, 16:26, modifié 1 fois.

Eléphant du PHP | 226 Messages

21 juin 2010, 16:24

C'est bon à savoir ça... D'autant plus que cela n'est pas précisé dans la doc française, ni dans le bouquin dont je dispose...
Merci,
«Le matin, quand il t’en coûte de te réveiller, que cette pensée te soit présente: c’est pour faire œuvre d’homme que je m’éveille.»
Marc Aurèle.

Mammouth du PHP | 661 Messages

21 juin 2010, 16:27

dsl ... faute de frappe : jQuery.serialize()

donc là si tu regardes bien leur exemple, tu constates vite que l'input type="submit" dont le name="g" ne fait pas parti des éléments sérialisé ;) ...
<form>
  <div><input type="text" name="a" value="1" id="a" /></div>
  <div><input type="text" name="b" value="2" id="b" /></div>
  <div><input type="hidden" name="c" value="3" id="c" /></div>
  <div>
    <textarea name="d" rows="8" cols="40">4</textarea>
  </div>
  <div><select name="e">
    <option value="5" selected="selected">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
  </select></div>
  <div>
    <input type="checkbox" name="f" value="8" id="f" />
  </div>
  <div>
    <input type="submit" name="g" value="Submit" id="g" />
  </div>
</form>
[javascript]$('form').submit(function() {
alert($(this).serialize());
return false;
});[/javascript]

Code : Tout sélectionner

a=1&b=2&c=3&d=4&e=5
après, je ne suis pas utilisateur jQuery non plus ^^ :D
@++

Eléphant du PHP | 226 Messages

21 juin 2010, 17:29

Ton code est un subterfuge, mais un subterfuge qui marche bien. Merci!
«Le matin, quand il t’en coûte de te réveiller, que cette pensée te soit présente: c’est pour faire œuvre d’homme que je m’éveille.»
Marc Aurèle.