J'apprends le php sur le tas et je ne m'en sortais pas trop mal jusqu'à ce problème qui me bloque depuis plusieurs jours.
Depuis un fichier Data.php, je récupère des données d'une API en JSON, que j'affiche dans le navigateur d'une part et place dans un formulaire d'autre part. Il s'agit d'un array de 5 colonnes et autant de lignes que de données à récupérer.
Dans mon formulaire, je crée un input hidden nommé table[i] par nouvelle ligne et un sous-input table[i][j] par colonne de la ligne i. Je l'envoie ensuite par méthode POST vers un fichier Data_post.php, qui se charge de l'envoyer vers une base de données personnelle.
Tout cela fonctionnait très bien jusqu'à ce que je teste avec des plages de données plus "volumineuses". Dans ce cas, ma page Data_post.php me retourne le message :
Voici la partie du code concernée dans Data_post.php :
De ce que je comprends le fichier ne reconnait pas une des variables transmises par le formulaire. En cherchant un peu, je me rends compte que cela n'arrive qu'à partir de la 358ème itération de la boucle for. Comme si le formulaire s'envoyait correctement pour les 357 premières lignes mais pas pour les suivantes.
En inspectant la page Data.php d'ou vient le formulaire, toutes les variables sont bien définies meme au dela de la ligne 358 :
Cela viendrait donc de la transmission entre Data.php et Data_post.php.
J'ai regardé du coté des max_size ou execution_time dans php.ini mais cela m'etonnerait que le problème vienne de la étant donné que mon formulaire reste très léger (ici 358 lignes * une centaine de caractères par ligne environ).
J'espère donc que vous aurez des pistes pour m'aider car vraiment j'ai puisé dans toutes mes conpétences, et pour l'instant rien n'y fait.
Merci de colorer votre code à l'aide du bouton Code
Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: php;">Votre code ici</pre>.
Merci d'éditer votre message pour respecter ce formalisme.
Juste petite astuce de code au passage pour éviter tous les if, elseif ... que tu as mis :
// Variable ou même constante avec define()
$statusCodes = [
'"PK"' => 'Shipment Collected',
'"OB"' => 'Shipment Bound for Destination',
'"HD"' => "Depart to 'Destination'",
'"RV"' => "Receive by 'Destination'",
// Et les autres
];
// Puis dans le code plus qu'a faire
// pas trop compris pourquoi tu devais json_encode ici
// surtout que tu doit y mettre les " pour pouvoir comparer donc bizarre
$statusCode = json_encode('...');
$status = $statusCodes[$statusCode] ?? null;
if ($status === null) {
// error
}
Je pense que le code doit être un peu revu si tu peux le faire car il y a des points à revoir.
Juste petite astuce de code au passage pour éviter tous les if, elseif ... que tu as mis :
// Variable ou même constante avec define()
$statusCodes = [
'"PK"' => 'Shipment Collected',
'"OB"' => 'Shipment Bound for Destination',
'"HD"' => "Depart to 'Destination'",
'"RV"' => "Receive by 'Destination'",
// Et les autres
];
// Puis dans le code plus qu'a faire
// pas trop compris pourquoi tu devais json_encode ici
// surtout que tu doit y mettre les " pour pouvoir comparer donc bizarre
$statusCode = json_encode('...');
$status = $statusCodes[$statusCode] ?? null;
if ($status === null) {
// error
}
Je pense que le code doit être un peu revu si tu peux le faire car il y a des points à revoir.
En effet ce n'est pas optimisé car j'ai ajouté des lignes au compte goutte sans repenser le code. Je vais m'y atteler.
Lamecarlate a écrit:
Bonjour,
des input hidden dans d'autres inputs hidden ? Ça ne devrait pas exister.
Merci pour la remarque, c'est vrai que c'est maladroit. Je vais remplacer ca par des div pour garder la structure du formulaire : des div nommés table[i] contenant des inputs nommés table[i][j].
Pour ceux que ca intéresse, j'ai finalement trouvé la solution à mon problème.
Il fallait modifier max_input_varsdans php.ini, un des seuls paramètres que je n'ai pas pensé à regarder...
Merci pour votre aide dans tous les cas.
- Edité par GGP-- 22 novembre 2019 à 8:10:38
[PHP] Formulaire $POST ne s'envoie pas en entier
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL
Pas d'aide concernant le code par MP, le forum est là pour ça :)