Upload d'image et copie dans champ d'un formulaire [Résolu]

golant 6 Messages postés mercredi 27 décembre 2006Date d'inscription 28 octobre 2009 Dernière intervention - 18 mai 2009 à 01:33 - Dernière réponse : golant 6 Messages postés mercredi 27 décembre 2006Date d'inscription 28 octobre 2009 Dernière intervention
- 24 sept. 2009 à 10:03
Bonsoir,

Novice en PHP, je me retrouve actuellement face à un problème liés à l'Upload d'image sur mon serveur et sauvegarde de l'URL dans une bdd. Je vous explique.
Je suis en train de réaliser une interface de CMS (gestion de contenu) par laquelle l'utilisateur pourra notamment rentrer une news pour son site. Les données rentrées sont stockées sur une table mysql avec les champs suivant : id - date - titre - texte - photo. Le champ photo est censé contenir l'url d'une image stockée sur mon serveur. (Je n'ai pas choisi la solution du stockage de la photo sous forme binaire dans ma table car trop lourd.)

Ma page contient un formulaire contenant les champs date - titre - texte - photo.
Lors de la validation du formulaire, il envoie tout sur ma table. Jusque là tout fonctionne.
Mon problème concerne ce champ photo. J'ai ajouté à coté de ce champ une icone renvoyant à une pop-up permettant à l'utilisateur d'uploader l'image depuis son ordinateur. L'upload fonctionne correctement.
Je voudrais juste que, après l'upload, le nom de l'image ou même l'url complete de l'image se mette dans le champ "photo" de mon formulaire. Je ne sais pas faire cela.
Actuellement, j'affiche les données relatives à la photo uploadée dans la Pop-up et l'utilisateur doit copier et coller manuellement le nom de l'image dans le champ "photo" du formulaire.
Vous me suivez ? En fait, il faudrait que directement après l'upload, mon champ se remplisse automatiquement lorsque je ferme ma pop-up.

Si vous pouviez m'aider ça serait vraiment sympa  !

voilà mon code :

mon formulaire d'ajout : add.php


<hr />
<?php
if (isset($HTTP_POST_VARS)) {
include("base.inc.php");
@mysql_connect ($server, $login, $password)
  or die ("Erreur : connexion a la base de donnees impossible");
@mysql_select_db($base)
  or die ("Erreur : pas de base de donnees ".$base);
 $add_query = "INSERT INTO news ";
 $k = 0;
  while(list($variable, $value) = each($HTTP_POST_VARS)) {
  //make the query
   if ($k) {
    $left_query .= ", $variable";
    $right_query .= ", '$value'";
   } else {
    $left_query = "($variable";
    $right_query = "('$value'";
   }
  $k++;
  }
$add_query .= $left_query.") VALUES ".$right_query.")";
$result_query = mysql_query ($add_query);
mysql_close();
}
?>
<html>
<head>
<title>add page</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.Style1 {font-family: "Trebuchet MS"}
.Style4 {font-size: small; color: #666666; }
-->
</style>
</head>

<center>
<form name="add" action="add.php" method="post">
 ----

     
    Date (cliquez sur l'icone pour ajouter ),
 
 ----

  
    Titre de la News,
 
 ----

  
    Contenu de la News,
 
 ----

     
    Nom de l'image (cliquez sur l'icone pour charger une image  ),
 
 ----

  ,
 

 </form>
</center>

</html>
<hr />
ma pop-up de téléchargement : upload.php
<hr />
<?php $target     = '../../../images/uploads/';
$extension  = 'jpg';
$max_size   = 100000;
$width_max  = 100;
$height_max = 100;

$nom_file   = $_FILES['fichier']['name'];
$taille     = $_FILES['fichier']['size'];
$tmp        = $_FILES['fichier']['tmp_name'];

?>

<html>
<head>
<title>Pop-Up d'Upload</title>
<style type="text/css">
<!--
.Style1 {
 font-family: "Trebuchet MS";
 font-weight: bold;}
.Style2 {font-family: "Trebuchet MS";}
.Style3 {font-size: small; color: #666666; }
}
-->
</style>
</head>


  <?php
if(!empty($_POST['posted'])) { 
        if(!empty($_FILES['fichier']['name'])) { 
        if(substr($nom_file, -3) == $extension) { 
            $infos_img = getimagesize($_FILES['fichier']['tmp_name']); 
                   if(($infos_img[0] <= $width_max) && ($infos_img[1] <= $height_max) && ($_FILES['fichier']['size'] <= $max_size)) { 
                if(move_uploaded_file($_FILES['fichier']['tmp_name'],$target.$_FILES['fichier']['name'])) { 
                    echo 'Image uploadée avec succès !';
                    echo '
';
     echo ' Fichier : ', $_FILES['fichier']['name'], '
';
     echo '/!\ copiez ce nom et collez le ensuite dans le champ NOM DE LIMAGE du formulaire /!\
';
                    echo 'Taille : ', $_FILES['fichier']['size'], ' Octets
';
                    echo 'Largeur : ', $infos_img[0], ' px
';
                    echo 'Hauteur : ', $infos_img[1], ' px
';
                    echo '<hr />';
                    echo '

';
                } else { 
                    echo 'Problème lors de l\'upload !

', $_FILES['fichier']['error'], '

';
                }
            } else { 
                 echo 'Problème dans les dimensions ou taille de l\'image !

';
            }
        } else { 
            echo 'Votre image ne comporte pas l\'extension .jpg !

';
        }
    } else { 
        echo 'Le champ du formulaire est vide !

';
    }
}
?>

Envoyer le fichier :

<form enctype ="multipart/form-data" action="<?php echo $PHP_SELF; ?>" method="POST">
                       
           
           
</form>

</html>
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
golant 6 Messages postés mercredi 27 décembre 2006Date d'inscription 28 octobre 2009 Dernière intervention - 24 sept. 2009 à 10:03
3
Merci
C'est résolu, en fait, si ça intéresse quelqu'un, c'est en javascript qu'il faut s'y prendre...

Voilà la fonction :

<script language='javascript'>
function afficher()
{
val=document.form_fichier.nom_fichier.value;
// alert(val);
window.opener.document.add.elements["photo"].value = val;
window.close();

}
</script>

Et voilà le formulaire dans lequel vous devez récupérer le nom de l'image (via php après upload) :

<form name="form_fichier">


</form>


Lors du click sur "valider cette image", on ferme la pop-up et on sauvegarde le nom de l'image téléchargée pour le mettre dans le champ "photo" du formulaire (ici add.php) qui sera envoyé.

Ensuite, pour l'affichage, on récupère le nom de l'image dans la base et, connaissant le dossier d'upload, on peut facilement l'afficher !

Merci golant 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 70 internautes ce mois-ci

Commenter la réponse de golant
golant 6 Messages postés mercredi 27 décembre 2006Date d'inscription 28 octobre 2009 Dernière intervention - 19 mai 2009 à 16:04
0
Merci
Up ! Personne ne peut m'aider ?
Commenter la réponse de golant

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.