Soucis de mise en forme de formulaire

Soucis de mise en forme de formulaire - PHP - Programmation

Marsh Posté le 01-06-2016 à 12:19:25    

Bonjour
 
J'utilise un formulaire pour récupérer les données d'une petite enquête très temporaire auprès de mes clients, mais je n'utilise pas de bases de données (pas de possibilité fiable sur le serveur), le formulaire une fois rempli génère un mail et aussi un petit fichier que je récupère dans Excel :
 
Les SOUCIS :  
1. Je n'arrive pas à imposer tous les champs demandés lors de la saisie, notamment quand il s'agit de bouton radio (genre 1 choix parmi 3 possibilités), et aussi lors de l'utilisation de checkbox (0, ou 1, ou 2 choix)
Première question : y aurait-il une méthode pour imposer le remplissage ? (je vérifie les champs avec du JS/regexp mais dans les 2 cas vus plus haut -bouton radio et check box-, je ne trouve pas de code compatible) car ce sont des choix multiples (à priori)
 
Exemple de code pour vérifier la présence d'un email par exemple (et sa mise en forme)

Code :
  1. regexp = /^([0-9a-z]([-.\w]*[0-9a-z])*@(([0-9a-z])+([-\w]*[0-9a-z])*\.)+[a-z]{2,6})$/i;
  2.    if (!regexp.test(theForm.Editbox3.value))
  3.    {
  4.       alert("Please enter a valid email address." );
  5.       theForm.Editbox3.focus();
  6.       return false;
  7.    }
  8.    if (theForm.Editbox3.value == "" )
  9.    {
  10.       alert("Please enter a value for the \"email_from\" field." );
  11.       theForm.Editbox3.focus();
  12.       return false;
  13.    }


 
2. Je construit mon fichier avec des séparateurs de champs " | ", mais le soucis qui se pose est que si le champ n'est pas rempli (soucis N°1), le fichier généré ne comporte pas non plus ce séparateur de champ, rendant la mise en forme par Excel laborieuse (saut de colonnes) ...
 
code de construction de mon fichier

Code :
  1. function save_form($vars){
  2.     global $database_file, $database_fields;
  3.     $date_time = date('d-m-Y | ');
  4.     $f = fopen($database_file, 'a');
  5.     if (!$f){
  6.         die("Cannot open db file for save" );
  7.     }
  8.     foreach ($vars as $k=>$v) {
  9.         $vars[$k] = str_replace(array("|", "\r","\n" ), array('_',' ',' '), $v);
  10.     }
  11.     if (is_array($database_fields)) {
  12.         $vars_orig = $vars;
  13.         $vars = array();
  14.         foreach ($database_fields as $k)
  15.             $vars[$k] = $vars_orig[$k];
  16.     }
  17.     $str = $date_time;
  18.     $str .= join(' | ', $vars);
  19.     fwrite($f, $str."\n" );
  20.     fclose($f);
  21. }


en gras (ligne 18) la génération du séparateur choisi " | "
 
Deuxième question (découlant du premier soucis ...) : quelle serait la méthode pour imposer la génération de ce séparateur même si le champ à remplir de mon formulaire n'est pas saisie (et donc généré) ?
 
Merci pour toute réponse.


Message édité par dann le 01-06-2016 à 12:31:53
Reply

Marsh Posté le 01-06-2016 à 12:19:25   

Reply

Marsh Posté le 01-06-2016 à 14:49:41    

Pour la n°2, mets les champs dans un tableau (un array) et tu fais un implode("|", $VarArray);


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 01-06-2016 à 15:18:12    

pour la n 1 regarde l'attribut required en html5 ca devrait faire le taff

Reply

Marsh Posté le 01-06-2016 à 16:52:17    

Bonjour
merci de vos réponses et conseils judicieux
 
Pour le moment j'ai retravaillé mon formulaire, en ajoutant des boutons radios invisibles sélectionnés à l'origine (hidden / checked)
Cela me solutionne le problème : si les personnes ne répondent pas complètement au formulaire, ces champs invisibles pré-sélectionnés renvoient > critère non répondu  
le nombre de critères et de séparateurs sont donc bien renvoyés en totalité (pour analyse sur tableur et colonnes avec le séparateur)
Je suis en train de tester et ça semble fonctionner correctement avec les premiers retours.
 

yoyopouce a écrit :

pour la n 1 regarde l'attribut required en html5 ca devrait faire le taff

j'ai cherché, mais comme ce sont des boutons radios, si je les mets tous (par critères) en required ça plante (normal) et si je n'en laisse qu'un (sur 3 choix/boutons parfois ...) ça ne suffit pas. Je ne trouve pas comment obliger à sélectionner une réponse parmi plusieurs avec les boutons radios (car choix multiples)
 

rufo a écrit :

Pour la n°2, mets les champs dans un tableau (un array) et tu fais un implode("|", $VarArray);

oui effectivement ça devrait ainsi m'envoyer tous les champs même ceux qui ne sont pas remplis, et surtout bien l'indispensable séparateur "|",  
 
Mais bon je débute, et c'est ardu pour moi :(
 
Merci


Message édité par dann le 01-06-2016 à 17:08:19
Reply

Sujets relatifs:

Leave a Replay

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