2012-03-02 2 views
0

J'ai une page web avec 20 formulaires.Comment inclure un fichier php spécifique quand un div est affiché/affiché: "block"

Ils sont tous cachés jusqu'à ce que vous sélectionniez un formulaire dans la liste déroulante, puis le formulaire apparaîtra.

Chaque formulaire a sa propre validation. Le problème est que j'ai inclus la validation pour chaque formulaire dans sa propre div avec chaque formulaire spécifique.

Alors j'ai pensé que parce que chaque div était caché, la validation pour toutes les autres formes cachées ne fonctionnerait pas ... Comment avais-je tort: ​​|

Une façon d'inclure uniquement le fichier php inclure lorsque le div n'est pas caché?

Répondre

3

Réponse courte: le Web ne fonctionne pas de cette façon. Réponse plus longue: Le navigateur n'inclut pas PHP, le serveur l'inclut et crache toute la sortie en HTML au navigateur. Le navigateur ne voit que la sortie HTML afin qu'il voit et envoie tout.

Il existe plusieurs solutions. Je vous recommande de vous assurer que chacune de vos divs possède sa propre balise de forme, puis d'ajouter une entrée cachée à chacune d'elles afin que votre script PHP puisse décider de la validation qu'il est censé faire. Quelque chose comme ceci:

<div id="formfoo"> 
<form method="POST" action="/your-script.php"> 
<input type="hidden" name="validate" value="formfoo" /> 
<!-- rest of your form --> 
</form> 
</div> 

Puis en PHP:

if($_POST['validate'] == 'formfoo') { 
    // validate fields in formfoo here. 
} 

espoir qui aide.

+0

Merci, clair comme le jour. Je pense que tu m'as donné une idée.Le problème était que j'ai déjà appelé un script lors de la publication du formulaire, mais pourquoi ne pas simplement mettre chaque inclusion de validation php dans le script .php im appelant lors de la publication du formulaire. Le meilleur des deux mondes eh ... –

+0

Ok j'ai besoin d'aide, la validation DOIT apparaître AVANT que le formulaire ne soit envoyé, donc le mettre dans la section POST ne fonctionnera pas comme il est dit, l'entête ne peut pas être modifiée une fois envoyée. Je n'ai jamais eu ce problème avant que je l'ai mis en tant qu'inclure dans le post alors je suppose que c'est cela. Des idées quelqu'un? –

+0

Pouvez-vous montrer une partie de votre code? Généralement, il est préférable de séparer votre logique (validation) de votre code d'affichage. – Cfreak

3

Comme le php a déjà été traité pour envoyer tout le contenu au navigateur, vous ne pouvez travailler qu'avec javascript. La façon de le faire serait de lier la validation des formulaires à la soumission de cette forme spécifique, de sorte que l'événement se déclencherait uniquement pour la forme correcte.

1

PHP n'a aucune idée de ce qui est visible sur la taille du client ou de ce qui ne l'est pas. Vous devrez penser à une approche différente.

Heureusement, il existe d'autres méthodes.

Comme chaque div contient un formulaire, vous pouvez simplement faire en sorte que tous les formulaires contiennent un champ caché (disons formid, ou quelque chose) que vous pouvez vérifier pour déterminer quel formulaire a été soumis. Vous pouvez également attribuer un nom unique à chaque contrôle d'envoi de vos formulaires et vérifier le nom du bouton d'envoi qui a été déclenché côté serveur.

1

pourboire supplémentaire:

vous pouvez définir les éléments de formulaire dans les cachés div s aux handicapés:

<input type="text" name="bla" disabled="disabled" /> 

et les activer via javascript, une fois qu'ils sont affichés.

Les éléments désactivés ne sont pas envoyés lorsque le formulaire est soumis.

.... la manipulation de la désactivation/activation pourrait bien être beaucoup plus d'efforts que les formes et seperating faire la distinction serversite comme Cfreak a suggéré ...

Questions connexes