3 réponses
Utilisateur anonyme
Modifié par le père. le 30/03/2014 à 10:15
Modifié par le père. le 30/03/2014 à 10:15
Bonjour
Étonnant en effet...
As-tu essayé de faire print_r($_POST) pour voir ce que tu recevais réellement ?
As-tu aussi essayé d'envoyer ta page 'normalement' c'est à dire avec un bouton plutôt que sur onbeforeunload ?
Étonnant en effet...
As-tu essayé de faire print_r($_POST) pour voir ce que tu recevais réellement ?
As-tu aussi essayé d'envoyer ta page 'normalement' c'est à dire avec un bouton plutôt que sur onbeforeunload ?
Oui, je viens de le faire...
Et au milieu de la boucle 35, je n'ai plus la suite des données. Est-ce que ça peut être du à la très grande quantité de données que j'envoie ?
Et au milieu de la boucle 35, je n'ai plus la suite des données. Est-ce que ça peut être du à la très grande quantité de données que j'envoie ?
Oui, je viens de le faire
Qu'as-tu fait exactement ? le print_r n'a pas à être dans une boucle. Tu fais simplement print_r($_POST) au début de ton script pour voir si tu as bien tes 100 variables ou seulement 35.
Il est possible que ça vienne du volume de données, mais je suis un peu étonné. 35 variables, ce n'est pas énorme, (sauf si tu nous apprends que tu as 50 variables dans chaque boucle).
Qu'as-tu fait exactement ? le print_r n'a pas à être dans une boucle. Tu fais simplement print_r($_POST) au début de ton script pour voir si tu as bien tes 100 variables ou seulement 35.
Il est possible que ça vienne du volume de données, mais je suis un peu étonné. 35 variables, ce n'est pas énorme, (sauf si tu nous apprends que tu as 50 variables dans chaque boucle).
Une bonne quinzaine de données, 35 boucles, ça fait 525 variables.
HTTP n'impose de taille max à un header, mais d'autres logiciels peuvent le faire : Apache limite à 8koctets par défaut.
Si on répartit ces 8 k sur tes 525 variables, ça fait une moyenne de 15 caractères par variable (nom de la variable + valeur + séparateurs) : ça peut être ça. Un peu bizarre quand même, normalement Apache devrait renvoyer une erreur au lieu de ne prendre qu'une partie des données.
Il est possible que ce soit le navigateur que tu utilises qui limite la longueur, j'avoue n'avoir aucune idée à ce sujet.
La réponse à ce problème, c'est de faire un formulaire raisonnable. Tu présentes vraiment à tes visiteurs un formulaire de 100 fois 15 champs ? Sérieusement ?
HTTP n'impose de taille max à un header, mais d'autres logiciels peuvent le faire : Apache limite à 8koctets par défaut.
Si on répartit ces 8 k sur tes 525 variables, ça fait une moyenne de 15 caractères par variable (nom de la variable + valeur + séparateurs) : ça peut être ça. Un peu bizarre quand même, normalement Apache devrait renvoyer une erreur au lieu de ne prendre qu'une partie des données.
Il est possible que ce soit le navigateur que tu utilises qui limite la longueur, j'avoue n'avoir aucune idée à ce sujet.
La réponse à ce problème, c'est de faire un formulaire raisonnable. Tu présentes vraiment à tes visiteurs un formulaire de 100 fois 15 champs ? Sérieusement ?
Ce n'est pas la mer à boire pour Apache, mais si ça dépasse les limites pour lesquelles il est prévu, ça ne marche pas épicétou.
Quand je parlais de formulaire raisonnable, je pensais plutôt aux opérateurs. Ça leur fait potentiellement 1500 informations à introduire avant de valider un formulaire, avec le risque de plantage et donc un gros volume de saisie perdu à chaque fois.
Si tu tiens absolument à tout faire en un seul formulaire, ce qui à mon avis n'est pas une bonne idée, tu peux toujours découper l'envoi des données en plusieurs tranches avec Ajax.
Quand je parlais de formulaire raisonnable, je pensais plutôt aux opérateurs. Ça leur fait potentiellement 1500 informations à introduire avant de valider un formulaire, avec le risque de plantage et donc un gros volume de saisie perdu à chaque fois.
Si tu tiens absolument à tout faire en un seul formulaire, ce qui à mon avis n'est pas une bonne idée, tu peux toujours découper l'envoi des données en plusieurs tranches avec Ajax.
mpmp93
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 339
30 mars 2014 à 10:26
30 mars 2014 à 10:26
Bonjour,
Il faut utiliser foreach:
A+
Il faut utiliser foreach:
foreach ($_POST AS $post) { if (is_numeric($post)) { $total = $total + (int) $post; } }
A+