> Tous les forumsForum des Webmasters

 upload d'images: chargement des images non effectu
Statut du sujet : NON RESOLU Imprimer
 tonguim
  Posté le 01/08/2007 @ 11:57  
 Petit astucien

116 Messages

Bonjour,

mon objectif est de permettre le chargement de 3 images à partir d'un formulaire form.php; le script php se trouve dans le fichier chargement.php.

Dans form.php, à l'endroit où l'utilisateur doit cliquer pour charger l'image, j'appelle le fichier chargement.php ainsi: <code>include "chargement.php"</code> . Le problème est que l'image ne se charge pas. Par contre lorsque j'exécute chargement.php de façon isolée, le chargement de l'image s'effectue avec succès. Il y'a probablement un problème de transmission de données (le nom du fichier chargé peut-être) entre les 2 fichiers. Merci de m'aider à résoudre mon problème. Voici les codes:

form.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>
<body>
<form action="" method="post" name="form1" class="Style1" enctype="multipart/form-data">
<table>
<tr><!-- 3 images doivent être chargées-->
<td><?php include "chargement.php" ?></td>
<td><?php include "chargement.php" ?></td>
<td><?php include "chargement.php" ?></td>
</tr>
</table>
</form>
</body>
</html>


chargement.php

  1. <html>
  2. <head><title>Upload d'images</title>
  3. <style type="text/css">
  4. body {font-family:Arial, Verdana, sans-serif;font-size:0.8em;}
  5. #bouton {background-color:#FF9900;}
  6. </style>
  7. </head>
  8. <body>
  9. <?php
  10. //On param&eacute;tre la largeur, la hauteur et le poids maxi &agrave; ne pas d&eacute;passer.
  11. $width_maxi = "300";
  12. $height_maxi = "500";
  13. $taille_maxi ="30720";//bytes
  14. $fichier = $_FILES['fichier']['name'];
  15. $taille=$_FILES['fichier']['size'];
  16. $tmp = $_FILES['fichier']['tmp_name'];
  17. $size_tmp=getimagesize ($tmp);
  18. if ($fichier !="none")
  19. {
  20. if (($taille < $taille_maxi)&& ($size_tmp[0]<=$width_maxi)&&($size_tmp[1]<=$height_maxi))
  21. {
  22. $point=strrpos($fichier, ".");
  23. if ($point)
  24. $extension=substr ($fichier, $point);
  25. else
  26. $extension ="";
  27. $date=date("ymdhis");
  28. //indiquer l'url relative vers le dossier d'upload
  29. $chemin="../images/suivi_photo/";
  30. //un nouveau nom qui prend en compte la date, l'heure, les minutes
  31. //et secondes est cr&eacute;e ; ainsi, aucune image ne peut &ecirc;tre &eacute;cras&eacute;e sur le serveur
  32. $nouveau_nom = $chemin.$date.$extension;
  33. if (move_uploaded_file($tmp, $nouveau_nom))
  34. {
  35. echo "Transfert du fichier r&eacute;ussi";
  36. $size=getimagesize ($nouveau_nom);
  37. echo "Largeur = ".$size[0]." pixels<br/>";
  38. echo "Hauteur = ".$size[1]." pixels<br/>";
  39. echo "Poids = ".$taille." octets<br/>";
  40. form();
  41. }
  42. else
  43. {
  44. $taille_maxi_ko=$taille_maxi/1024;
  45. echo "Transfert &eacute;chou&eacute;<br/>";
  46. echo "La largeur de l'image ne doit pas &ecirc;tre sup&eacute;rieure &agrave; $width_maxi pixels.<br/>";
  47. echo "La hauteur de l'image ne doit pas &ecirc;tre sup&eacute;rieure &agrave; $height_maxi pixels.<br/>";
  48. echo "Le fichier ne doit pas d&eacute;passer $taille_maxi_ko Ko.<br/>";
  49. form();
  50. }
  51. }
  52. else
  53. {
  54. $taille_maxi_ko=$taille_maxi/1024;
  55. echo "Le fichier est trop lourd : envoi refus&eacute;<br/>
  56. Le fichier ne doit pas d&eacute;passer $taille_maxi_ko Ko.<br/>";
  57. echo "La largeur de l'image ne doit pas &ecirc;tre sup&eacute;rieure
  58. &agrave; $width_maxi pixels; elle fait ici $size_tmp[0] pixels<br/>";
  59. echo "La hauteur de l'image ne doit pas &ecirc;tre sup&eacute;rieure
  60. &agrave; $height_maxi pixels ; elle fait ici $size_tmp[1] pixels<br/>";
  61. form();
  62. }
  63. }
  64. //le formulaire d'upload
  65. function form()
  66. {
  67. global $taille_maxi;
  68. echo '<hr/>
  69. <form enctype="multipart/form-data" action="charger_img4.php" method="post">
  70. <p><input type="hidden" name="max_file_size" value="36120" />
  71. "Taille maximale du fichier accept&eacute;e: " . ($taille_maxi / 1024) . "Ko"
  72. <input name="fichier" type="file" size="35" />
  73. <input type="submit" value="T&eacute;l&eacute;charger" id="bouton" />
  74. </p>
  75. </form>
  76. </body></html>';
  77. }
  78. ?>

 Afficher le profil de tonguimEnvoyer un message privé à tonguim
 
 
Publicité
 Malcolm  Posté le 01/08/2007 à 17:03  
  Astucien


7264 Messages

bin c'est normal ...

tu fais un include qui d'emblée traite le formulaire précédent (or il n'y en a pas) => on passe. On arrive tout en bas à ta fonction, elle est déclarée (c'est bien) mais elle n'est instanciée nulle part ...

Enfin, sache que ta fonction telle quelle provoquera une erreur : tu veux la mettre 3 fois, mais ça sera 3x le même champ, donc le dernier fichier écrasera les 2 autres puisque c'est la même variable.

Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
 tonguim  Posté le 01/08/2007 à 18:57  
Petit astucien

116 Messages

Merci pour vos différentes réactions.
L'objectif de mon travail est de permettre le chargement de 3 images à la fois. Les 3 images seront, renommées puis leurs noms respectifs seront stockés dans une base de données mysql. Je me trouve donc dans un cas de "chargement d'images multiples". J'ai modifié mon script chargement ainsi qu'il suit, mais les images ne se chargent toujours pas; merci de m'aider à parfaire ce script:

<?php
form();

//le formulaire d'upload

function form()
{
global $taille_maxi;
global $php_code_agem; //recupération du code agem du fichier visites_march_trav.php

echo '<hr/>
<form enctype="multipart/form-data" action="" method="post">
<table width="80%" border="0" cellspacing="0" cellpadding="0" align="right">
<tr>
<td>
<input type="hidden" name="MAX_FILE_SIZE" value="500000">';
for($i = 1; $i <= $_POST[totalfiles]; $i++)
{
echo $i.'<input type="file" name="photos[]"><br>';
}
echo '<input type="submit" name="sendfiles" value="Envoyer les images"></form>
</td>
</tr>
</table>';
if ($_POST[sendfiles])
{
print_r($_POST);
echo '<pre>';
print_r($_FILES);
echo '</pre>';

$uploaddir = getcwd().'../images/suivi_photo/';

$nouveau_nom = $uploaddir.$php_code_agem.$i.$date.$extension;

if ()

foreach ($_FILES[photos][name] as $key => $value)
{
$uploadfile = $uploaddir . basename($_FILES[photos][name][$key]);
//echo $uploadfile;
if (move_uploaded_file($_FILES['photos']['tmp_name'][$key], $uploadfile))
{
move_uploaded_file($_FILES['photos']['tmp_name'][$key], $nouveau_nom)
echo $value . ' Images chargées avec succes! <br>';
}
}
}
}
?>

Quant au fichier form.php il se présente ainsi qu'il suit:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>
<body>
<table>
<tr><!-- chargement.php est appelé une seule fois-->
<td><?php include "chargement.php" ?></td>
</tr>
</table>
</body>
</html>

Afficher le profil de tonguimEnvoyer un message privé à tonguim
 Revenir en haut de la page
 tonguim  Posté le 02/08/2007 à 14:41  
Petit astucien

116 Messages

Bonjour,

mon script a évolué (j'arrive à charger 3 images ) mais a toujours des problèmes:
1-lorsque je renomme les images chargées, leur extension ne s'affiche pas
2-le renommage (rename) ne se fait que pour une seule image alors que je voudrais renommer les 3 images chargées
3-l'instruction d'insertion des noms des images dans la base de données MySql n'insère pas les données

Merci de m'aider à résoudre ce problème.

[code]<?php
include "connexion.php";
form();
//le formulaire d'upload

function form()
{
global $taille_maxi;
global $php_code_agem; //recupération du code agem du fichier visites_march_trav.php
$date=date("ymdhis");

echo '<hr/>
<form enctype="multipart/form-data" action="" method="post">
<table width="80%" border="0" cellspacing="0" cellpadding="0" align="right">
<tr>
<td>
<input type="hidden" name="MAX_FILE_SIZE" value="500000">';
for($i = 1; $i <= 3; $i++)
{
echo 'image '.$i.' '.'<input type="file" name="photos[]"><br>';
}
echo '<input type="submit" name="btonEnvoyer" value="Envoyer les images">
</td>
</tr>
</table>
</form>';
if ($_POST['btonEnvoyer'])
{
$rep_destination = '../images/suivi_photo/';

$point=strrpos($_FILES['photos']['name'], ".");
if ($point)
$extension=substr($_FILES['photos']['name'],strlen($_FILES['photos']['name'])-4,4);
//$extension=substr($_FILES['photos']['name'], $point);
else
$extension ="";

foreach ($_FILES['photos']['name'] as $key => $value)
{
$nouveau_nom = $rep_destination.$php_code_agem.$date.$extension;
$uploadfile = $rep_destination . basename($_FILES['photos']['name'][$key]);
//echo $uploadfile;
if (move_uploaded_file($_FILES['photos']['tmp_name'][$key], $uploadfile))
{
rename(basename($_FILES['photos']['name'][$key]), $nouveau_nom);
echo ' image chargée avec succès! <br>';

requete="INSERT INTO suivi_photos( id, code_agem, photo1, photo2, photo3 ) VALUES ( '', '$php_code_agem', "$_FILES['photos']['name'][$key]" )";
mysql_query($requete);
}
}
}
}
?>[/code]
Afficher le profil de tonguimEnvoyer un message privé à tonguim
 Revenir en haut de la page
 Malcolm  Posté le 02/08/2007 à 15:31  
  Astucien


7264 Messages

regarde ça :

foreach ($_FILES['photos']['name'] as $key => $value)

$_FILES est un tableau, mais 'name' est déjà une clé de clé .. donc ton foreach ne passe qu'une fois.

d'autre part, tous tes champs (les 3) s'appellent-ils 'photos' ?

Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
 tonguim  Posté le 02/08/2007 à 15:47  
Petit astucien

116 Messages
Malcolm a écrit :

d'autre part, tous tes champs (les 3) s'appellent-ils 'photos' ?

Les 3 champs se nomment photos.

  1. <form enctype="multipart/form-data" action="" method="post">
  2. <table width="80%" border="0" cellspacing="0" cellpadding="0" align="right">
  3. <input type="hidden" name="MAX_FILE_SIZE" value="500000">';
  4. for($i = 1; $i <= 3; $i++)
  5. {
  6. echo 'image '.$i.' '.'<input type="file" name="photos[]"><br>';
  7. }
  8. echo '<input type="submit" name="btonEnvoyer" value="Envoyer les images">
  9. </td>
  10. </tr>
  11. </table>
  12. </form>';

Afficher le profil de tonguimEnvoyer un message privé à tonguim
 Revenir en haut de la page
 Malcolm  Posté le 02/08/2007 à 16:52  
  Astucien


7264 Messages
ok, donc ayant le même nom, le 3ème écrase le premier et le second.
Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte



Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsForum des Webmasters

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page