11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

J'ai un petit souci de javascript voilà :

Je dois uploader un fichier excel pour faire une mise à jour d'une Bdd, j'ai donc un formulaire

<form name="liste" method="post" enctype="multipart/form-data">
<input type="file" name="file" value="file">
<select name="choix" size="1">
<option value="produit1.php">produit1</option>
<option value="produit1.php">produit3</option>
<option value="produit1.php">produit3</option>
</select>
<a href="JavaScript:valid()">Valider</a>
</form> 

Et un petit javascript pour diriger le fichier vers la bonne page qui s'occupe d'insérer les données dans la base.
<SCRIPT language="JavaScript">
function valid()
{
var document.liste.choix.options[document.liste.choix.selectedIndex].value
}
</SCRIPT>

Mais voilà le problème, le fichier n'est pas transmis aux pages suivantes. Alors qu'en html classique c'est a dire en mettant en dur l'url dans le form :

<form method="post" enctype="multipart/form-data" action="produit1.php">

Ca fonctionne parfaitement.

Quelqu'un voit il ou se situe le pb ?

D'avance merci
Modifié par remi71 (20 Nov 2006 - 17:11)
Ton javascript ne fait rien ? Il déclare une variable et c'est tout... Alors forcément Smiley decu


Aussi, c'est très pas bien d'utiliser du JavaScript pour l'envoi d'un formulaire comme ça, ça le rend inaccessible Smiley decu

Met une valeur normalle dans les options, et fait plutôt tout ce qui est vérification/utilisation du bon script côté PHP Smiley smile
FlorentG a écrit :
Ton javascript ne fait rien ? Il déclare une variable et c'est tout... Alors forcément Smiley decu
Même pas !

Je doute que "document.liste.choix.options[document.liste.choix.selectedIndex].value" soit un nom de variable valide en Javascript. Smiley cligne
Bonjour Florent, Eldebaran,

J'ai modifié mon js comme ceci

function valid()
{
location.href = liste.choix.options[liste.choix.selectedIndex].value;
}

C'est ok ça m'envoit bien sur la page de mon choix, mais je perds le fichier attaché, là je sèche vraiment
Salut,

Le navigateur fait pourtant bien ce que tu lui demandes.

Tu changes l'url actuelle (location.href = ...), mais en aucun cas tu lui dis d'envoyer le formulaire.

Il faudrait que tu changes l'adresse d'envoi du formulaire puis que tu le soumettes. Ceci dit, comme précisé par FlorentG, ce n'est pas une solution terrible puisque ça rend le formulaire inaccessible aux personnes qui n'utilisent pas Javascript.

Plutôt que de soumettre à plusieurs pages PHP, ne pourrais-tu pas plutôt en faire une seule qui réagisse différemment selon le paramètre "choix" ?
ok, j'ai donc rajouté

document.liste.submit();

Mais ça n'envoit rien du tout

Pour le reste ce formulaire est destiné uniquement à usage interne, donc JS sera activé, oui je pourrais faire un traitement php, mais je voulais surtout aller vite et du coup je rame Smiley decu
remi71 a écrit :
ok, j'ai donc rajouté

document.liste.submit();

Mais ça n'envoit rien du tout

Pour le reste ce formulaire est destiné uniquement à usage interne, donc JS sera activé, oui je pourrais faire un traitement php, mais je voulais surtout aller vite et du coup je rame Smiley decu
Il faut déjà, comme je te le disais, que tu changes l'adresse d'envoi de ton formulaire.

Pour l'instant, ton formulaire n'a pas d'action, que veux-tu qu'il fasse quand tu le soumets ?

Il faudrait quelque chose qui ressemble à ça :
document.liste.action = liste.choix.options[liste.choix.selectedIndex].value
mais c'est du bricolage, et javascript n'est pas du tout adapté à ton problème...
Modifié par Eldebaran (20 Nov 2006 - 14:13)
Merci pour vos conseils,
j'ai trouvé où était le problème, betement sur la page php ou j'update la base sql, je ne faisais pas appel à la bonne variable, le nom attendu était "userfile" alors que dans ma balise input j'envoyais "file"
Voici le code modifié

<SCRIPT language="JavaScript">
function valid()
{
document.liste.action = liste.choix.options[liste.choix.selectedIndex].value;
document.liste.submit()
}
</SCRIPT>

<form name="liste" method="post" enctype="multipart/form-data">
<input type="file" name="userfile" value="userfile" size="50">

<select name="choix" size="1" >
<option value="produits1.php">Produits1</option>
<option value="produits2.php">Produits2</option>
</select>

<a href="JavaScript:valid();">Valider</a>
</form>  


Encore merci pour le coup de main, je vais modifier le traitement des infos quand j'aurais un peu plus de temps devant moi, pour eviter d'avoir plusieurs pages Smiley cligne