Tranfert photo par php

Résolu/Fermé
bretonm2004 Messages postés 319 Date d'inscription vendredi 9 mai 2008 Statut Membre Dernière intervention 30 août 2013 - 1 sept. 2010 à 21:55
Bilow Messages postés 1022 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 - 3 sept. 2010 à 18:14
Bonjour,

j'ai un dossier dans mon serveur qui se nomme avendrenp ou sont stoké mes photos d,annonce classés

les photos sont classé par id

ex 1-0.jpg 1 est le id et 0 le numero de la photo

j'aimerait transferer ces photos dans un dossier avendrep quand l'annonce est activée

comment devrais-je my prendre

merci


A voir également:

6 réponses

redafillali Messages postés 3 Date d'inscription mercredi 1 septembre 2010 Statut Membre Dernière intervention 2 septembre 2010
2 sept. 2010 à 00:21
Voila le code il ne faut que changer les répertoire

<?php
if(isset($_FILES['photo']))
{
// params
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 3000000;
$dest_dossier = '../photos/';
// utilisez également des slashes sous windows : $dest_dossier = 'd:/damien/photos/';
// vérifications
if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
{
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
}
elseif( file_exists($_FILES['photo']['tmp_name'])
and filesize($_FILES['photo']['tmp_name']) > $taille_max)
{
$erreur = 'Votre fichier doit faire moins de 3Mb !';
}
// copie du fichier
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['photo']['name']);
// formatage nom fichier
// enlever les accents
$dest_fichier = strtr($dest_fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// remplacer les caracteres autres que lettres, chiffres et point par _
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
// copie du fichier

?>
<html>
<body>
<!-- Erreur ? -->
<?php
if(isset($erreur)){
echo '<p>', $erreur ,'</p>';
}
?>
<!-- Formulaire -->
<!-- Attention, ne de ne pas oublier le enctype="multipart/form-data" -->
<form name="form" method="POST" action="<?php echo $editFormAction; ?>" enctype="multipart/form-data">
<!-- Limiter la taille des fichiers à 500Ko -->
<input type="hidden" name="MAX_FILE_SIZE" value="500000" />
<fieldset>
<legend>Envoi de fichiers</legend>
<!-- champs d'envoi de fichier, de type file -->
<p>
<label for="photo">Photo : </label>
<input type="file" name="photo" />
<!-- bouton d'envoi -->
</p>
<p><input type="submit" name="envoi" value="Envoyer les fichiers" /></p>
</legend>
</fieldset>

<input type="hidden" name="MM_insert" value="form">
</form>
</body>

</html>

bonne chance
http://freecaell.blogspot.com/
0
bretonm2004 Messages postés 319 Date d'inscription vendredi 9 mai 2008 Statut Membre Dernière intervention 30 août 2013 2
2 sept. 2010 à 02:24
genial ton code mais ce n est pas tout a fait ce que j ai de besoin

le fichier est déja formaté et deja sur le serveur je n'ai donc pas besoin du formulaire et de ce code

tout ce que je veut faire c'est prendre ma photos qui est sur un dossier du serveur et la déplacer tout simplement merci
0
Bilow Messages postés 1022 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
2 sept. 2010 à 16:35
Pour cela il faut renommer le fichier.
Par exemple, le fichier de code "deplacer.php" et "photo.jpg" sont dans le dossier "source1". Tu veux déplacer "photo.jpg" dans "source2", qui est dans le même dossier que source 1.

Il faut utiliser cette commande à partir de "deplacer.php" :
rename("photo.jpg", "../source2/photo.jpg");

Bye ;)
0
bretonm2004 Messages postés 319 Date d'inscription vendredi 9 mai 2008 Statut Membre Dernière intervention 30 août 2013 2
2 sept. 2010 à 21:21
je croit qu on ne se comprend pas je ne veut pas renommer mon fichier il a deja le nom que je veut

je veut seuleument le COPIER dans un autre dossier du serveur
0
Bilow Messages postés 1022 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
2 sept. 2010 à 21:46
Nom de dieu, les gens, mais réfléchissez ! C'est la même commande ! Il y a une expresion en Belgique "Voyez plus loin que le bout de votre nez" qui veut dire "Mais allé quoi réfléchis !"
copy("photo.jpg", "../source2/photo.jpg");
0
bretonm2004 Messages postés 319 Date d'inscription vendredi 9 mai 2008 Statut Membre Dernière intervention 30 août 2013 2
2 sept. 2010 à 21:48
donc je copie avec cette fonction ma variable image qui contient la photo ds le dossier

si je comprend bien le photo.jpg est le fichier source et le reste est la cible
j essaier ca et je revient

merci
0
Bilow Messages postés 1022 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
2 sept. 2010 à 21:53
Euh... Si ton image est une variable en PHP, ouverte avec la librairie GD, tu peux l'enregistrer. L'exemple que je t'ai donné est pour copier un fichier.
Si c'est pour une imagedans une variable PHP, pour (par exemple) une image JPEG, c'est imagejpg($image, "../source2/photo.jpg");
Bye ;)
0
bretonm2004 Messages postés 319 Date d'inscription vendredi 9 mai 2008 Statut Membre Dernière intervention 30 août 2013 2
2 sept. 2010 à 22:37
voila j ai essayé la methode et voici ce qu il en ressort

Warning: copy(55-0.jpg) [function.copy]: failed to open stream: No such file or directory in /home/auto7837/public_html/publieravendre1.php on line 290

Warning: copy() [function.copy]: Filename cannot be empty in /home/auto7837/public_html/publieravendre1.php on line 291

voici le code que j'ai utilisé

copy("$image1", "/home/auto7837/public_html/photos/avendrenp/");
copy("$image2", "/home/auto7837/public_html/photos/avendrenp/");

$image 1 contient une image

$image 2 ne contient rien
0
Bilow Messages postés 1022 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
2 sept. 2010 à 22:59
Salut !

copy() copie les fichiers sur le serveur. $image1 contient une image, GD, ou bien l'adresse d'une image sur le serveur ?

Si c'est sur le serveur, d'accord. Attention, $image2 ne peut pas être vide, supprime cette ligne.

Si c'est une image en GD, alors il faut l'enregistrer :
imagejpeg($image1, ""/home/auto7837/public_html/photos/avendrenp/");

Bye ;)
0
bretonm2004 Messages postés 319 Date d'inscription vendredi 9 mai 2008 Statut Membre Dernière intervention 30 août 2013 2
Modifié par bretonm2004 le 2/09/2010 à 23:04
ca peut etre un peu compliqué

j'ai en fait image de 1 a 5 et elle sont soit pleine ou vide car c est une annonce classé le client peut en mettre une ou plusieurs je vais te donne mon script d'ajout d'image peut etre ca peut t aider

le premier chifre de l'image est le id et le deuxieme est le numero de l image

ex: 52-0.jpg id 52 photo1

merci

$i=0; $v=0; for($j=0; $j<5; $j++) { $image[$j]=''; $fn[$j]=''; }
for($nbi=1; $nbi<=5; $nbi++) {
if(!empty($_FILES['image'.$nbi]['tmp_name'])) { $image[$i]=$_FILES['image'.$nbi]; $i++; }
}
//AJOUT DES IMAGES
for($j=0; $j<$i; $j++) {
list($width, $height, $type, $attr)=getimagesize($image[$j]['tmp_name']);
if($image[$j]['size']>524288 && !$image[$j]['error']) { $error="un fichier ne dépassant pas 500ko!!"; }
if(move_uploaded_file($image[$j]['tmp_name'], '/home/auto7837/public_html/photos/avendrep/'.$id.'-'.$v.'.jpg')) {
$fn[$v]=$id.'-'.$v.'.jpg';
$v++;
}
unset($image[$j]['tmp_name']);
}
0
rudak Messages postés 587 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
2 sept. 2010 à 23:04
mais tu utilises pas de base de données ?
0
bretonm2004 Messages postés 319 Date d'inscription vendredi 9 mai 2008 Statut Membre Dernière intervention 30 août 2013 2
2 sept. 2010 à 23:05
oui ca passe par l intermediaire de la bd
0
bretonm2004 Messages postés 319 Date d'inscription vendredi 9 mai 2008 Statut Membre Dernière intervention 30 août 2013 2
2 sept. 2010 à 23:08
le principe est que quand le client fait son annonce les images se mettent ds le repertoire avendrenp par le script lpus haut

apres quand le client veut modifier son annonce les photos modifiés s'en vont dans le dossier avendrep

quand le webmaster les a validé elles doivent retourner ds le dossier avendrenp pour qu elle soit affichée sur le site
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rudak Messages postés 587 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
2 sept. 2010 à 23:22
mais pourquoi si compliqué ???

tu peux laisser toutes les images dans un seul fichier...

tu ajoute un champ "statut" dans la table ou sont stoquées tes images et suivant ce statut tu sais si ton annonce est validée ou pas par exemple..

0 : annonce non validée
1 : annonce validée
2: annonce fermée/vendue/ou autre... (ou DELETE peu importe)


c'est quand meme plus logique que changer tes images de place
ca sert a rien ca :)
0
bretonm2004 Messages postés 319 Date d'inscription vendredi 9 mai 2008 Statut Membre Dernière intervention 30 août 2013 2
2 sept. 2010 à 23:25
ouais je susi daccord mais mon script est deja tout monté le site est terminé il reste ce petit detail il doit bien avoir une facon de proceder comme ca
0
rudak Messages postés 587 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
2 sept. 2010 à 23:42
ca sera un gain de temps pour toi au final de prendre 2 jours pour revoir ton script et avoir un système efficace
=> a chaques annonces entrées 1 ligne dans la table annonce
=> et a chaques photos qui correspond 1 ligne dans la table photo_annonce
avec une colone id_annonce pour savoir a quelle annonce est reliée l'image...

quand tu valide l'anonce tu modifie juste le champ valide de la table annonce et ton annonce sera visible

rien de plus simple a gérer
0
bretonm2004 Messages postés 319 Date d'inscription vendredi 9 mai 2008 Statut Membre Dernière intervention 30 août 2013 2
3 sept. 2010 à 00:02
ouais je suis daccord mais pour l instant j'ai besoin d'une solution temporaire svp
0
Bilow Messages postés 1022 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
3 sept. 2010 à 00:07
J'aimerais juste comprendre : Tu as besoin d'une solutino temporaire. Mais tu peux revoir le site 2 jours. Si tu as besoin d'une solution, c'est que le site n'ets pas encore complètement en place, et tu peux donc te permettre de revoir cela. Ou est le problème ?
Sinon, c'est vrai que par une BD c'est plus simple. Ajoute un champ 'statu' qui vaut 0 pour "posté", 1 pour "modifié", 2 pour "supprimé" etc...
0
bretonm2004 Messages postés 319 Date d'inscription vendredi 9 mai 2008 Statut Membre Dernière intervention 30 août 2013 2
3 sept. 2010 à 00:13
je doit mettre le site en ligne tres rapidement que je laissse en main a une autre personne donc c est pour ca que j ai besoin de cette solution je vais le refaire a mon retour
0
Bilow Messages postés 1022 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
Modifié par Bilow le 3/09/2010 à 00:26
Etape pour les FICHIERS existants, et donc PAS en variable PHP :

Pour COPIER :
copy($chemin_initial, $chemin_final);
Pour DEPLACER :
rename($chemin_initial, $chemin_final);
Note que tu peux te déplacer dans les dossiers.

Exemple :
copy("dossier/photo.jpg", "../source/photo.jpg");

En absolu, cela déplacera /dossierInitial/dossier/photo.jpg VERS /source/photo.jpg ; Bien entendu dossierInitial est le dossier contenant la page PHP.

Etape pour les images en VARIABLE PHP :
Enregistrer les images selon leur extension.
imagejpeg($handle, $chemin_final); pour une image JPEG en variable PHP. Handle étant ouvert avec createimagefromjpeg() ou bien une autre.

Pour info, c'est le chemin relatif, pas le chemin absolu qu'il faut utiliser. Donc, pas /home/auto..., mais bien ../source/ (par exemple).
0
bretonm2004 Messages postés 319 Date d'inscription vendredi 9 mai 2008 Statut Membre Dernière intervention 30 août 2013 2
3 sept. 2010 à 00:28
je suis vrm désolé mais je ne suis pas sur de bien comprendre

mon image est dans le dossier avendrep et sa variable est $image1 et je veut la transferer dans le dossier avendrenp

je ne comprend pas le source et si ma variable ne contient aucune image je fait quoi
0
bretonm2004 Messages postés 319 Date d'inscription vendredi 9 mai 2008 Statut Membre Dernière intervention 30 août 2013 2
3 sept. 2010 à 00:56
voila ce que j ai pour l instant

$id = $_POST['id'];
$email = $_POST['email'];
$idinsert=$id;
$sql="SELECT * FROM avendresemipubliee WHERE id=$id ";
$req=mysql_query($sql) or die(mysql_error());
while($row=mysql_fetch_array($req)) {
$id=$row['id']; $typedannonce=$row['typedannonce']; $marque=$row['marque']; $autres=$row['autres']; $modele=$row['modele']; $prix=$row['prix']; $negociable=$row['negociable']; $annee=$row['annee']; $etat=$row['etat']; $carburant=$row['carburant']; $kilometrage=$row['kilometrage']; $transmission=$row['transmission']; $immatricule=$row['immatricule']; $climatisation=$row['climatisation']; $audio=$row['audio']; $cylindre=$row['cylindre']; $puissance=$row['puissance']; $consommation=$row['consommation']; $couleurinterieure=$row['couleurinterieure']; $couleurexterieure=$row['couleurexterieure']; $telephone=$row['telephone']; $email=$row['email']; $message=$row['message']; $date=$row['date']; $image1=$row['image1']; $image2=$row['image2']; $image3=$row['image3']; $image4=$row['image4']; $image5=$row['image5'];

$i=0; $v=0; for($j=0; $j<5; $j++) { $image[$j]=''; $fn[$j]=''; }
for($nbi=1; $nbi<=5; $nbi++) {
if(!empty($_FILES['image'.$nbi]['tmp_name'])) { $image[$i]=$_FILES['image'.$nbi]; $i++; }
}
copy("$image1", '/home/auto7837/public_html/photos/avendrenp/'.$id.'-'.$v.'.jpg');
{

mysql_query("UPDATE avendrepubliee SET typedannonce='{$typedannonce}', marque='{$marque}', autres='{$autres}', modele='{$modele}', prix='{$prix}', negociable='{$negociable}', annee='{$annee}', etat='{$etat}', carburant='{$carburant}', kilometrage='{$kilometrage}', transmission='{$transmission}', immatricule='{$immatricule}', climatisation='{$climatisation}', audio='{$audio}', cylindre='{$cylindre}', puissance='{$puissance}', consommation='{$consommation}', couleurinterieure='{$couleurinterieure}', couleurexterieure='{$couleurexterieure}', telephone='{$telephone}', email='{$email}', message='{$message}', image1='{$fn[0]}', image2='{$fn[1]}', image3='{$fn[2]}', image4='{$fn[3]}', image5='{$fn[4]}' WHERE id='{$id}';");
}

mais j ai une erreur Parse error: syntax error, unexpected $end in /home/auto7837/public_html/publieravendre1.php on line 340
0
Bilow Messages postés 1022 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
3 sept. 2010 à 18:14
Tu as oublié une accolade de fin } pour la boucle
while($row=mysql_fetch_array($req)) { 
Place '}' là où la boucle s'arrête.
Oublei la variable PHP. Ce n'est pas un handle, c'est juste l'emplacement de l'image.
Tu peux me donner un exemple de $image1 (mais pas vide) ?
0