JavaScript et formulaire html/php
Bonjour à tous,
J'ai un petit soucis avec un formulaire html et des fonctions js.
Sur le formulaire j'ai un bouton qui permet à l'utilisateur de télécharger une image, vu que le input type="file" d'origine n'est pas trés beau j'utilise une méthode détournée en faisant appel à des fonctions javascript à coups de "champs cachés" pour modifier le bouton de téléchargement. Je récupère ensuite les valeurs du formulaire en post grâce à nouveau à des champs cachés pour pouvoir les réafficher après validation et vérification du formulaire (qui se fait en php).
Dans mon bouton de téléchargement j'initialise l'affichage à "Télécharger une image" quand le $_POST n'existe pas (premier passage) et ensuite il prend la valeur du chemin de l'image.
Le problème est que si je valide le formulaire sans avoir choisi un chemin ça ne fonctionne pas, le bouton n'affiche rien car le $_POST n'existe pas et je ne comprends pas pourquoi puisque ça marche dans tous les autres cas...
Le html/php:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
|
<?php
//Initialisation des variables
if (!isset($_POST['champsvides']))
{
$_POST['nationalite_equipe'] = null;
$_POST['capacite_stade'] = null;
$_POST['invisible1'] = null;
$_POST['invisible2'] = null;
$_POST['champsvides'] = null;
$_POST['nom_equipe'] = null;
$_POST['nom_stade'] = null;
}
if (!isset ($_POST['invisible3']))
{
$_POST['invisible3'] = "Télécharger une image";
}
echo $_POST['invisible3'];
if (!isset ($_SERVER['_FILE']))
{
$_SERVER['_FILE'] = null;
}
//Récupération des données de nationalité des championnats
$j = 0;
for ($i = 0; $i < count($nom_pays); $i++)
{
if ($i == 3 or $i == 4 or $i == 6 or $i == 12 or $i == 15 or $i == 33 or $i == 43 or $i == 62 or $i == 64 or $i == 67 or $i == 114 or $i == 116 or $i == 142 or $i == 176 or $i == 195)
{
$nationalite_championnat[$j] = $nom_pays[$i];
$j++;
}
}
//Récupération des données de capacités de stades
$j = 10000;
for ($i = 0; $i < 10; $i++)
{
$capacite_stade[$i] = $j;
$j += 10000;
}
?>
<div id="pages_tdb">
<!Affichage du formulaire>
<form id="form_creation_equipe" method="post" action="<?php echo $_SERVER['_FILE'] ?>" enctype="multipart/form-data">
<fieldset>
<legend>Equipe</legend>
<input type="hidden" name="champsvides" value="true">
<p><label id="labels_formulaire3" for="nom_equipe"> Nom : </label><input id="nom_equipe" type="text" name="nom_equipe" maxlength="30" value='<?php echo ($_POST['nom_equipe']); ?>' class='<?php echo (empty($_POST['nom_equipe']) and $_POST['champsvides']=="true")?"champsvides":"champsremplis"; ?>'/></p>
<p><label id="labels_formulaire3" for="nationalite_equipe"> Championnat : </label><select id="nationalite_equipe" name="nationalite_equipe" onchange="afficher_prix_championnat('nationalite_equipe')">
<?php
for ($i = 0; $i < count($nationalite_championnat); $i++)
{
if ($_POST['nationalite_equipe'] == $nationalite_championnat[$i])
{
?>
<option value="<?php echo $nationalite_championnat[$i];?>" selected><?php echo $nationalite_championnat[$i];?></option>
<?php
}
else
{
?>
<option value="<?php echo $nationalite_championnat[$i];?>"><?php echo $nationalite_championnat[$i];?></option>
<?php
}
}
?>
</select></p>
<p><label id="labels_formulaire3"> Logo : </label>
<input type="file" id="hiddenfile" name="hiddenfile" style="display:none" onChange="getvalue()"/>
<input type="hidden" name="invisible3"/>
<input type="button" id="bouton_telechargement" name="bouton_telechargement" value='<?php echo ($_POST['bouton_telechargement']); ?>' onclick="getfile()"/></p>
<p><label id="labels_formulaire3"> Prix : </label><label type="text" name="prix_equipe" id="labels_formulaire5"></label></p>
<input name="invisible1" type="hidden">
</fieldset>
<fieldset>
<legend>Stade</legend>
<p><label id="labels_formulaire3" for="nom_stade"> Nom : </label><input id="nom_stade" type="text" name="nom_stade" maxlength="30" value='<?php echo ($_POST['nom_stade']); ?>' class='<?php echo (empty($_POST['nom_stade']) and $_POST['champsvides']=="true")?"champsvides":"champsremplis"; ?>'/></p>
<p><label id="labels_formulaire3" for="capacite_stade"> Capacité : </label><select id="capacite_stade" name="capacite_stade" onchange="afficher_prix_stade('capacite_stade')">
<?php
for ($i = 0; $i < count($capacite_stade); $i++)
{
if ($_POST['capacite_stade'] == $capacite_stade[$i])
{
?>
<option value="<?php echo $capacite_stade[$i];?>" selected><?php echo $capacite_stade[$i];?></option>
<?php
}
else
{
?>
<option value="<?php echo $capacite_stade[$i];?>"><?php echo $capacite_stade[$i];?></option>
<?php
}
}
?>
</select></p>
<p><label id="labels_formulaire3"> Prix : </label><label id="labels_formulaire6"></label></p>
<input name="invisible2" type="hidden">
</fieldset>
<p><div id="messages">Attention la création d'une nouvelle équipe vous coûtera la somme de <span id="somme"></span></div></p>
<p><input id="boutons" type="submit" value="Créer équipe" name="creer_equipe"/></p>
</form>
<?php
//Initialisation de la variable d'erreur
$erreur="false";
//Vérification que tous les champs sont existants
if (isset($_POST['nom_equipe']) and isset($_POST['nom_stade']))
{
//Sécurisation des données issues de l'utilisateur
$_POST['champsvides'] = htmlspecialchars($_POST['champsvides']);
$_POST['invisible1'] = htmlspecialchars($_POST['invisible1']);
$_POST['invisible2'] = htmlspecialchars($_POST['invisible2']);
$_POST['invisible3'] = htmlspecialchars($_POST['invisible3']);
$_POST['nom_equipe'] = htmlspecialchars($_POST['nom_equipe']);
$_POST['nom_stade'] = htmlspecialchars($_POST['nom_stade']);
//Vérification que tous les champs sont remplis
if (empty($_POST['nom_equipe']) or empty($_POST['nom_stade']))
{
?>
<label id="message_erreur"> Veuillez remplir tous les champs svp !</label>
<?php
$erreur="true";
}
//Recherche des nom d'équipes existants dans la table EQUIPE
$requete = $bdd->prepare('SELECT NOM_EQUIPE FROM EQUIPE WHERE NOM_EQUIPE = ?');
$requete->execute(array($_POST['nom_equipe']));
while ($donnees = $requete->fetch())
{
?>
<label id="message_erreur"> Ce nom d'équipe est déjà existant !</label>
<?php
$erreur="true";
}
$requete->closeCursor();
//Recherche des nom de stades existants dans la table STADE
$requete = $bdd->prepare('SELECT NOM_STADE FROM STADE WHERE NOM_STADE = ?');
$requete->execute(array($_POST['nom_stade']));
while ($donnees = $requete->fetch())
{
?>
<label id="message_erreur"> Ce nom de stade est déjà existant !</label>
<?php
$erreur="true";
}
$requete->closeCursor();
}
?>
</div> |
Les fonctions js :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
function getfile()
{
document.getElementById("hiddenfile").click();
}
function getvalue()
{
form_creation_equipe.invisible3.value = document.getElementById("hiddenfile").value;
form_creation_equipe.bouton_telechargement.value = document.getElementById("hiddenfile").value;
} |
Je précise que je n'ai pas tout mis, le formulaire est une include d'une autre page et donc les fonctions javascript sont appelée dans le head de cette autre page.
Petits screens pour être plus clair:
1er cas chargement de la page aucun problème :
http://img15.hostingpics.net/pics/320064711.png
2ème cas mise d'un chemin à la place de "Télecharger un chemin" dans le bouton aucun problème :
http://img15.hostingpics.net/pics/901815452.png
3ème cas validation du formulaire avec une image téléchargée aucun problème :
http://img15.hostingpics.net/pics/983968463.png
4ème cas validation du formulaire sans téléchargement problème :
http://img15.hostingpics.net/pics/170944894.png
Merci beaucoup de votre aide précieuse, en espérant avoir une réponse...
;)
Jamsss