Bonjour ,
J'ai un problème avec le code suivant ; pour lequel j'ai 4 listes liées , et un upload sur la meme page , qui doivent renseigner les champs d'un formulaire d'insertion .
Le problème , c'est que lorsque j'ai valider mes choix pour les listes , l'upload ne s'effectue pas . Voici le code :
On récupère si elle existe la valeur de la catégorie envoyée par le formulaire */
$serveur = "localhost";
$admin = "root";
$mdp = "";
$facevspile = "facevspile";
$idr = isset($_POST['libelle'])?$_POST['libelle']:null;
$ids = isset($_POST['libel'])?$_POST['libel']:null;
$idt = isset($_POST['lib'])?$_POST['lib']:null;
?>
<?php
if(isset($_POST['ok']) && isset($_POST['libel']) && $_POST['libel'] != "" && isset($_POST['lib']) && $_POST['lib'] != "" && isset($_POST['nom']) && $_POST['nom'] != "")
{
$region_selectionnee = $_POST['libelle'];
$dept_selectionne = $_POST['libel'];
$ter_selectionne = $_POST['lib'];
$qua_selectionne = $_POST['nom'];
?>
<?php
}
?>
<?php
/* On établit la connexion à MySQL avec mysql_pconnect() plutôt qu'avec mysql_connect()
* car on aura besoin de la connexion un peu plus loin dans le script */
$connexion = mysql_pconnect($serveur, $admin, $mdp);
if($connexion != false)
{
$choixbase = mysql_select_db($database_facevspile, $connexion);
$sql1 = "SELECT `id`, `libelle`".
" FROM `shop_categories`".
" ORDER BY `id`";
$rech_regions = mysql_query($sql1);
$code_region = array();
$region = array();
/* On active un compteur pour les régions */
$nb_regions = 0;
if($rech_regions != false)
{
while($ligne = mysql_fetch_assoc($rech_regions))
{
array_push($code_region, $ligne['id']);
array_push($region, $ligne['libelle']);
/* On incrémente de compteur */
$nb_regions++;
}
}
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
<fieldset>
<legend>Sélectionnez la catégorie de vente</legend>
<select name="libelle" id="libelle" onchange="document.forms['chgdept'].submit();">
<option value="-1">- - - Choisissez une catégorie - - -</option>
<?php
for($i = 0; $i < $nb_regions; $i++)
{
?>
<option value="<?php echo($code_region[$i]); ?>"<?php echo((isset($idr) && $idr == $code_region[$i])?" selected=\"selected\"":null); ?>><?php echo($region[$i]); ?></option>
<?php
}
?>
</select>
<?php
mysql_free_result($rech_regions);
/* On commence par vérifier si on a envoyé un numéro de catégorie et le cas échéant s'il est différent de -1 */
if(isset($idr) && $idr != -1)
{
/* Création de la requête pour avoir la catégorie secondaire de cette catégorie */
$sql2 = "SELECT `id`, `libel`".
" FROM `shop_s_categorie`".
" WHERE `grandpere` = ". $idr ."".
" ORDER BY `id`;";
if($connexion != false)
{
$rech_dept = mysql_query($sql2, $connexion);
/* Un petit compteur pour les départements */
$nd = 0;
/* On crée deux tableaux pour les numéros et les noms des départements */
$code_dept = array();
$nom_dept = array();
/* On va mettre les numéros et noms des départements dans les deux tableaux */
while($ligne_dept = mysql_fetch_assoc($rech_dept))
{
array_push($code_dept, $ligne_dept['id']);
array_push($nom_dept, $ligne_dept['libel']);
$nd++;
}
/* Maintenant on peut construire la liste déroulante */
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post" id="ter"> <select name="libel" id="libel" onchange="document.forms['ter'].submit();">
<option value="-1">- - - Choisissez une catégorie - - -</option>
<?php
for($d = 0; $d<$nd; $d++)
{
?>
<option value="<?php echo($code_dept[$d]); ?>"<?php echo((isset($ids) && $ids == $code_dept[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_dept[$d]); ?></option>
<?php
}
?>
</select>
<?php
}
/* Un petit coup de balai */
mysql_free_result($rech_dept);
/* On commence par vérifier si on a envoyé un numéro de catégorie et le cas échéant s'il est différent de -1 */
if(isset($ids) && $ids != -1)
{
/* Création de la requête pour avoir la catégorie secondaire de cette catégorie */
$sql3 = "SELECT `id`, `lib`".
" FROM `shop_ss_categorie`".
" WHERE `pere` = ". $ids ."".
" ORDER BY `id`;";
if($connexion != false)
{
$rech_ter = mysql_query($sql3, $connexion);
/* Un petit compteur pour les départements */
$ne = 0;
/* On crée deux tableaux pour les numéros et les noms des départements */
$code_ter = array();
$nom_ter = array();
/* On va mettre les numéros et noms des départements dans les deux tableaux */
while($ligne_ter = mysql_fetch_assoc($rech_ter))
{
array_push($code_ter, $ligne_ter['id']);
array_push($nom_ter, $ligne_ter['lib']);
$ne++;
}
/* Maintenant on peut construire la liste déroulante */
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post" id="qua"> <select name="lib" id="lib" onchange="document.forms['qua'].submit();">
<option value="-1">- - - Choisissez une catégorie - - -</option>
<?php
for($e = 0; $e<$ne; $e++)
{
?>
<option value="<?php echo($code_ter[$e]); ?>"<?php echo((isset($idt) && $idt == $code_ter[$e])?" selected=\"selected\"":null); ?>><?php echo($nom_ter[$e]); ?></option>
<?php
}
?>
</select>
<?php
}
/* Un petit coup de balai */
mysql_free_result($rech_ter);
/* On commence par vérifier si on a envoyé un numéro de catégorie et le cas échéant s'il est différent de -1 */
if(isset($idt) && $idt != -1)
{
/* Création de la requête pour avoir la catégorie secondaire de cette catégorie */
$sql4 = "SELECT `id`, `nom`".
" FROM `shop_valeurs`".
" WHERE `fils` = ". $idt ."".
" ORDER BY `id`;";
if($connexion != false)
{
$rech_qua = mysql_query($sql4, $connexion);
/* Un petit compteur pour les départements */
$nf = 0;
/* On crée deux tableaux pour les numéros et les noms des départements */
$code_qua = array();
$nom_qua = array();
/* On va mettre les numéros et noms des départements dans les deux tableaux */
while($ligne_qua = mysql_fetch_assoc($rech_qua))
{
array_push($code_qua, $ligne_qua['id']);
array_push($nom_qua, $ligne_qua['nom']);
$nf++;
}
/* Maintenant on peut construire la liste déroulante */
?>
<select name="nom" id="nom">
<?php
for($f = 0; $f<$nf; $f++)
{
?>
<option value="<?php echo($code_qua[$f]); ?>"<?php echo((isset($qua_selectionne) && $qua_selectionne == $code_qua[$f])?" selected=\"selected\"":null); ?>><?php echo($nom_qua[$f]); ?></option>
<?php
}
?>
</select>
<?php
}
/* Un petit coup de balai */
mysql_free_result($rech_qua);
}
}
}
?>
<br /><form method="POST" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" enctype="multipart/form-data"> <fieldset> <legend>Transférer l'image de l'avers </legend>
<input type="hidden" name="MAX_FILE_SIZE" value="2000000">
Sélectionner votre image : <input type="file" name="avatar">
<input type="submit" name="ok" id="ok" value="Valider vos choix" />
</fieldset>
</form> <?php if (isset($_FILES['avatar']['name'])) {
// traitement
$dossier = 'images/avers/';
$fichier = basename($_FILES['avatar']['name']);
$taille_maxi = 2000000;
$taille = filesize($_FILES['avatar']['tmp_name']);
$extensions = array('.jpg', '.jpeg');
$extension = strrchr($_FILES['avatar']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type jpg ...';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
$time = date("YmdHis");
$S = substr(md5($fichier.$time),0,15);
$Nom = $S.".jpg";
if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $Nom)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}
}
print_r($_FILES);
?>
<?php
/* Terminé, on ferme la connexion */
mysql_close($connexion);
}
else
{
/* Si on arrive là, c'est pas bon signe, il faut vérifier les
* paramètres de connexion, mot de passe, serveur pas démarré etc... */
?>
<p>Un incident s'est produit lors de la connexion à la base de données, veuillez essayer à nouveau ultérieurement.</p>
<?php
}
?>
De plus , j'ai essayé en mettant un submit pour les listes et un pour l'upload ; mais là , si l'upload est ok , cela vient effacer les données renseignées par les listes ...???
/* On récupère si elle existe la valeur de la catégorie envoyée par le formulaire */
$serveur = "localhost";
$admin = "root";
$mdp = "";
$facevspile = "facevspile";
$idr = isset($_POST['libelle'])?$_POST['libelle']:null;
$ids = isset($_POST['libel'])?$_POST['libel']:null;
$idt = isset($_POST['lib'])?$_POST['lib']:null;
?>
<?php
if(isset($_POST['ok']) && isset($_POST['libel']) && $_POST['libel'] != "" && isset($_POST['lib']) && $_POST['lib'] != "" && isset($_POST['nom']) && $_POST['nom'] != "")
{
$region_selectionnee = $_POST['libelle'];
$dept_selectionne = $_POST['libel'];
$ter_selectionne = $_POST['lib'];
$qua_selectionne = $_POST['nom'];
?>
<?php
}
?>
<?php
/* On établit la connexion à MySQL avec mysql_pconnect() plutôt qu'avec mysql_connect()
* car on aura besoin de la connexion un peu plus loin dans le script */
$connexion = mysql_pconnect($serveur, $admin, $mdp);
if($connexion != false)
{
$choixbase = mysql_select_db($database_facevspile, $connexion);
$sql1 = "SELECT `id`, `libelle`".
" FROM `shop_categories`".
" ORDER BY `id`";
$rech_regions = mysql_query($sql1);
$code_region = array();
$region = array();
/* On active un compteur pour les régions */
$nb_regions = 0;
if($rech_regions != false)
{
while($ligne = mysql_fetch_assoc($rech_regions))
{
array_push($code_region, $ligne['id']);
array_push($region, $ligne['libelle']);
/* On incrémente de compteur */
$nb_regions++;
}
}
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
<fieldset>
<legend>Sélectionnez la catégorie de vente</legend>
<select name="libelle" id="libelle" onchange="document.forms['chgdept'].submit();">
<option value="-1">- - - Choisissez une catégorie - - -</option>
<?php
for($i = 0; $i < $nb_regions; $i++)
{
?>
<option value="<?php echo($code_region[$i]); ?>"<?php echo((isset($idr) && $idr == $code_region[$i])?" selected=\"selected\"":null); ?>><?php echo($region[$i]); ?></option>
<?php
}
?>
</select>
<?php
mysql_free_result($rech_regions);
/* On commence par vérifier si on a envoyé un numéro de catégorie et le cas échéant s'il est différent de -1 */
if(isset($idr) && $idr != -1)
{
/* Création de la requête pour avoir la catégorie secondaire de cette catégorie */
$sql2 = "SELECT `id`, `libel`".
" FROM `shop_s_categorie`".
" WHERE `grandpere` = ". $idr ."".
" ORDER BY `id`;";
if($connexion != false)
{
$rech_dept = mysql_query($sql2, $connexion);
/* Un petit compteur pour les départements */
$nd = 0;
/* On crée deux tableaux pour les numéros et les noms des départements */
$code_dept = array();
$nom_dept = array();
/* On va mettre les numéros et noms des départements dans les deux tableaux */
while($ligne_dept = mysql_fetch_assoc($rech_dept))
{
array_push($code_dept, $ligne_dept['id']);
array_push($nom_dept, $ligne_dept['libel']);
$nd++;
}
/* Maintenant on peut construire la liste déroulante */
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post" id="ter"> <select name="libel" id="libel" onchange="document.forms['ter'].submit();">
<option value="-1">- - - Choisissez une catégorie - - -</option>
<?php
for($d = 0; $d<$nd; $d++)
{
?>
<option value="<?php echo($code_dept[$d]); ?>"<?php echo((isset($ids) && $ids == $code_dept[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_dept[$d]); ?></option>
<?php
}
?>
</select>
<?php
}
/* Un petit coup de balai */
mysql_free_result($rech_dept);
/* On commence par vérifier si on a envoyé un numéro de catégorie et le cas échéant s'il est différent de -1 */
if(isset($ids) && $ids != -1)
{
/* Création de la requête pour avoir la catégorie secondaire de cette catégorie */
$sql3 = "SELECT `id`, `lib`".
" FROM `shop_ss_categorie`".
" WHERE `pere` = ". $ids ."".
" ORDER BY `id`;";
if($connexion != false)
{
$rech_ter = mysql_query($sql3, $connexion);
/* Un petit compteur pour les départements */
$ne = 0;
/* On crée deux tableaux pour les numéros et les noms des départements */
$code_ter = array();
$nom_ter = array();
/* On va mettre les numéros et noms des départements dans les deux tableaux */
while($ligne_ter = mysql_fetch_assoc($rech_ter))
{
array_push($code_ter, $ligne_ter['id']);
array_push($nom_ter, $ligne_ter['lib']);
$ne++;
}
/* Maintenant on peut construire la liste déroulante */
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post" id="qua"> <select name="lib" id="lib" onchange="document.forms['qua'].submit();">
<option value="-1">- - - Choisissez une catégorie - - -</option>
<?php
for($e = 0; $e<$ne; $e++)
{
?>
<option value="<?php echo($code_ter[$e]); ?>"<?php echo((isset($idt) && $idt == $code_ter[$e])?" selected=\"selected\"":null); ?>><?php echo($nom_ter[$e]); ?></option>
<?php
}
?>
</select>
<?php
}
/* Un petit coup de balai */
mysql_free_result($rech_ter);
/* On commence par vérifier si on a envoyé un numéro de catégorie et le cas échéant s'il est différent de -1 */
if(isset($idt) && $idt != -1)
{
/* Création de la requête pour avoir la catégorie secondaire de cette catégorie */
$sql4 = "SELECT `id`, `nom`".
" FROM `shop_valeurs`".
" WHERE `fils` = ". $idt ."".
" ORDER BY `id`;";
if($connexion != false)
{
$rech_qua = mysql_query($sql4, $connexion);
/* Un petit compteur pour les départements */
$nf = 0;
/* On crée deux tableaux pour les numéros et les noms des départements */
$code_qua = array();
$nom_qua = array();
/* On va mettre les numéros et noms des départements dans les deux tableaux */
while($ligne_qua = mysql_fetch_assoc($rech_qua))
{
array_push($code_qua, $ligne_qua['id']);
array_push($nom_qua, $ligne_qua['nom']);
$nf++;
}
/* Maintenant on peut construire la liste déroulante */
?>
<select name="nom" id="nom">
<?php
for($f = 0; $f<$nf; $f++)
{
?>
<option value="<?php echo($code_qua[$f]); ?>"<?php echo((isset($qua_selectionne) && $qua_selectionne == $code_qua[$f])?" selected=\"selected\"":null); ?>><?php echo($nom_qua[$f]); ?></option>
<?php
}
?>
</select>
<?php
}
/* Un petit coup de balai */
mysql_free_result($rech_qua);
}
}
}
?>
<br /><input type="submit" name="ok" id="ok" value="Valider vos choix" />
</fieldset>
</form>
<?php
/* Terminé, on ferme la connexion */
mysql_close($connexion);
}
else
{
/* Si on arrive là, c'est pas bon signe, il faut vérifier les
* paramètres de connexion, mot de passe, serveur pas démarré etc... */
?>
<p>Un incident s'est produit lors de la connexion à la base de données, veuillez essayer à nouveau ultérieurement.</p>
<?php
}
?>
</div>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<div id="apDiv21" style="position:absolute; width:950px; height:115px; z-index:12; left: 22px; top: 321px;">
<form method="POST" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" enctype="multipart/form-data"> <fieldset> <legend>Transférer l'image de l'avers </legend>
<input type="hidden" name="MAX_FILE_SIZE" value="2000000">
Sélectionner votre image : <input type="file" name="avatar">
<input type="submit" name="envoyer" value="Envoyer le fichier">
</fieldset> </form>
<?php if (isset($_FILES['avatar']['name'])) {
$dossier = 'images/avers/';
$fichier = basename($_FILES['avatar']['name']);
$taille_maxi = 2000000;
$taille = filesize($_FILES['avatar']['tmp_name']);
$extensions = array('.jpg', '.jpeg');
$extension = strrchr($_FILES['avatar']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type jpg ...';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
$time = date("YmdHis");
$S = substr(md5($fichier.$time),0,15);
$Nom = $S.".jpg";
if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $Nom)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}
}
?>
Des pistes ?
HAbroc