[PHP] erreur inconnue
okuni
Messages postés
1221
Date d'inscription
Statut
Membre
Dernière intervention
-
okuni Messages postés 1221 Date d'inscription Statut Membre Dernière intervention -
okuni Messages postés 1221 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai le code suivant qui déconne légèrement.
dans mon formulaire, j'ai une liste de champ ayant comme valeur : lien suivit d'un numéro d'identification.
si je remplis 1 seul champ (créé par javascript), tout fonctionne.
Pareil si je rempli 2 ou plus de champ (toujours créé grâce à javascript).
Le problème survient lorsqu'un des champ créé est laissé vide.
ce que j'obtiens au final, c'est ma variable $lien qui est vide.
Merci pour vos aides.
ps : la section webmastering ne fonctionne plus, est-ce normal?
J'ai le code suivant qui déconne légèrement.
dans mon formulaire, j'ai une liste de champ ayant comme valeur : lien suivit d'un numéro d'identification.
si je remplis 1 seul champ (créé par javascript), tout fonctionne.
Pareil si je rempli 2 ou plus de champ (toujours créé grâce à javascript).
Le problème survient lorsqu'un des champ créé est laissé vide.
ce que j'obtiens au final, c'est ma variable $lien qui est vide.
//Vérification des l'url du lien. $lien = ''; $mort = ''; for ($i = 1; !empty($_POST['lien'.$i]); $i++) { if (preg_match("#http://[a-z0-9._/-]+#i", $_POST['lien'.$i])) { $lien .= htmlspecialchars($_POST['lien'.$i]); $lien .= ';'; $_SESSION['formulaire']['lien'.$i] = $_POST['lien'.$i]; $_SESSION['formulaire']['lien_max'] = $i; //création de $mort $mort .= '1;'; } else { $msgerreur .= 'L\'url ' . $_POST['lien'.$i] . ' n\'est pas valide ou vous avez oublié de mettre l\'url, merci de recommencer. Ex d\'url valide : [http:// www.monsite.net<br/>'; } }
Merci pour vos aides.
ps : la section webmastering ne fonctionne plus, est-ce normal?
A voir également:
- [PHP] erreur inconnue
- Freebox erreur video inconnue - Forum Box et Streaming vidéo
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
- Erreur t32 ✓ - Forum Livebox
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
18 réponses
« Le but de ce script est d'enregistré dans ma table plusieurs lien l'un a la suite de l'autre (séparé par ;) avec chaque fois la valeur 1 ou 0 si le lien est mort ou non ($mort) »
Non, on n'enregistre pas plusieurs valeurs dans un champ (sauf cas très exceptionnels), donc tu dois créer une table dédiée à l'enregistrement de tes liens.
Quant à mes question sur le pourquoi du stockage de ces valeurs en session, tu ne m'as pas répondu.
Non, on n'enregistre pas plusieurs valeurs dans un champ (sauf cas très exceptionnels), donc tu dois créer une table dédiée à l'enregistrement de tes liens.
Quant à mes question sur le pourquoi du stockage de ces valeurs en session, tu ne m'as pas répondu.
salut,
utilises la fonction isset($_POST['lien']) qui teste la validité du champ.
tu peux l'utiliser avant d'entamer le boucle for.
utilises la fonction isset($_POST['lien']) qui teste la validité du champ.
tu peux l'utiliser avant d'entamer le boucle for.
Je l'utilise comme condition du for
for ($i = 1; !empty($_POST['lien'.$i]); $i++)
Ce que je ne comprend pas c'est que ça marche uniquement si tous les champs sont rempli.
alors que ça devrait marcher tous les temps ou au moins avec le premier champ rempli
qui est toujours $_POST['lien1']
for ($i = 1; !empty($_POST['lien'.$i]); $i++)
Ce que je ne comprend pas c'est que ça marche uniquement si tous les champs sont rempli.
alors que ça devrait marcher tous les temps ou au moins avec le premier champ rempli
qui est toujours $_POST['lien1']
empty vérifie si la variable contient une valeur nulle ou pas
isset vérifie si la variable existe ou pas
ce n'est pas pareil il me semble
isset vérifie si la variable existe ou pas
ce n'est pas pareil il me semble
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
en utilisant empty, je vérifie ici en même temps si ma variable est égal à 0 ou non. si c'est le cas, elle est soit véritablement égal à 0 et donc je m'arrete, soit elle n'existe pas donc je m'arrête aussi.
J'ai quand même testé avec le isset mais aucun changement.
Une autre suggestion? :)
J'ai quand même testé avec le isset mais aucun changement.
Une autre suggestion? :)
Ce n'est pas de cette façon que l'on passe plusieurs valeurs dans un champ de formulaire.
On utilise les tableaux.
Après un simple foreach pour parcourir $_POST['lien']
Idem lorsque tu stockes en sessions, cela devrait-être $_SESSION['formulaire'][$i]['lien'], etc..
On utilise les tableaux.
<input type="text" name="lien[]" />
Après un simple foreach pour parcourir $_POST['lien']
Idem lorsque tu stockes en sessions, cela devrait-être $_SESSION['formulaire'][$i]['lien'], etc..
Si j'écris simplement lien[x] (où x représente un numéro), $_POST['lien'] sera automatiquement transformé en array?
Je n'ai pas compris ce que tu dis, c'est la paire de crochets qui indique que $_POST['lien'] sera un array.
Si tu as besoin de passer un index en même temps que la valeur, en effet oui, il faut mettre l'index dans les crochets.
Si tu as besoin de passer un index en même temps que la valeur, en effet oui, il faut mettre l'index dans les crochets.
Ok merci pour l'astuce, tout fonctionne maintenant. :)
au fait, un peu de HS mais comment ce fait-il que la partie webmastering ne fonctionne plus?
au fait, un peu de HS mais comment ce fait-il que la partie webmastering ne fonctionne plus?
Marrante ? XD
Je ne sais pas pourquoi ça déconne chez toi, vide ton cache navigateur au cas où, et si t'as toujours ce bug, poste dans le forum suggestion car là, il est bien bizarre ce bug :-D
Je ne sais pas pourquoi ça déconne chez toi, vide ton cache navigateur au cas où, et si t'as toujours ce bug, poste dans le forum suggestion car là, il est bien bizarre ce bug :-D
C'est bon, c'était une erreur dans le cache.
Mais pourquoi j'avais une image, je ne comprendrai jamais.
Mais pourquoi j'avais une image, je ne comprendrai jamais.
après plusieurs test, il réside encore un bug :/
voici les codes :
page formulaire :
le code de la page cible du formulaire.
si dans mon formulaire, je place 2 liens, dans ma base de donnée, je n'aurai que le dernier lien enregistré. Le premier aura été ignioré ou supprimer, je ne sais pas trop.
voici les codes :
page formulaire :
<td><label for="lien">URL : <font color="#FF0000">*</font></label></td> <td> <!--ajout champ--> <script> function create_champ(i) { var i2 = i + 1; document.getElementById('leschamps_'+i).innerHTML = '<input type="text" name="lien['+i+']" size="40px" class="galerieBtn" /></span>'; document.getElementById('leschamps_'+i).innerHTML += (i <= 10) ? '<br /><span id="leschamps_'+i2+'"><a href="javascript:create_champ('+i2+')">Ajouter un champs</a></span>' : ''; } </script> <?php $n = 1; //session if (isset($_SESSION['formulaire']['lien'])) { for ($n = 1; isset($_SESSION['formulaire']['lien'][$n]); $n++) { echo '<input type="text" name="lien['.$n.']" id="lien['.$n.']" size="40px" value="'.$_SESSION['formulaire']['lien'][$n].'" class="galerieBtn"><br/>'; } } else { echo '<input type="text" name="lien[1]" id="lien[1]" size="40px" class="galerieBtn">'; } echo '<br/><span id="leschamps_'.$n.'"><a href="javascript:create_champ('.$n.')">Ajouter un champs</a></span>'; ?> </td>
le code de la page cible du formulaire.
//Vérification des l'url du lien. $lien = ''; $mort = ''; for ($i = 1; !empty($_POST['lien'][$i]); $i++) { if (preg_match("#http://[a-z0-9._/-]+#i", $_POST['lien'][$i])) { $lien .= htmlspecialchars($_POST['lien'][$i]); $lien .= ';'; $_SESSION['formulaire']['lien'][$i] = $_POST['lien'][$i]; $_SESSION['formulaire']['lien_max'] = $i; //création de $mort $mort .= '1;'; } else { $msgerreur .= 'L\'url ' . $_POST['lien'][$i] . ' n\'est pas valide ou vous avez oublié de mettre l\'url, merci de recommencer. Ex d\'url valide : http://www.blizer.net/dossier/page.html<br/>'; } }
si dans mon formulaire, je place 2 liens, dans ma base de donnée, je n'aurai que le dernier lien enregistré. Le premier aura été ignioré ou supprimer, je ne sais pas trop.
Il y a beaucoup de choses à revoir dans ton code.
Mais comme je ne saisis pas trop ce que le tout doit faire, je ne sais pas trop, surtout le stockage de telles valeurs en session.
Il serait bien, que tu détailles un peu le but de ce script, et également la structure de ta/tes table(s).
Mais comme je ne saisis pas trop ce que le tout doit faire, je ne sais pas trop, surtout le stockage de telles valeurs en session.
Il serait bien, que tu détailles un peu le but de ce script, et également la structure de ta/tes table(s).
le but de ce script est d'enregistré dans ma table plusieurs lien l'un a la suite de l'autre (séparé par ;) avec chaque fois la valeur 1 ou 0 si le lien est mort ou non ($mort)
ma table se compose simplement d'un champ lien et d'un champ mort.
l'utilisateurs peut entrer autant de lien qu'il veut et tout ces liens doivent se retrouver dans la base de donnée séparé par ; pour pouvoir les dissocier plus tard.
ps : je n'ai pas le temps de fort détailler maintenant, je dois partir mais ce soir s'il le faut, je détaillerai plus.
ma table se compose simplement d'un champ lien et d'un champ mort.
l'utilisateurs peut entrer autant de lien qu'il veut et tout ces liens doivent se retrouver dans la base de donnée séparé par ; pour pouvoir les dissocier plus tard.
ps : je n'ai pas le temps de fort détailler maintenant, je dois partir mais ce soir s'il le faut, je détaillerai plus.
Ok pour la table supplémentaire, ce sera surement plus simple.
pour la valeur en session, c'est pour pouvoir la remettre dans le formulaire si jamais l'utilisateur a fait une erreur dans le formulaires.
Je modifierai mon code pour rajouter une table pour mes liens.
Mais pourquoi mon code actuel (même s'il est pas comme il faut ;)) ne fonctionne pas correctement?
pour la valeur en session, c'est pour pouvoir la remettre dans le formulaire si jamais l'utilisateur a fait une erreur dans le formulaires.
Je modifierai mon code pour rajouter une table pour mes liens.
Mais pourquoi mon code actuel (même s'il est pas comme il faut ;)) ne fonctionne pas correctement?