begin process at 2012 05 30 15:47:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Listes liées et upload sans recharger la page


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Listes liées et upload sans recharger la page

mardi 30 juin 2009 à 06:40:51 | Listes liées et upload sans recharger la page

habroc

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&eacute;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>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</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&eacute;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



Cette discussion est classée dans : mysql, connexion, post, id, array


Répondre à ce message

Sujets en rapport avec ce message

Liste deroulantes liées (en php avec bdd) qui marche presque lol [ par bandzai87 ] Enregistrement des &#233 Erreur de syntaxe!!! [ par lebelm ] Bonjour, J'essaie de créé un form pour ajouter des users. Les infos du user dans une table et les privilèges dans l'autre, mais sa me donne une erreur probleme de session_start [ par metal_death ] Bonjour  j'ai créer un espace membre grace a phpfacile mais j'ai un petit probleme lors de la connection je recois ce message : Warning: session_star Problème d'un script [ par stu76 ] Bonsoir,J'ai écris un petit script qui me permet d'afficher les élèves stocker dans une base de données. Mon prob est que l'affichage par classe fonct connection base sql [ par lorgard ] chaloupj'ai un problem avec un script php il ne veut pas reconaitre la fonction connectvoici le code//on se connecte à la base de donnée$db = mysql_co Pb avec $_GET [ par moon_00 ] Bonjour, problème avec $_POST['recherche_id'] [ par Batman60 ] Bonjour je suis débutant en PHP j'ai un problème avec $_POST[]quand j'actionne sans avoir rempli le </fo Recuperer les données d'1 enr d'1 table et les enregistrer dans 1 autrte table [ par popy29 ] Bonjour,Je réalise un site permettant de consulter les ventes en cours. (auto, bateaux, motos ... etc)L'administrateur doit pouvoir modifier la base d Problème pour modifier un table sql [ par jzel ] Bonjour à tous,Voila j'ais un petit soucis avec une page que j'ai crée. Le but de mon script est de lister les tutoriaux présent sur mon site (dans la Problème de $_POST [ par sagaff ] Bonjours, j'ai un problème avec ce code, en effet lorsque qu'on clique sur le input de validation ()  rien ne se passe, j'ai page blanche, si je met u


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,312 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales