A voir également:
- Php $_post
- Easy php - Télécharger - Divers Web & Internet
- \R php ✓ - Forum PHP
- Br php ✓ - Forum PHP
- Expert php - Télécharger - Langages
- Php echo image ✓ - Forum PHP
7 réponses
Akronos
Messages postés
140
Date d'inscription
jeudi 6 janvier 2011
Statut
Membre
Dernière intervention
31 janvier 2011
32
25 janv. 2011 à 12:36
25 janv. 2011 à 12:36
Undefined offset signifie que l'indice n'existe pas.
Soit dit en passant, l'index d'un tableau (sa première ligne) est 0.
Celà ne va donc pas de 1 à n, mais de 0 à (n - 1).
Je n'ai pas regardé ton code donc ej sais pas s'il y a d'autres erreurs.
Soit dit en passant, l'index d'un tableau (sa première ligne) est 0.
Celà ne va donc pas de 1 à n, mais de 0 à (n - 1).
for ($i = 0; $i <= $nombre - 1; $i++) { echo $_POST[$i]; }
Je n'ai pas regardé ton code donc ej sais pas s'il y a d'autres erreurs.
Oui je sais que ça commence à 0, cependant je les nommes ces variables, et je les nomme de 1 à n. De plus j'ai l'erreur pour toutes les valeurs de i, et pas seulement pour la derniere, donc le problème ne vient pas de là je pense.
Akronos
Messages postés
140
Date d'inscription
jeudi 6 janvier 2011
Statut
Membre
Dernière intervention
31 janvier 2011
32
Modifié par Akronos le 25/01/2011 à 13:15
Modifié par Akronos le 25/01/2011 à 13:15
Hmmm...
Voyons ce que t'as dedans (j'insiste sur le fait que Undefined offset signifie que l'indice n'existe pas). de plus normalement l'erreur est: Notice Undefined offset: n (ou n correspond à l'index qui pose problème et qui n'existe pas).
echo '######## Tableau POST:<pre>'; print_r($_POST); echo '</pre>';
Voyons ce que t'as dedans (j'insiste sur le fait que Undefined offset signifie que l'indice n'existe pas). de plus normalement l'erreur est: Notice Undefined offset: n (ou n correspond à l'index qui pose problème et qui n'existe pas).
Ah ok merci ça me met sur un piste. Il semblerait que les input hidden à l'intérieur de la boucle du javascript de sont pas envoyées dans le POST. Si je met un alert, elle sont bien affichées. J'en conclut que l'erreur est bien dans l'envoi. Mais pourquoi les autres données sont-elles envoyées ?
Excusez moi si je pose des questions naïves, je ne fais du php que depuis une semaine.
Excusez moi si je pose des questions naïves, je ne fais du php que depuis une semaine.
Akronos
Messages postés
140
Date d'inscription
jeudi 6 janvier 2011
Statut
Membre
Dernière intervention
31 janvier 2011
32
25 janv. 2011 à 13:49
25 janv. 2011 à 13:49
Ctrl+U pour voir le code source de la page, vérifie qu'il y a bien les hidden avec le bon name et id. J'en doute.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Dans le source je retrouve exactement ce que j'ai écrit dans notepad (il me semble que c'est normal vu que je fais ces hiden en javascript), et donc ils apparaissent bien.
Ca devient rageant je suis là-dessus depuis 2 jours >_<
Ca devient rageant je suis là-dessus depuis 2 jours >_<
Akronos
Messages postés
140
Date d'inscription
jeudi 6 janvier 2011
Statut
Membre
Dernière intervention
31 janvier 2011
32
25 janv. 2011 à 17:06
25 janv. 2011 à 17:06
Tu peux faire un copié collé du source dans les balise < code> et </ code> ?
Ajourligne.php :
Ajout.php :
Excusez-moi je n'avais pas vu ce bouton.
<?php session_start(); ?> <html> <head> </head> <body> <?php try { if ($_SESSION['from_form']) { $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=localhost;dbname=panjiia', 'root', '', $pdo_options); echo "Ajout de lignes au formulaire ".$_SESSION['lib_form']; ?> <form method="post" action="ajout.php" id="form" name="form"> <p><label for="newline">Saisir le libellé d'une question</label> : <input type="text" id="newline" name="newline" size="100" maxlength="200"> <br/><label for="type">Type de question</label> : <select name="type" id="type"> <option>Radio <option>CheckBox <option>Liste <option>Texte </select> <br/><label for="nombre">Nombre d'options possibles (sauf texte)</label> : <input type="text" id="nombre" name="nombre"> <br/><input type="button" value="Valider puis ajouter" id="ok_add"> <input type="button" value="Valider puis terminer" id="ok_end"> <script type="text/javascript"> var add = document.getElementById('ok_add'); var end = document.getElementById('ok_end'); var form = document.getElementById('form'); end.onclick = function () { var nombre = document.getElementById('nombre').value; var limite = parseInt(nombre); var i = 1; while (i <= limite) { var reponse = document.createElement('input'); reponse.type = 'hidden'; var indice = i+''; reponse.name = indice; reponse.value = prompt('Saisir une réponse :'); i++; } form.submit(); } </script> </form> <?php } } catch (exception $e) { die('Erreur : '.$e->getmessage()); } ?> </body> </html>
Ajout.php :
<?php session_start(); $nombre = intval($_POST['nombre']); for ($i = 1; $i <= $nombre; $i++) { echo $_POST[$i]; } ?>
Excusez-moi je n'avais pas vu ce bouton.
Pour ceux qui rencontreraient le même problème : j'ai trouvé ! :D
De ce que j'ai lu ce que j'avais fait devrait marcher sur FireFox mais pas sur IE (j'avouerai honteusement que je n'ai pas vérifié sur FF).
Il faut pour IE rajouter dans la boucle javascript :
De ce que j'ai lu ce que j'avais fait devrait marcher sur FireFox mais pas sur IE (j'avouerai honteusement que je n'ai pas vérifié sur FF).
Il faut pour IE rajouter dans la boucle javascript :
while (i <= limite) { var reponse = document.createElement('input'); reponse.type = 'hidden'; var indice = i+''; reponse.name = indice; reponse.value = prompt('Saisir une réponse :'); form.appendChild(reponse); // <- Ceci. i++; }