comment traiter de tres grand formulaire ?

Petit nouveau ! | 9 Messages

16 août 2014, 14:55

bonjour !
j'aimerais savoir quel est la meilleur méthode selon vous pour traiter de très très grand formulaires.
mon projet est baser en très grande partie sur les formulaires et les calcules mathématiques.
donc je recherche une meilleur méthode pour traiter mes formulaire et facile a maintenir

Mammouth du PHP | 2278 Messages

16 août 2014, 16:10

à ma connaissance, les formulaires se traitent tous de la même façon.
Ce qui peut changer, c'est la notation en tableau de certains <input...>
ou plusieurs boutons submit entrainant le passage à des pages différentes
ou l'utilisation de required ='required' dans les input
oun l'emploi du type email et quelques autres (pas reconnus de tous les navigateurs) cf http://www.alsacreations.com/tuto/lire/ ... email.html
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

JokerMentalist
Invité n'ayant pas de compte PHPfrance

19 août 2014, 19:19

Salut l'ami tu as beaucoup de champs dans ton formulaire ?

Coté Formulaire :
<form action="" method="">
    <input type="text" name="mon_super_nom" placeholder="Mon super placeholder" />
    ...

</form>
Pour ton code en PHP nh'hésite pas a faire des :
var_dump($_POST);
die();
comme sa tu auras un visuel de tes variable sa te donneras des infors sur se qui peut merder au niveau de ta requette SQL
Utilise le addslashees() pour éviter les injections. sauf si ton serveur de production à le magic quote
ergonomiquement parlant limite au max la saisie celas t'éviteras que tes visiteurs dégagent..


<?php
    if(isset($_POST)){
        if(!empty($_POST)){
            extract($_POST)
            // ici ton traitement
        }
    }
?>

ViPHP
xTG
ViPHP | 7331 Messages

20 août 2014, 13:24

Utilise le addslashees() pour éviter les injections. sauf si ton serveur de production à le magic quote
Pardon ? Ne revenons pas 10ans en arrière s'il vous plait...
mysql_real_escape_string
mysqli_real_escape_string
PDO::quote
ou encore les requêtes préparées.
Mais oser utiliser addslashes pour empêcher les injections... #-o

Petit nouveau ! | 3 Messages

20 août 2014, 15:09

Utilise le addslashees() pour éviter les injections. sauf si ton serveur de production à le magic quote
Pardon ? Ne revenons pas 10ans en arrière s'il vous plait...
mysql_real_escape_string
mysqli_real_escape_string
PDO::quote
ou encore les requêtes préparées.
Mais oser utiliser addslashes pour empêcher les injections... #-o
Merci de ta réponse constructive. Mais visiblement la personne n'utilise pas PDO.

Bonne journée

Mammouth du PHP | 2278 Messages

20 août 2014, 15:59

Fallait-il que xtg mit des OU pour etre mieux compris? Faut-il quant à moi que je précise qu'il s'agit de OU EXCLUSIFS?
Utilise le addslashees() pour éviter les injections. sauf si ton serveur de production à le magic quote
Pardon ? Ne revenons pas 10ans en arrière s'il vous plait...
mysql_real_escape_string
OU
mysqli_real_escape_string
OU
PDO::quote
OU
ou encore les requêtes préparées.
Mais oser utiliser addslashes pour empêcher les injections... #-o
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

ViPHP
ViPHP | 1996 Messages

21 août 2014, 08:10

Je traite des gros formulaires de gestion de feuilles de calculs de machine de laboratoires (environ 20 - 30 input anonymes à la volée).
Mon conseil : vérifies le type de données qui est envoyées via des preg_match (ce sont les fameux REGEX) et ou en écrasant le type comme cet exemple où la valeur ne peut être égale à zéro.
$variable = (integer) $_POST["input"];
//ou
$variable = intval ($_POST["input"]);
$retour = (empty($variable)) ? false : true;
L'avantage de cela est que si tu connais le type que tu attends, tu peux "boucler" sur les sorties formulaires et même créer une fonction ou une classe qui vérifie le formulaire avant de le traiter.
$tabTypesInteger = array ("input_456478", "input_8796545");
foreach ($_POST as $cle => $valeur) {
  //si integer
  if (in_array($cle,$tabTypesInteger) {
    if (is_numeric($valeur))
       ...
  }
}
//ou via une fonction

fonction estInteger ($valeur = false) {
	//si pas définie => return false
	if (empty($valeur))
		return false;
	
	return (preg_match('#[0-9]#',$valeur) ? true : false;
}
Pour compléter les protections, utilises que mysqli_real_escape_string (la version mysql devient obsolète) ou (XOR) celle de pdo si tu utilises la classe PDO (perso j'utilise mysqli).
Enfin tu peux aussi utiliser (en plus) javascript (j'utilise jQuery pour cela) pour vérifier le type avant l'envoi du formulaire. C'est une vérification complémentaire, tu dois obligatoirement vérifier côté serveur :

dans l'HTML
<input typeAttendu="[0-9]" type="text" value="Entrer un Entier" class="integer" n="Entrer un Entier"/>
Dans le javascript avec jQuery lancé :
[javascript]$(document).on ({
keyup : function () {
var regex = nex RegExp($(this).attr('typeAttendu'),"gi");
var valeur = $(this).val();
var retour = regex.test(valeur);
if (!retour) {
$(this).val(valeur.substring(0,valeur.length-1));
}
},
focus: function () {
//si c'est "Entrer un Entier" => on efface
if ($(this).val() == $(this).attr("n"))
$(this).val('');
}
},'input');[/javascript]
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Mammouth du PHP | 2278 Messages

21 août 2014, 10:37

J'ajouterai à ce que vient d enoter auresmus que, m^eme si tous les navigateurs ne les supportent pas encore, il existe des méthodes complémentaires c^oté HTMl et formulaire:
cf : http://www.alsacreations.com/tuto/lire/ ... umber.html
et required = 'required' dans les input
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 9 Messages

24 août 2014, 14:00

salut a tous vous aller chercher un peu loin
je veux dire lorsqu'il y a trop de conditions