IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Récupération d'un fichier avec Ajax via un formulaire


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Récupération d'un fichier avec Ajax via un formulaire
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    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.

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    S'il vous plaît, y'a t-il quelqu'un pour m'aider ? on m'a dit d'utiliser les iframe mais j'ai toujours des soucis je n'y arrive pas

    index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <html>
          <head>
    		<title> Administration du site </title>
    		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    		<script type='text/javascript'> 
     
     
    			var CS = {};
    			CS.UploadAjax = function(){}
     
    				CS.UploadAjax.callBack = function(message){
    					document.getElementById('messageCallBack').innerHTML = message; 
    					alert(document.getElementById('imageFrame').contentDocument.getElementById('contenu').innerHTML);
    			}
     
    		</script>
          </head>
     
          <body>
     
    		<div id="banniere">
    		</div>
     
    		<div id="contenu">
    			<?php
    				$page = $_GET['page'];
    				include ( $page.'.php' );
    			?>
    			<iframe name='imageFrame' id='imageFrame' width='0px' height='0px' style='display:none;'> </iframe>
    			<div id="piedPage">
     
    			</div>		
    		</div>
     
          </body>
    </html>
    solutions.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    <?php
     
     
    	include_once("../connexion/param.php");
     
    	mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
    	mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
     
    	$query = "SELECT * FROM Solution";
    	$result = mysql_query($query);
    	if (!$result)
    	{
    		echo "Lecture impossible";
    	}
    	else 
    	{
    		echo "<div id='contenuPage'>";
     
    				include("filAriane.php");
    		echo "isset".!isset($_POST['formulaire']);
     
    		if(!isset($_POST['formulaire']))
    		{
    			echo "<div id='activCentrale'>
    				<form id='formulaire' name='formulaire' method='post' action='solutions.html' enctype='multipart/form-data' target='imageFrame'>
    					<table width='600px'>
    				<tr>
    					<td>Solution</td>
    					<td>";
    			?>
    						<select name='solution' id='solP' onChange="javascript:makeRequest('repPhpAjaxSolution.php','solP','infoCompl',0,'');">
     
    			<?php			
    				while($donnees = mysql_fetch_array($result))
    				{
     
    					$typeSolution=$donnees['typeSolution'];
     
    					switch($typeSolution)
    					{
    						case 0:echo "<option value='".$donnees['idSolution']."'> Accueil </option>";
    								break;
    						case 1:echo "<option value='".$donnees['idSolution']."'> Gestion de contenu </option>";
    								break;
    						case 2:echo "<option value='".$donnees['idSolution']."'> Matériel, logiciel... </option>";
    								break;
    						case 3:echo "<option value='".$donnees['idSolution']."'> Ecrans LCD </option>";
    								break;
    						case 4:echo "<option value='".$donnees['idSolution']."'> Offre santé </option>";
    								break;
    						case 5:echo "<option value='".$donnees['idSolution']."'> Offre hôtellerie </option>";
    								break;
    					}
     
    				}
     
    				echo "
    						</select>
    						</td>
    					</tr>
    					</table>
    					
    					<table id='infoCompl'>
    					
    					</table>
    					<div id='messageCallBack'></div>";
     
    			echo "</div>
    				</div>";
    		}
    		else
    		{
    			echo $imageFrame;
     
    	 ?>
           <script type="text/javascript">
    			window.parent.CS.UploadAjax.callBack('fichier envoyé avec succès')
         </script>
     
     <?php
    			$texteModif=$_POST['texte'];
    			$image;
    			$texte;
    			$typeSolution;
     
    			echo $texteModif;
    			echo "jkhklhkjhjhhh";
     
     
    			//on récupère seulement l'id de la solution
    			$id=$_POST['solution'];
     
    			$query = "SELECT * FROM Solution WHERE idSolution='".$id."';";
    			$result = mysql_query($query);
    			if (!$result)
    			{
    				echo "Lecture impossible";
    			}
    			else 
    			{
    				$donnees = mysql_fetch_array($result);
    				$texte=$donnees['texteSolution'];
    				$image=$donnees['imageSolution'];
    				$typeSolution=$donnees['typeSolution'];
    			}
     
    			$intitule;
    			switch($typeSolution)
    			{
    				case 0 : $intitule="Accueil";
    						break;
    				case 1: $intitule="Gestion de contenu";
    						break;
    				case 2: $intitule="Matériel, logiciel...";
    						break;
    				case 3: $intitule="Ecrans LCD";
    						break;
    				case 4: $intitule="Offre santé";
    						break;
    				case 5: $intitule="Offre hôtellerie";
    						break;
    			}
     
    			$imageModif=$image;
     
    			echo $intitule;
     
     
    			//pour l'image
    			if($_POST['btnRadio']=="modifier")
    			{
    				echo "llal";
    				$fichier=$_FILES["image"]["name"];
    				echo $fichier;
     
    				if(isset($_FILES['image']) && $_FILES['image']['error'] == 0)
    				{
    					if($fichier!="")
    					{
    						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/solutions/' ;
    							$chmod = ftp_site( $conn_id, $chmod_cmd);
     
    							//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=100;
    							$longueur_destination=($largeur_destination*$longueur_initiale)/($largeur_initiale);
     
    							// Création en mémoire de l'image de destination
    							$image_en_memoire = ImageCreateTrueColor ( $largeur_destination, $longueur_destination );
     
    							// 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 );
    							}
    							else
    							{
    								$image_source_en_memoire = ImageCreateFromJPEG ( $image );
    							}
     
    							// Copie de l'image source mémoire dans l'image mémoire de destination
    							ImageCopyResized ( $image_en_memoire, $image_source_en_memoire, 0, 0, 0, 0, $largeur_destination, $longueur_destination, $largeur_initiale, $longueur_initiale) ;
     
    							// Nom du futur fichier de destination
    							$fichier_destination = "../images/solutions/image".$typeSolution.".".substr($fichier,-3);
     
    							//Pour récupérer seulement le nom de l'image pour ensuite l'insérer dans la BDD 
    							$imageModif=$fichier_destination;
     
    							// Suppression des futurs fichiers de destination
    							 @unlink ( $fichier_destination);
     
    							// Enregistrement du fichier image de destination 
    							if(substr($fichier,-3) == "png" || substr($fichier,-3) == "PNG" )
    							{
    								ImagePNG( $image_en_memoire, $fichier_destination, 90 );
    							}
    							else
    							{
    								ImageJPEG ( $image_en_memoire, $fichier_destination, 90 );
    							}					
     
    							// Suppression des variables images en mémoire
    							ImageDestroy ( $image_en_memoire );
    							ImageDestroy ( $image_source_en_memoire );
     
    							$permission = decoct(0755) ;
    							$chmod_cmd = 'CHMOD '.$permission.' nouveauSite/images/solutions/' ;
    							$chmod = ftp_site( $conn_id, $chmod_cmd);
     
    						}
    					}
    					else
    					{
    						$imageModif=NULL;
    					}
    				}
    			}
     
    			//mise à jour de la BDD
    			$query;
    			if($imageModif==NULL)
    			{
    				$query = "UPDATE Solution SET texteSolution='".$texteModif."', imageSolution=NULL  WHERE idSolution=".$id.";";
    			}
    			else
    			{
    				$query = "UPDATE Solution SET texteSolution='".$texteModif."', imageSolution='".$imageModif."'  WHERE idSolution=".$id.";";
    			}
    			$result = mysql_query($query);
     
    			echo $query;
     
    			echo "		
    				<p> Vos données ont été mises à jour </p>
    				<p> pour la solution ".$intitule." : </p>";
    			if($texte!=$texteModif)
    			{
    				echo "<p> Le texte de la solution est maintenant ".$texteModif.". </p>";
    			}
    			if($_POST['btnRadio']=="modifier" && $imageModif!=NULL)
    			{
    				echo "<p> L'image de la solution est maintenant <p><img src='".$imageModif."'/></p> </p>";
    			}
     
    		}
     
    		ftp_close($conn_id);
    	}
    	mysql_close();
     
    ?>
    Merci de m'aider. Je galère depuis ce matin.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Le problème est surement dû au fait que mon champ input file s'affiche selon une liste déroulante présente (Ajax)
    Merci de m'aider je ne sais pas si c'est possible.

Discussions similaires

  1. [AJAX] Cacher les chemins des fichiers avec AJAX
    Par redo_log dans le forum AJAX
    Réponses: 1
    Dernier message: 13/01/2011, 11h34
  2. [AJAX] Appel de fichier avec Ajax et jQuery
    Par Floco dans le forum AJAX
    Réponses: 14
    Dernier message: 09/04/2010, 23h43
  3. Upload des fichier avec AJAX
    Par Pedro Varela dans le forum ASP.NET
    Réponses: 6
    Dernier message: 23/01/2007, 07h52
  4. [AJAX] upload fichiers avec AJAX
    Par jibouze dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 08/12/2005, 21h04
  5. Réponses: 4
    Dernier message: 05/06/2002, 12h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo