par
ludivine » 18 juin 2010, 16:42
Bonjour,
J'espère ne pas me tromper de rubrique pour ce problème.
Voilà, je développe un site internet web avec la partie back-office.
Au début l'administrateur a le choix entre ajouter, supprimer ou modifier une image. Puis, via Ajax, j'affiche un autre formulaire contenant un champ input file. Ensuite, je souhaite récupérer le fichier afin de le mettre sur le serveur ftp. Lorsque ce n'est pas géré par Ajax, pas de soucis. J'ai trouvé sur différents forums qu'il parlait de iframe, mais j'ai du mal à comprendre.
Voici le code (je me concentre sur la partie ajouter une image)
fichier formulaire.php
Code : Tout sélectionner
<tr>
<td>Choix à effectuer</td>
<td>
<select name='typeMessage' id='typeM' onChange="javascript:makeRequest('repPhpAjax6.php','typeM','infoCompl',0,'');">
<option value='modifier'>Modifier les images</option>
<option value='ajouter'>Ajouter une image</option>
<option value='supprimer'>Supprimer une image</option>
</select>
</td>
</tr>
</table>
<table width='600px' id='infoCompl'>
</table>
fichier repPhpAjax6.php
Code : Tout sélectionner
echo "
<tr>
<td>Nom de l'image</td>
<td>
<input type='name' name='nom'>
</td>
</tr>
<tr>
<td>Image</td>
<td>
<input type='file' name='image'>
</td>
</tr>
<tr>
<td colspan='2' align='center' class='instruction'> Attention, les plaquettes doivent être des images (format jpg ou png) et de bonne qualité (pour l'agrandissement dans les popups). </td>
</tr>";
echo "<div id='envoyer'>
<input type='hidden' name='formulaire' value='ok'>
<input type='submit' value='Ajouter'>
</form>";
fichier formulaire.php
Code : Tout sélectionner
if($modif=="ajouter")
{
$nom=$_POST['nom'];
$image=$_POST['image'];
$fichier_destination_photo;
$fichier_destination_vignette;
echo $nom;
// Calcul de l'id de la nouvelle photo pour ensuite l'insérer dans le nom de l'image de destination
$query2 = "SELECT * FROM ActivCentrale;";
$result2 = mysql_query ( $query2 );
$donnees2 = mysql_fetch_array ( $result2 );
$nbImageAVenir = $donnees2["nbrePhotos"] + 1;
$fichier=$_FILES["image"]["name"];
echo $fichier;
echo $_FILES["image"]["name"];
echo $_FILES["image"]["tmp_name"];
$image=$_FILES["image"]["tmp_name"];
if(substr($fichier,-3) == "jpg" || substr($fichier,-3) == "JPG" || substr($fichier,-3) == "png" || substr($fichier,-3) == "PNG" )
{
// ouverture en écriture ( 777 ) du répertoire de destination
$permission = decoct(0777) ;
$chmod_cmd = 'CHMOD '.$permission.' nouveauSite/images/activCentrale/photos' ;
$chmod_cmd2 = 'CHMOD '.$permission.' nouveauSite/images/activCentrale/vignettes' ;
$chmod = ftp_site( $conn_id, $chmod_cmd);
$chmod = ftp_site( $conn_id, $chmod_cmd2);
//Calcul des tailles initiales de la photo insérée
$taille_initiale=getimagesize($image);
$largeur_initiale=$taille_initiale[0];
$longueur_initiale=$taille_initiale[1];
// Calcul des tailles définies pour l'image de destination
$largeur_destination_photo=343;
$longueur_destination_photo=($largeur_destination_photo*$longueur_initiale)/($largeur_initiale);
$largeur_destination_vignette=151;
$longueur_destination_vignette=($largeur_destination_vignette*$longueur_initiale)/($largeur_initiale);
// Création en mémoire de l'image de destination
$image_en_memoire_photo = ImageCreateTrueColor ( $largeur_destination_photo, $longueur_destination_photo ) or die ("jojkojo");
$image_en_memoire_vignette = ImageCreateTrueColor ( $largeur_destination_vignette, $longueur_destination_vignette ) or die ("jhkhjjk");
// Conversion du fichier temporaire en image source mémoire
$image_source_en_memoire;
if(substr($fichier,-3) == "png" || substr($fichier,-3) == "PNG" )
{
$image_source_en_memoire = ImageCreateFromPNG ( $image ) or die ("kjmk");
}
else
{
$image_source_en_memoire = ImageCreateFromJPEG ( $image) or die ("khjbnvg");
}
// Copie de l'image source mémoire dans l'image mémoire de destination
ImageCopyResized ( $image_en_memoire_photo, $image_source_en_memoire, 0, 0, 0, 0, $largeur_destination_photo, $longueur_destination_photo, $largeur_initiale, $longueur_initiale) or die ("jgfhg");
ImageCopyResized ( $image_en_memoire_vignette, $image_source_en_memoire, 0, 0, 0, 0, $largeur_destination_vignette, $longueur_destination_vignette, $largeur_initiale, $longueur_initiale) or die ("gf");
// Nom du futur fichier de destination
$fichier_destination_photo = "../images/activCentrale/photos/".$nbImageAVenir.".".substr($fichier,-3);
$fichier_destination_vignette = "../images/activCentrale/vignettes/".$nbImageAVenir.".".substr($fichier,-3);
echo $fichier_destination_photo;
// Suppression des futurs fichiers de destination
@unlink ( $fichier_destination_photo);
@unlink ( $fichier_destination_vignette);
// Enregistrement du fichier image de destination
if(substr($fichier,-3) == "png" || substr($fichier,-3) == "PNG" )
{
ImagePNG( $image_en_memoire_photo, $fichier_destination_photo, 90 ) or die ("se");
ImagePNG( $image_en_memoire_vignette, $fichier_destination_vignette, 90 ) or die ("pkk");
}
else
{
ImageJPEG ( $image_en_memoire_photo, $fichier_destination_photo, 90 ) or die ("mp");
ImageJPEG ( $image_en_memoire_vignette, $fichier_destination_vignette, 90 ) or die ("ôkk");
}
// Suppression des variables images en mémoire
ImageDestroy ( $image_en_memoire_photo );
ImageDestroy ( $image_en_memoire_vignette );
ImageDestroy ( $image_source_en_memoire );
$permission = decoct(0755) ;
$chmod_cmd = 'CHMOD '.$permission.' nouveauSite/images/activCentrale/photos' ;
$chmod_cmd2 = 'CHMOD '.$permission.' nouveauSite/images/activCentrale/vignettes' ;
$chmod = ftp_site( $conn_id, $chmod_cmd);
$chmod = ftp_site( $conn_id, $chmod_cmd2);
}
Le dernier fichier il y a un soucis il ne reconnaît pas $image et si je met $_FILES["image"]["tmp-name"], il y a toujours un soucis pour enregistrer l'image par la suite.
Merci d'avance pour votre aide.
Bonjour,
J'espère ne pas me tromper de rubrique pour ce problème.
Voilà, je développe un site internet web avec la partie back-office.
Au début l'administrateur a le choix entre ajouter, supprimer ou modifier une image. Puis, via Ajax, j'affiche un autre formulaire contenant un champ input file. Ensuite, je souhaite récupérer le fichier afin de le mettre sur le serveur ftp. Lorsque ce n'est pas géré par Ajax, pas de soucis. J'ai trouvé sur différents forums qu'il parlait de iframe, mais j'ai du mal à comprendre.
Voici le code (je me concentre sur la partie ajouter une image)
fichier formulaire.php
[code]
<tr>
<td>Choix à effectuer</td>
<td>
<select name='typeMessage' id='typeM' onChange="javascript:makeRequest('repPhpAjax6.php','typeM','infoCompl',0,'');">
<option value='modifier'>Modifier les images</option>
<option value='ajouter'>Ajouter une image</option>
<option value='supprimer'>Supprimer une image</option>
</select>
</td>
</tr>
</table>
<table width='600px' id='infoCompl'>
</table>
[/code]
fichier repPhpAjax6.php
[code]
echo "
<tr>
<td>Nom de l'image</td>
<td>
<input type='name' name='nom'>
</td>
</tr>
<tr>
<td>Image</td>
<td>
<input type='file' name='image'>
</td>
</tr>
<tr>
<td colspan='2' align='center' class='instruction'> Attention, les plaquettes doivent être des images (format jpg ou png) et de bonne qualité (pour l'agrandissement dans les popups). </td>
</tr>";
echo "<div id='envoyer'>
<input type='hidden' name='formulaire' value='ok'>
<input type='submit' value='Ajouter'>
</form>";
[/code]
fichier formulaire.php
[code]
if($modif=="ajouter")
{
$nom=$_POST['nom'];
$image=$_POST['image'];
$fichier_destination_photo;
$fichier_destination_vignette;
echo $nom;
// Calcul de l'id de la nouvelle photo pour ensuite l'insérer dans le nom de l'image de destination
$query2 = "SELECT * FROM ActivCentrale;";
$result2 = mysql_query ( $query2 );
$donnees2 = mysql_fetch_array ( $result2 );
$nbImageAVenir = $donnees2["nbrePhotos"] + 1;
$fichier=$_FILES["image"]["name"];
echo $fichier;
echo $_FILES["image"]["name"];
echo $_FILES["image"]["tmp_name"];
$image=$_FILES["image"]["tmp_name"];
if(substr($fichier,-3) == "jpg" || substr($fichier,-3) == "JPG" || substr($fichier,-3) == "png" || substr($fichier,-3) == "PNG" )
{
// ouverture en écriture ( 777 ) du répertoire de destination
$permission = decoct(0777) ;
$chmod_cmd = 'CHMOD '.$permission.' nouveauSite/images/activCentrale/photos' ;
$chmod_cmd2 = 'CHMOD '.$permission.' nouveauSite/images/activCentrale/vignettes' ;
$chmod = ftp_site( $conn_id, $chmod_cmd);
$chmod = ftp_site( $conn_id, $chmod_cmd2);
//Calcul des tailles initiales de la photo insérée
$taille_initiale=getimagesize($image);
$largeur_initiale=$taille_initiale[0];
$longueur_initiale=$taille_initiale[1];
// Calcul des tailles définies pour l'image de destination
$largeur_destination_photo=343;
$longueur_destination_photo=($largeur_destination_photo*$longueur_initiale)/($largeur_initiale);
$largeur_destination_vignette=151;
$longueur_destination_vignette=($largeur_destination_vignette*$longueur_initiale)/($largeur_initiale);
// Création en mémoire de l'image de destination
$image_en_memoire_photo = ImageCreateTrueColor ( $largeur_destination_photo, $longueur_destination_photo ) or die ("jojkojo");
$image_en_memoire_vignette = ImageCreateTrueColor ( $largeur_destination_vignette, $longueur_destination_vignette ) or die ("jhkhjjk");
// Conversion du fichier temporaire en image source mémoire
$image_source_en_memoire;
if(substr($fichier,-3) == "png" || substr($fichier,-3) == "PNG" )
{
$image_source_en_memoire = ImageCreateFromPNG ( $image ) or die ("kjmk");
}
else
{
$image_source_en_memoire = ImageCreateFromJPEG ( $image) or die ("khjbnvg");
}
// Copie de l'image source mémoire dans l'image mémoire de destination
ImageCopyResized ( $image_en_memoire_photo, $image_source_en_memoire, 0, 0, 0, 0, $largeur_destination_photo, $longueur_destination_photo, $largeur_initiale, $longueur_initiale) or die ("jgfhg");
ImageCopyResized ( $image_en_memoire_vignette, $image_source_en_memoire, 0, 0, 0, 0, $largeur_destination_vignette, $longueur_destination_vignette, $largeur_initiale, $longueur_initiale) or die ("gf");
// Nom du futur fichier de destination
$fichier_destination_photo = "../images/activCentrale/photos/".$nbImageAVenir.".".substr($fichier,-3);
$fichier_destination_vignette = "../images/activCentrale/vignettes/".$nbImageAVenir.".".substr($fichier,-3);
echo $fichier_destination_photo;
// Suppression des futurs fichiers de destination
@unlink ( $fichier_destination_photo);
@unlink ( $fichier_destination_vignette);
// Enregistrement du fichier image de destination
if(substr($fichier,-3) == "png" || substr($fichier,-3) == "PNG" )
{
ImagePNG( $image_en_memoire_photo, $fichier_destination_photo, 90 ) or die ("se");
ImagePNG( $image_en_memoire_vignette, $fichier_destination_vignette, 90 ) or die ("pkk");
}
else
{
ImageJPEG ( $image_en_memoire_photo, $fichier_destination_photo, 90 ) or die ("mp");
ImageJPEG ( $image_en_memoire_vignette, $fichier_destination_vignette, 90 ) or die ("ôkk");
}
// Suppression des variables images en mémoire
ImageDestroy ( $image_en_memoire_photo );
ImageDestroy ( $image_en_memoire_vignette );
ImageDestroy ( $image_source_en_memoire );
$permission = decoct(0755) ;
$chmod_cmd = 'CHMOD '.$permission.' nouveauSite/images/activCentrale/photos' ;
$chmod_cmd2 = 'CHMOD '.$permission.' nouveauSite/images/activCentrale/vignettes' ;
$chmod = ftp_site( $conn_id, $chmod_cmd);
$chmod = ftp_site( $conn_id, $chmod_cmd2);
}
[/code]
Le dernier fichier il y a un soucis il ne reconnaît pas $image et si je met $_FILES["image"]["tmp-name"], il y a toujours un soucis pour enregistrer l'image par la suite.
Merci d'avance pour votre aide.