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