Condition pour faire un UPDATE d'image

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Condition pour faire un UPDATE d'image

par fabrice88250 » 04 mai 2008, 11:53

merci pour votre aide. sa fonctionne.
j'ai opté pour la solutionla plus rapide de b.jerome en mettant un if ... else sur l'update.
je vais pouvoir passé a la suite...

par b.jerome » 03 mai 2008, 22:57

Bon je suis un peu claqué et pas les yeux en faces des orbites mais si tu enlèves le commentaire :
//if (move_uploaded_file($_FILES['logo']['tmp_name'], $uploadfile)) { 
par
if (move_uploaded_file($_FILES['logo']['tmp_name'], $uploadfile)) { 
théoriquement il va voir qu'il n'y pas de fichier et donc pas de suite...

Je vais peut être dire une betise mais je pense que le script n'ira pas jusque cette ligne étant donné qu'il est probable que $_FILES['logo']['tmp_name'] sera vide et qu'il en fait la vérification avant.

par Aureusms » 03 mai 2008, 22:43

Bon je suis un peu claqué et pas les yeux en faces des orbites mais si tu enlèves le commentaire :
//if (move_uploaded_file($_FILES['logo']['tmp_name'], $uploadfile)) { 
par
if (move_uploaded_file($_FILES['logo']['tmp_name'], $uploadfile)) { 
théoriquement il va voir qu'il n'y pas de fichier et donc pas de suite...

par b.jerome » 03 mai 2008, 22:08

Je pense qu'il y a plusieurs maniére de résoudre ce soucis...

par exemple:

if($uploadlogo != '')
{
  //création de la requête SQL: 
  $sql = "UPDATE partenaires SET  
              id = '$id', 
            nom = '$nom',  
                              email = '$email', 
              url = '$url', 
              titre = '$titre', 
              description = '$description', 
            alt = '$alt', 
            logo = '$uploadlogo' 
          WHERE id = '$id' " ; 
}
else
{
  //création de la requête SQL: 
  $sql = "UPDATE partenaires SET  
              id = '$id', 
            nom = '$nom',  
                              email = '$email', 
              url = '$url', 
              titre = '$titre', 
              description = '$description', 
            alt = '$alt', 
          WHERE id = '$id' " ; 
}
ou alors ajouter un input hidden a ton formulaire qui contiendrait le nom de l'image actuelle

Code : Tout sélectionner

<input type='hidden' name='logo_actuel' value="{$data['logo']}" />
et ensuite
if(!empty($_FILES['logo']['name'])){ ton code de creation d'image etc...}
else
{
 $uploadlogo = $_POST["logo_actuel"];
}

par fabrice88250 » 03 mai 2008, 11:24

C'est quand je fais des essais. j'ai remis le code tel que je l'utilise. Vous avez une solution ?

par Aureusms » 03 mai 2008, 11:05

Pourquoi laisse tu cette ligne en commentaire :
//if (move_uploaded_file($_FILES['logo']['tmp_name'], $uploadfile)) {  

Condition pour faire un UPDATE d'image

par fabrice88250 » 03 mai 2008, 11:01

bonjour,
afin de faire des mises a jour dans ma base de données j'ai créé un formulaire et un page de validation.

je souhaite mettre a jour des champs ou il y a du texte + un champ ou je stock le nom d'une image.

concernant la mise a jour des texte pas de probleme tout fonctionne a merveil.
pour la mise a jour de la photo sa fonctionne aussi losque je choisi une nouvelle photo. Par contre si je ne choisi pas de nouvelle photo lorsque je valide mon formulaire mon camp image sa voit quand meme remplacé par ... RIEN donc plus d'image !

je voulais savoir comment faire pour que le mise a jour de l'image ne se fasse que si je choisi de la changer.

voilà mon formulaire en html :

Code : Tout sélectionner

<form name="modification" action="validemodif.php" method="POST" enctype="multipart/form-data"> <input type="hidden" name="id" value="<?php echo($id) ;?>"> <table border="0" cellspacing="10" cellpadding="0"> <tr> <td><div align="right">Nom </div></td> <td><input type="text" name="nom" value="<?php echo($result->nom) ;?>"/></td> </tr> <tr> <td><div align="right">email</div></td> <td><input type="text" name="email" value="<?php echo($result->email) ;?>"/></td> </tr> <tr> <td><div align="right">url de votre site</div></td> <td><input type="text" name="url" value="<?php echo($result->url) ;?>"/></td> </tr> <tr> <td><div align="right">titre de votre site (75 carac. maxi)</div></td> <td><input type="text" maxlength="75" name="titre" value="<?php echo($result->titre) ;?>"/></td> </tr> <tr> <td><div align="right">description du site (255 carac. maxi)</div></td> <td><textarea name="description" maxlength="255" ><?php echo($result->description) ;?></textarea></td> </tr> <tr> <td><div align="right">Texte balise Alt ou titre (255 carac. maxi)</div></td> <td><textarea name="alt" maxlength="255" ><?php echo($result->alt) ;?></textarea></td> </tr> <tr> <td><div align="right"> <?PHP $req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error()); while($data = mysql_fetch_array($req)) { echo 'image actuelle : <img src="../../images/partenaire/', $data['logo'] ,'" alt="', $data['alt'] ,'" width="65" height="65"/>'; } ?> logo 130 x 130px</div></td> <td><input type="file" name="logo" accept="image/gif" /></td> </tr> <tr> <td>&nbsp;</td> <td><input name="submit" type="submit" value="Modifier le Partenaire" /></td> </tr> </table> </form>
et voilà ma page de validation :

<?php
  //connection au serveur
$cnx = mysql_connect(xxxxxx, xxxxx, xxxx);
$db = mysql_select_db( "xxxx" ) ;
 
  //récupération des valeurs des champs:

  $nom = $_POST["nom"] ;
  $email = $_POST["email"] ;
  $url = $_POST["url"] ;
  $titre = $_POST["titre"] ;
  $description = $_POST["description"] ;
  $alt = $_POST["alt"] ;
  
//je ne recupere que le nom de mon image
$uploadlogo = basename($_FILES['logo']['name']);
// je donne le chemin ou il faut enregistrer l'image
$uploaddir = '../../images/partenaires/';
//j'associe mon chemin avec mon image
$uploadfile = $uploaddir . basename($_FILES['logo']['name']);

		if (isset ($_FILES['logo']['tmp_name']) && $_FILES['logo']['tmp_name'] != "none") {  
			if (!file_exists($uploadfile)) {
				if (move_uploaded_file($_FILES['logo']['tmp_name'], $uploadfile)) { 
					
	  
					//creation mini
					$src_img = imagecreatefromjpeg($uploadfile);
					$size = GetImageSize($uploadfile);
					$dst_img = imagecreatetruecolor($cote_mini,$cote_mini);
					imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $cote_mini, $cote_mini, $size[0], $size[1]);
					imagejpeg($dst_img, $uploaddir."thumbs/".basename($_FILES['logo']['name']), 75);
					imagedestroy($src_img);
					imagedestroy($dst_img); 
					
					//redimensionnement image
					$haut = "500";
					$larg = $size[0]*$haut/$size[1];
					$src_img = imagecreatefromjpeg($uploadfile);
					$size = GetImageSize($uploadfile);
					$dst_img = imagecreatetruecolor($larg,$haut);
					imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $larg, $haut, $size[0], $size[1]);
					imagejpeg($dst_img, $uploadfile, 75);
					imagedestroy($src_img);
					imagedestroy($dst_img);
					
					echo "logo envoyé !</body>";
				}
			}
			else
				{echo "<font color=red>Un logo portant le même nom existe déja. </br> Merci de choisir un autre logo</font>";}
		}



    
  //récupération de l'identifiant du partenaire:
  $id = $_POST["id"] ;
  
  //création de la requête SQL:
  $sql = "UPDATE partenaires SET 
  			id = '$id',
			nom = '$nom', 
	      	                email = '$email',
		  	url = '$url',
		  	titre = '$titre',
		  	description = '$description',
			alt = '$alt',
			logo = '$uploadlogo'
          WHERE id = '$id' " ;
  
  //exécution de la requête SQL:
  $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
  //affichage des résultats, pour savoir si la modification a marchée:
  if($requete)
  {
    echo("La modification de votre partenaire à été correctement effectuée") ;
  }
  else
  {
    echo("La modification à échouée") ;
  }
?>