Page 1 sur 1

Interface d'Administration

Posté : 19 mai 2006, 19:27
par Photographiquement Vôtre
Bonsoir,

Je dois uploader des fichiers JPG par mon interface d'administration.

Pour chaque photo j'ai une vignette et la photo.

Ma page upload ne marche pas car j'essaie d'uploader deux fichiers à mon avis.

Cimment faire pour y remédier :

Mon formulaire :
<table width="70%" align="center" border="0" cellspacing="0" cellpadding="1">
	<tr>
		<td>		
			<p><font face="Arial" ><a href="admin_photos.php">Retour à la liste</font></a></p>	
				
			<table width="100%" border="0" cellspacing="0" cellpadding="1">
				<tr>
					<td>	
					
					<form action="admin_photos_upload.php" id=frmPhotosAdd method=post name=frmPhotosAdd onSubmit="return validFormuPhoto();">  
					
						<p>
							<table width="100%" border="0" cellspacing="1" cellpadding="2" bgcolor="#CFCFCF">
				<tr>
					<td bgcolor="#000099"><font color="#FFFFFF"><font face="Arial" >Tri</font>&nbsp;</font></td>
					<td bgcolor="#FFFFCC"><font face="Arial" ><input type="text" name="Tri" value="" size=5 maxlength=10></font>&nbsp;</td>
				</tr>
				<tr>
					<td bgcolor="#000099"><font color="#FFFFFF"><font face="Arial" >Liste des Thèmes</font>&nbsp;</font></td>
					<td bgcolor="#FFFFCC"><font face="Arial" ><SELECT name='Rubrique'><OPTION value="">Please Select</OPTION>

<?php
  					$query = "select * from tbltheme ";

   					$result = mysql_query($query) or die ("Execution de la reqête impossible");
	
					$compteur=1;

					while ($ligne=mysql_fetch_array($result))
						{
						extract($ligne);
						echo "<option value=$Index_Theme>$Legende_Theme</option>"; 
		  			$compteur++;
					// fin du while
					}	
   					echo"</SELECT>";
?>

					</font>&nbsp;
					</td>
				</tr>
				<tr>
					<td bgcolor="#000099"><font color="#FFFFFF" face="Arial" >Réf Photo</font>&nbsp;</font></td>
					<td bgcolor="#FFFFCC"><font face="Arial" ><input type="text" name="RefPhoto" value="" size=10 maxlength=255></font>&nbsp;</td>
				</tr>
				<tr>
					<td bgcolor="#000099"><font color="#FFFFFF" face="Arial" >Légende Photo</font>&nbsp;</font></td>
					<td bgcolor="#FFFFCC"><font face="Arial" ><input type="text" name="Legende" value="" size=50 maxlength=80></font>&nbsp;</td>
				</tr>
				<tr>
					<td bgcolor="#000099"><font color="#FFFFFF" face="Arial" >Fichier Vignette(JPG). Doit tenir dans un carré de 120 pixels de coté</font>&nbsp;</font></td>
					<td bgcolor="#FFFFCC" face="Arial"><input name="Ref_Image_Vignette" type="file"  size=50"></td>
				</tr>
				<tr>
					<td bgcolor="#000099"><font color="#FFFFFF" face="Arial" >Fichier Zoom (JPG). Doit tenir dans un carré de 420 pixels de coté</font>&nbsp;</font></td>
					<td bgcolor="#FFFFCC" face="Arial" ><input name="Ref_Image_Photo" type="file"  size=50"></td>
				</tr>
				<tr>
					<td bgcolor="#000099"><font color="#FFFFFF"><font face="Arial" >Mots clés en Français</font>&nbsp;</font></td>
					<td bgcolor="#FFFFCC"><font face="Arial" ><input type="text" name="MotsCles" value="" size=50 maxlength=255></font>&nbsp;</td>
				</tr>
				<tr>
					<td bgcolor="#000099"><font color="#FFFFFF"><font face="Arial" >Prix</font>&nbsp;</font></td>
					<td bgcolor="#FFFFCC"><font face="Arial" ><input type="text" name="Prix" value="" size=50 ></font>&nbsp;</td>
				</tr>
		</table>
<p>
<input type="submit" name="Action" value="ENREGISTRER" >
		</form>
		</td>
	</tr>
</table>
Ma page d'upload :

<html>

<head>

<title>Envoi de fichier sur le serveur...</title>

</head>

<body>

<h1 align="center">Téléchargement...</h1>

<?php

include ("connection.php");

// Repertoire ou enregistrer le fichier sur le serveur, à modifier ...
$repertoire = "/var/www/html/virtualdomains/10560/haute-definition.net/documents/Photos/";
   
    
// $userfile est le nom du fichier arrivé sur le serveur
$userfile = $_FILES['userfile']['tmp_name'];

    
// $userfile_name est le nom original du fichier
$userfile_name = $_FILES['userfile']['name'];
  
echo "$userfile_name";
	  
  
// $userfile_size est la taille du fichier, en octets
$userfile_size = $_FILES['userfile']['size'];
  
  
// $userfile_type est le type mime du fichier ex: image/gif
$userfile_type = $_FILES['userfile']['type'];

// $userfile_error contient les erreurs rencontrées
$userfile_error = $_FILES['userfile']['error'];

if ($userfile_error > 0)
	{
	echo 'Problème : ';
    switch ($userfile_error)
    	{
    	case 1:  echo 'Fichier trop gros';  break;
        case 2:  echo 'Fichier trop gros';  break;
        case 3:  echo 'Fichier transmis partiellement';  break;
        case 4:  echo 'Aucun fichier transmis';  break;
    	}
    exit;
  }

// copions le fichier où nous souhaitons le mettre
  $upfile = $repertoire.$userfile_name;
   

// is_uploaded_file existe depuis la version 4.0.3
  if (is_uploaded_file($userfile)) 
  {
     if (!move_uploaded_file($userfile, $upfile))
     {
        echo 'Probleme : Fichier impossible à déplacer';
        exit;
     }
  } 
  else 
  {
    echo 'Problem : Attaque par envoi de fichier probable. Fichier : '.$userfile_name;
    exit;
  }
  if (isset($_POST["Tri"])) $Tri=htmlspecialchars(stripslashes($_POST["Tri"]), ENT_QUOTES);
  if (isset($_POST["Rubrique"])) $Rubrique=htmlspecialchars(stripslashes($_POST["Rubrique"]), ENT_QUOTES);
  if (isset($_POST["RefPhoto"])) $Reference=htmlspecialchars(stripslashes($_POST["RefPhoto"]), ENT_QUOTES);
  if (isset($_POST["Legende"])) $Legende=htmlspecialchars(stripslashes($_POST["Legende"]), ENT_QUOTES);
  if (isset($_POST["Ref_Image_Vignette"])) $RefImageVignette=htmlspecialchars(stripslashes($_POST["Ref_Image_Vignette"]), ENT_QUOTES);
  if (isset($_POST["Ref_Image_Photo"])) $RefImagePhoto=htmlspecialchars(stripslashes($_POST["Ref_Image_Photo"]), ENT_QUOTES);
  if (isset($_POST["MotsCles"])) $MotCle=htmlspecialchars(stripslashes($_POST["MotsCles"]), ENT_QUOTES);
  if (isset($_POST["Prix"])) $Prix=htmlspecialchars(stripslashes($_POST["Prix"]), ENT_QUOTES);
  
  
 $sql="INSERT INTO tblphotos(triPhoto,Id_theme,Index_Photo,Legende_Image,Ref_Vignette,Ref_Image,Motcle,Prixaveccadre) VALUES('$Tri','$Rubrique','$Reference','$Legende','$RefImageVignette','$RefImagePhoto','$MotsCles','$Prix')";
    
 $req=mysql_query($sql)or exit ('Erreur SQL !'.$sql.'<br>'.mysql_error());
  
  echo "<p align=center><strong>Fichier téléchargé sur le serveur avec succes.</strong></p>"; 
  
  
  
  echo "<p><a href=admin_photos.php>Retour à la liste des Photos</a></p>";




?>
</body>
</html
>

Posté : 20 mai 2006, 14:27
par Truc
Salut,

Tu pourrais déveloper un peu plus que "j'upload deux images"...

1ère chose à faire (comme je l'ai fait) recherche le champ qui correspond au fichier que tu veux uploader. Pour ce faire tu par de $_FILES['userfile'] on recherche donc un champ portant le nom de "userfile"....... il est ou celui la :-*

2ème chose si tu as plusieurs champs de type FILE tu dois recommencer autant de fois l'opération d'upload que tu as de champs. dans une boucle en changeant dynamiquement le nom du champ (1er passage de boucle $_FILES['userfile'] puis 2ème passage $_FILES['userfile2'], ou autre).

Tu peux aussi défiir un tableau pour le champ de type FILE
<input type ="file" name="upload[]">
<input type ="file" name="upload[]">
puis traitement php:
for($i=0;$i<count($_FILES['userfile']['tmp_name']);$i++)
{
    $userfile = $_FILES['userfile']['tmp_name'][$i];
     //...
    // reste du traitement avec l'ajout de la dimension [$i] en fin.
}
Tu pourras ajouter autant de champs que tu le souhaites

Posté : 11 juil. 2006, 13:37
par Photographiquement Vôtre
Merci pour ta réponse.


J'ai du manquer quelque chose car cela ne marche pas.

1) J'ai modifié mes champs de fichier
<tr>
					<td bgcolor="#000099"><font color="#FFFFFF" face="Arial" >Fichier Vignette(JPG). Doit tenir dans un carré de 120 pixels de coté</font>&nbsp;</font></td>
					<td bgcolor="#FFFFCC" face="Arial"><input name="upload[0]" type="file"  size=50"></td>
				</tr>
				<tr>
					<td bgcolor="#000099"><font color="#FFFFFF" face="Arial" >Fichier Zoom (JPG). Doit tenir dans un carré de 420 pixels de coté</font>&nbsp;</font></td>
					<td bgcolor="#FFFFCC" face="Arial" ><input name="upload[1]"  type="file"  size=50"></td>
				</tr>
2) Ensuite j'ai modifié l'upload
// Repertoire ou enregistrer le fichier sur le serveur, à modifier ...
$repertoire = "/var/www/html/virtualdomains/10560/haute-definition.net/documents/Photos/";
   
for($i=0;$i<count($_FILES['userfile']['tmp_name']);$i++) 
{ 
    
// $userfile est le nom du fichier arrivé sur le serveur

$userfile = $_FILES['userfile']['tmp_name'][$i]; 
echo "$userfile";
    
// $userfile_name est le nom original du fichier
$userfile_name = $_FILES['userfile']['name'][$i];
  
echo "$userfile_name";
	  
  
// $userfile_size est la taille du fichier, en octets
$userfile_size = $_FILES['userfile']['size'][$i];
  
  
// $userfile_type est le type mime du fichier ex: image/gif
$userfile_type = $_FILES['userfile']['type'][$i];

// $userfile_error contient les erreurs rencontrées
$userfile_error = $_FILES['userfile']['error'][$i];

if ($userfile_error > 0)
	{
	echo 'Problème : ';
    switch ($userfile_error)
    	{
    	case 1:  echo 'Fichier trop gros';  break;
        case 2:  echo 'Fichier trop gros';  break;
        case 3:  echo 'Fichier transmis partiellement';  break;
        case 4:  echo 'Aucun fichier transmis';  break;
    	}
    exit;
  }

// copions le fichier où nous souhaitons le mettre
  $upfile = $repertoire.$userfile_name;
   

// is_uploaded_file existe depuis la version 4.0.3
  if (is_uploaded_file($userfile)) 
  	{
    if (!move_uploaded_file($userfile, $upfile))
    	{
        echo 'Probleme : Fichier impossible à déplacer';
        exit;
     	}
  	} 
  else 
  {
    echo 'Problème : Récupération du fichier . Nom du Fichier : '.$userfile_name;
    exit;
  }
}

Posté : 11 juil. 2006, 15:17
par Ryle
C'est parce que Truc aime bien glisser des pièges dans ses réponses pour voir si tu suis ;)
Pour ce faire tu par de $_FILES['userfile'] on recherche donc un champ portant le nom de "userfile"....... il est ou celui la :-*
Si tu nommes ton champ "upload", c'est normal que "userfile" ne contienne rien... :langue:

Posté : 11 juil. 2006, 15:44
par Photographiquement Vôtre
C'est bien ce qui me semblait.

Je vais essayer.

Merci