Informations d'un formulaire avant validation

Petit nouveau ! | 6 Messages

28 déc. 2014, 00:05

Bonsoir à tous,

Je viens vers vous car je bloque sur un point et j'aimerais avoir quelques éclaircissements...

En effet, voici mon formulaire :
// instantiate a Zebra_Form object
    $form = new Zebra_Form('form');

    // the label for the "name" element
    $form->add('label', 'label_name', 'name', 'Prénom :');

    // add the "name" element
    $obj = $form->add('text', 'name', '', array('data-prefix'));
	
	// the label for the "name" element
    $form->add('label', 'label_surname', 'surname', 'Nom : ');

    // add the "name" element
    $obj = $form->add('text', 'surname', '', array('data-prefix'));

    // set rules
    $obj->set_rule(array(

        // error messages will be sent to a variable called "error", usable in custom templates
        'required' => array('error', 'Name is required!')

    ));

$id_utilisateur = recuperer_id_utilisateurs();
	// "department"
    $form->add('label', 'label_department', 'department', 'Department:');
    $obj = $form->add('select', 'department', '', array('other' => true));
    $obj->add_options(
        $id_utilisateur);
    $obj->set_rule(array(
        'required' => array('error', 'Department is required!')
    ));
	
    // "submit"
    $form->add('submit', 'btnsubmit', 'Submit');
	// Création d'un tableau des erreurs
	$erreurs_inscription = array();
	
    // if the form is valid
    if ($form->validate()) {
		// Si d'autres erreurs ne sont pas survenues
    if (empty($erreurs_inscription)) {...
J'utilise comme vous pouvez le voir la librairie Zebra_Form. Je charge mes départements correctement à partir d'une requête mais avant de valider j'aimerais bien charger mes villes.
Donc une fois que l'utilisateur aura choisi son département, j'aimerais bien récupérer cette valeur avant d'avoir appuyé sur le "Submit".
Je pense que tout va se faire en javascript mais je n'arrive pas à trouver une solution pour le moment.

Je vous remercie d'avance.

Mammouth du PHP | 1339 Messages

28 déc. 2014, 01:57

Hello,

Je ne connait pas cette librairie mais là on parle de mettre à jour un select en fonction d'un autre.
Je pense donc qu'il faut passer par une requete AJAX qui appelle un fichier PHP externe avec le nom des villes et donc là rien ne t'empeche de continuer d'utiliser ta librairie pour générer le SELECT des villes.
Parce que la pour l'instant il n'y a pas de SELECT concernant les villes.
J'en rajouterai un avec comme valeur : "Selectionnez d'abord un département".
Ca te permettra de mettre un rule pour obliger de selectionner une ville après que le SELECT soit mis à jour.

Ca te parle l'AJAX ?
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Petit nouveau ! | 6 Messages

28 déc. 2014, 11:50

Bonjour !

Merci pour la réponse.

En fait mon principal souci, c'est de récupérer la valeur sélectionnée au niveau du département avant d'avoir validé le formulaire... Car après validation, je vais pouvoir récupérer le POST mais avant validation, pas grand chose...

Et je suis loin d'être un grand connaisseur d'ajax. Je viens de jeter un œil et à priori beaucoup de choses se font après validation.

Mammouth du PHP | 1339 Messages

28 déc. 2014, 12:00

Le principe de l'AJAX c'est justement de faire des choses avant la validation :)

Moi j'utilise jQuery et la fonction val() : http://api.jquery.com/val/
Donc là si on ne fait pas de validation on est plus sur du javascript que sur du PHP a proprement parlé.

L'AJAX appelera du PHP par la suite mais là on a un autre probleme a regler avant !
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Petit nouveau ! | 6 Messages

28 déc. 2014, 12:16

En effet, merci.

Il faut juste que je trouve comment intégrer mon javascript quand une donnée est sélectionnée à ce niveau :
$id_utilisateur = recuperer_id_utilisateurs();
        // "department"
    $form->add('label', 'label_department', 'department', 'Department:');
    $obj = $form->add('select', 'department', '', array('other' => true));
    $obj->add_options(
        $id_utilisateur);
    $obj->set_rule(array(
        'required' => array('error', 'Department is required!')
    ));
Car pour le moment, j'ai l'impression que le javascript n'est lancé qu'au lancement de la page et non à chaque fois que le champ est changé.

Mammouth du PHP | 1339 Messages

28 déc. 2014, 12:24

Je vais pas te faire un un cours de javascript quand même :)

http://api.jquery.com/change/

[javascript]$("#department" ).change(function() {
alert($(this).val());
});[/javascript]
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Petit nouveau ! | 6 Messages

28 déc. 2014, 12:44

Ok merci.

Il va falloir que je reprenne des cours car j'ai bien fait çà pour essayer de récupérer ma valeur mais rien ne se passe...
	$id_utilisateur = recuperer_id_utilisateurs();
	// "department"
    $form->add('label', 'label_department', 'department', 'Department:');
    $obj = $form->add('select', 'department', '', array('other' => true));
    $obj->add_options(
        $id_utilisateur);
    $obj->set_rule(array(
        'required' => array('error', 'Department is required!')
    ));
?>
<script type="text/javascript">
$("#department" ).change(function() {
  alert($(this).val());
});
</script>
<?php

Mammouth du PHP | 1339 Messages

28 déc. 2014, 12:48

L'exemple sur jQuery est pourtant clair.
Ta page est-elle en ligne quelquepart pour que je vois le code qui est généré ?
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Petit nouveau ! | 6 Messages

28 déc. 2014, 12:53

Tout est en local pour le moment... Je vais essayer de voir ce qui peut se passer car à priori, on ne rentre pas dans le script à chaque changement de valeurs...

Petit nouveau ! | 6 Messages

28 déc. 2014, 19:22

Finalement en effectuant des tests avec un formulaire sans passer par la librairie, cela marche sans souci. Il faut que je me penche à présent sur la documentation de la librairie pour voir ce qu'il est possible de faire. Merci pour votre aide.

Mammouth du PHP | 1339 Messages

28 déc. 2014, 21:50

Tu ne veux pas nous montrer la source et c'est dommage.
Ca se trouve c'est pas le bon iD ou un truc tout con ...
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Mammouth du PHP | 688 Messages

28 déc. 2014, 21:53

Il va falloir que je reprenne des cours car j'ai bien fait çà pour essayer de récupérer ma valeur mais rien ne se passe...
tu as une erreur javascript dans la console ?
tu as ajouté la ligne d'import du script de jquery ?