Pas d'image script petite annonce

ViPHP
xTG
ViPHP | 7331 Messages

22 juil. 2012, 16:59

Regardes la coloration syntaxique. ;)
Ta chaîne de caractère inscrite dans le fichier est coupée à cause des simples quotes utilisées dans les variables.
Il faut échapper ces caractères.
Exemple :
// correct
$var = 'L\'art des quotes'; 
// incorrect
$var = 'L'art des quotes'; 

hightone1999
Invité n'ayant pas de compte PHPfrance

22 juil. 2012, 17:42

Oui exacte pour un antislash devant le dernier apostrophes, pour les variables ces juste celle ci dessous h_max, w_max et pic qui cause problème le reste ça va, par contre l'antislash j'ai éssayé comme cela sur les trois variables ça na pas l'air d'être bon j'ai éssayer avec 2 antislash idem
$_GET['pic\']
$_GET['h_max\']
$_GET['w_max\']

<?php

error_reporting(-1);


$taille = getimagesize($_GET['pic']);
$h_i = $taille[1];
$w_i = $taille[0];
   if($h_i >$_GET['h_max'])
   {
   $convert=$_GET['h_max']/$h_i;
   $h_i=$_GET['h_max'];
   $w_i=ceil($w_i*$convert);
   }
   if($w_i >$_GET['w_max'])
   {
   $convert=$_GET['w_max']/$w_i;
   $w_i=$_GET['w_max'];
   $h_i=ceil($h_i*$convert);
   } ;
 

$largeur = "$w_i";
$hauteur ="$h_i";
 
header("Content-Type: image/jpeg");
list($width, $height, $type, $attr) = getimagesize($_GET['pic']);
 
if($type == "1")
{
$img_in = imagecreatefromgif($_GET['pic']);
}
 
if($type == "2")
{
$img_in = imagecreatefromjpeg($_GET['pic']);
}
 
if($type == "3")
{
$img_in = imagecreatefrompng($_GET['pic']);
}
 
 
$img_out = imagecreatetruecolor($largeur, $hauteur);
imagecopyresampled($img_out, $img_in, 0, 0, 0, 0, imagesx($img_out), imagesy($img_out), imagesx($img_in), imagesy($img_in));
$t = imagejpeg($img_out);
echo $t;

?>

ViPHP
xTG
ViPHP | 7331 Messages

22 juil. 2012, 18:15

Ce sera forcement deux antislash, on fait pas de la demi-mesure non mais !

Sinon le code que tu nous postes est celui inscrit dans le fichier généré ?
Si tel est le cas il est tout à fait correct.

hightone1999
Invité n'ayant pas de compte PHPfrance

22 juil. 2012, 20:02

Non désoler c'est le fichier miniature.php #-o voila comment j'ai insérer les antislash si c'est correct ?
<?php

error_reporting(-1);


$taille = getimagesize($_GET[\'pic\']);
$h_i = $taille[1];
$w_i = $taille[0];
   if($h_i >$_GET[\'h_max\'])
   {
   $convert=$_GET[\'h_max\']/$h_i;
   $h_i=$_GET[\'h_max\'];
   $w_i=ceil($w_i*$convert);
   }
   if($w_i >$_GET[\'w_max\'])
   {
   $convert=$_GET[\'w_max\']/$w_i;
   $w_i=$_GET[\'w_max\'];
   $h_i=ceil($h_i*$convert);
   } ;
 

$largeur = "$w_i";
$hauteur ="$h_i";
 
header("Content-Type: image/jpeg");
list($width, $height, $type, $attr) = getimagesize($_GET[\'pic\']);
 
if($type == "1")
{
$img_in = imagecreatefromgif($_GET[\'pic\']);
}
 
if($type == "2")
{
$img_in = imagecreatefromjpeg($_GET[\'pic\']);
}
 
if($type == "3")
{
$img_in = imagecreatefrompng($_GET[\'pic\']);
}
 
 
$img_out = imagecreatetruecolor($largeur, $hauteur);
imagecopyresampled($img_out, $img_in, 0, 0, 0, 0, imagesx($img_out), imagesy($img_out), imagesx($img_in), imagesy($img_in));
$t = imagejpeg($img_out);
echo $t;

?>

ViPHP
xTG
ViPHP | 7331 Messages

22 juil. 2012, 20:06

Oui la coloration syntaxique nous indique que c'est correct. ;)

hightone1999
Invité n'ayant pas de compte PHPfrance

22 juil. 2012, 20:51

Pense que tu que je peut laisser miniature.php sans les antislash, par rapport au fichier install.php, qui lui inclut le bout de code de miniature.php qui na pas d'antislash ça ne pose pas problème ?

ViPHP
xTG
ViPHP | 7331 Messages

22 juil. 2012, 21:47

Ah bah bien sûr faut pas en mettre dans miniature.php !
C'est pour une chaîne de caractère ce que je t'ai montré...

hightone1999
Invité n'ayant pas de compte PHPfrance

22 juil. 2012, 23:06

Ok j'ai saisi :wink: comment inclure la fonction pour supprimer l'image une fois qu'on la upload au cas d'érreur pour changer d'image lors du dépôt d'annonce tout ce passe, je suppose dans upload-file.php
<?php

$repdossier = $_GET['repdossier'];

$uploaddir = 'upload/'.$repdossier.'/';

$file = $uploaddir . basename($_FILES['uploadfile']['name']); 

$dir2 = opendir("upload/$repdossier/");

$getpages=0;

while ($File = readdir($dir2)){
                                if($File != "." && $File != ".." && $File != "" )
                                  { $getpages++;
                                   
                                  }
								  
				  }

closedir($dir2);

$calcul = $getpages;

if( @is_file($file) )
{
echo "error2";
}
else

{

if( $calcul >= 5)
{
echo "error1";
}

else

{


 
if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], $file)) { 
  echo "success"; 
} else {
	echo "error";
}
}



}

?>

ViPHP
xTG
ViPHP | 7331 Messages

23 juil. 2012, 09:31

Je ferrai un script à côté moi plutôt, car en cas de mise à jour du script principal ce serait une vraie galère tout ça emmêlé...
Tu as un dossier par annonce apparemment : upload/$repdossier/
Donc le but est de lister dans un premier temps les images du dossier (tu as déjà des bouts de code effectuant ce travail dans le script d'annonce).
D'associer pour chaque image affichée un lien vers ton script de suppression avec en paramètre le nom de l'image.
Dans le script de suppression, vérification que le fichier existe (file_exists()), vérification que l'image se trouve dans le dossier (par sécurité) puis suppression (unlink()).

hightone1999
Invité n'ayant pas de compte PHPfrance

23 juil. 2012, 14:27

Ce script a pas mal d'années, il risque pas d'y avoir de maj, ceci dit si tu as une idée de script je suis preneur je ferai des tests

ViPHP
xTG
ViPHP | 7331 Messages

23 juil. 2012, 14:35

Je t'ai donné les axes à suivre pour le créer. ;)

hightone1999
Invité n'ayant pas de compte PHPfrance

23 juil. 2012, 15:54

Bon en cherchant j'ai trouver un script je l'ai intégrer dans le fichier all.index.php
L'auteur du script indique une partie Js dans la partie head et la partie php dans la partie body

Partie Js du script
[javascript]<script type="text/javascript">
function deleteImg(id_img,id_gal) {
if (confirm ("Voulez-vous vraiment effacer cette image ?")) {
document.location.replace("ma_page.php?action=efface_img&id_img="+id_img+"&id_gal="+id_gal);
}
}
</script>[/javascript]

Partie Php du script
<?php echo "<a href='javascript:deleteImg(".$ligne["id_image"].",".$ligne["id_gallerie"].")'>Supprimer l'image</a>"; ?>
Et l'ai intégrer comme cela dans le fichier all.index.php
<?php

$repdossier = $_GET['repdossier'];

?>
<!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" dir="ltr">
<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>AJAX File Upload - Web Developer Plus Demos</title>
<script type="text/javascript" src="js/jquery-1.3.2.js" ></script>
<script type="text/javascript" src="js/ajaxupload.3.5.js" ></script>
<link rel="stylesheet" type="text/css" href="./styles.css" />
<script type="text/javascript" >
	$(function(){
	var btnUpload=$('#upload');
		var status=$('#status');
		new AjaxUpload(btnUpload, {
<?php
echo "action: 'upload-file.php?repdossier=".$repdossier."',";
?>

			name: 'uploadfile',
			onSubmit: function(file, ext){
				 if (! (ext && /^(jpg|png|jpeg|gif)$/.test(ext))){ 
                    // extension is not allowed 
					status.text('Les extentions possible sont JPG, PNG ou GIF');
					return false;
				}
				status.html('Envoi en cours <img src="images/loadingup.gif?<?php echo md5(time()); ?>" border="0" height="6" width="19">');
			},
			onComplete: function(file, response){
				//On completion clear the status
				status.text('');
				//Add uploaded file to list
				if(response==="success"){
					$('<li></li>').appendTo('#files').html('<img src="miniature.php?pic=upload/<?php echo $repdossier; ?>/'+file+'&w_max=70&h_max=60" height="60" width="70" alt="" /><br />').addClass('success');
				} 
                                 if(response==="error1"){
					alert("Vous avez déjà 5 photos pour votre annonce !\nLe maximum de photos autorisées est de 5 !")
				} 
                                if(response==="error2"){
				        alert("La photo selectionnée existe déjà\nRe-selectionnez une autre photo !")
				} 
			}
		});
		
	});
</script>
<script type="text/javascript">
function deleteImg(id_img,id_gal) {
	if (confirm ("Voulez-vous vraiment effacer cette image ?")) {
		document.location.replace("ma_page.php?action=efface_img&id_img="+id_img+"&id_gal="+id_gal);
	}
}
</script>
</head>
<body>

<div id="mainbody" >




<div id="upload" ><span>Ajouter des photos<span></div><span id="status" ></span>

		 <ul id="files" ></ul>
</div>
<?php echo "<a href='javascript:deleteImg(".$ligne["id_image"].",".$ligne["id_gallerie"].")'>Supprimer l'image</a>"; ?>

</body>

</html>



Cependant j'ai bien le bouton "Supprimer l'image" mais aucune action une idée pourquoi le bouton ne s'actionne pas ?

hightone1999
Invité n'ayant pas de compte PHPfrance

23 juil. 2012, 18:30

Ce n'est pas gagné avec ce script je viens de m'apercevoir qui il y a une fonction md5 pour le dossier upload la ou sont stocker les images, et ça nomme les dossiers des images d'annonces par des chaines de caractères pour chaque image upload ça donne comme nom de dossier ex: 3Tq8pqRQ et a l'interieur du dossier l'image des l'annonces

Je sais pas si avec la fonction unlik ça cause aussi un problème pour l'analyse de fichier et suppression vu qui il ya une fonction md5 ?
j'ai essayer quelques mèthode sans succès si tu as une idée je tourne en rond :priere:
<?
// Suppression d'un fichier
unlink("../upload");

// Vérification de l'existance du fichier avant de la supprimer
if(file_exists("dossiers/monfichier.png")){
unlink("upload");
echo "Le fichier a été supprimé";
}else{
echo "Le fichier n'existe pas !"
}
?>
2ème méthode
<?php
 /* Fichier à supprimer */
   $fichier = 'upload';

   if( file_exists ( $fichier))
     unlink( $fichier ) ;

   Alternative: 

   @unlink( $fichier ) ;?>
3eme méthode
<?php
 foreach(glob('upload/*') as $repdossier) {
    if(!strpos($repdossier, 'pic') && !strpos($repdossier, '.jpg')) {
        unlink($repdossier);
    }
}
?>

ViPHP
xTG
ViPHP | 7331 Messages

23 juil. 2012, 20:53

1ere méthode => à jeter, tu tentes de supprimer le dossier et non un fichier image
2eme méthode => trop de choses à redire dessus, à jeter aussi
3eme méthode => bonne idée pour lister les fichiers. Sauf que là tu supprimes tous les fichiers n'étant pas des jpg et ne contenant pas pic dans le chemin.

Une petite astuce avec glob, tu peux lui demander de ne te retourner que des fichiers selon un motif.
Par exemple si tu cherches tous les fichiers de type : pic_001.jpg
Sans connaître le nombre tu peux faire ainsi :
$liste = glob('upload/pic_*.jpg');
Pour le script que tu as essayé si le script JS ne s'exécute pas c'est qu'une erreur est déclenchée.
Tu pourras la voir dans la console d'erreur de ton navigateur.

hightone1999
Invité n'ayant pas de compte PHPfrance

23 juil. 2012, 22:53

Comme cela est ce bien agencer avec la fonction glob il maque quelque chose j'ai le bouton "ajouter des photos" qui disparait ?
<?php
$liste = glob('upload/pic_*.jpg');
 if(!strpos($repdossier, 'pic_*.jpg'); 
unlink($repdossier);
    

?>