Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour,
sur mon site quand je rajoute une petite annonce en fin d'ajout, j'ai une page ou je peu
rajouter une photo, mais qu'une seul, j'amerais pouvoir en rajouter 5...
Dans ma bdd le nom de la photo s'enregistre dans la champ "photo", j'ai donc rajouter 4 autres
champ, "photo2", "photo3"... jusqu'a 4.
J'aurais vraiment besoin d'un pti coup de pouce pour arriver a traiter les 5 photos, ce serait super!
Et à améliorer le code peu étre.
Merci d'avance si vous pouvez jettez un pti coup d'oeil au code, et m'aider.
Mon formulaire pour l'intant ressemble à ça:
et son traitement:
if (phpversion() > "4.0.6" ) {
$HTTP_POST_FILES = &$_FILES;
}
define("MAX_SIZE",80000000);
define("DESTINATION_FOLDER", "images" );
define("no_error", "../index.php" );
define("yes_error", "../index.php" );
$_accepted_extensions_ = "jpg,jpeg,JPG,JPEG,gif,GIF,png,PNG";
if(strlen($_accepted_extensions_) > 0){
$_accepted_extensions_ = @explode(",",$_accepted_extensions_);
} else {
$_accepted_extensions_ = array();
}
if (isset($HTTP_POST_FILES['file'])){
$_file_ = $HTTP_POST_FILES['file'];
if(is_uploaded_file($_file_['tmp_name']) && $HTTP_POST_FILES['file']['error'] == 0){
$errStr = "";
$_name_ = $_file_['name'];
$_type_ = $_file_['type'];
$_tmp_name_ = $_file_['tmp_name'];
$_size_ = $_file_['size'];
if($_size_ > MAX_SIZE && MAX_SIZE > 0){
$errStr = "Votre photo est trop lourde";
}
$_ext_ = explode(".", $_name_);
$_ext_ = strtolower($_ext_[count($_ext_)-1]);
if(!in_array($_ext_, $_accepted_extensions_) && count($_accepted_extensions_) > 0){
$errStr = "l extension n est pas prise en compte";
}
if(!is_dir(DESTINATION_FOLDER) && is_writeable(DESTINATION_FOLDER)){
$errStr = "La destination de la photo est incorecte";
}
if(empty($errStr)){
//je supprime les accents du nom de la photo--------------------------
function supprimeAccents($chaine){
$tofind = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ ";
$replac = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn_";
return(strtr($chaine,$tofind,$replac));
}$_name_=supprimeAccents($_name_);
//fin de supprimer les accents-------------------------------
// un nouveau nom pour les photos en double
$nombre=1;
$repertoire_upload="images/";
$nouveau_nom=$_name_."";
while (file_exists($repertoire_upload.$nouveau_nom))
{
$nombre++; // on incremente le nombre tant que le nom du fichier existe
$nouveau_nom=$nombre.$nouveau_nom;
}// fin while
//ok j'enregistre la photo dans le dossier
if(@copy($_tmp_name_,DESTINATION_FOLDER . "/" . $nouveau_nom)){
$_POST['idannonce'];
$idannonce=$_POST['idannonce'];
mysql_select_db($database_connexion, $connexion);
$updateSQL = "UPDATE an_annonce SET photo='$nouveau_nom' WHERE idannonce='$idannonce'";
mysql_select_db($database_connexion, $connexion);
$Result1 = mysql_query($updateSQL, $connexion) or die(mysql_error());
header("Location: " . no_error);
} else {
header("Location: " . yes_error);
}
} else {
header("Location: " . yes_error);
}
}
}
?>
Merci encore!
Hors ligne
Il te faudra donc rajouter un champs file dans ton formulaire :
Avec un nom différent.
Ensuite dans le code PHP il te faudra trouver où est utilisée la variable d'index file et faire un doublon du code avec un index file2.
Et appliquer la méthode pour les autres, mais mieux vaut tester de n'en rajouter qu'une seule au cas où tu aurais des soucis. ^_-
Hors ligne
Salut,
il te faut faire un upload multiple que j'explique ici => http://www.phpjungle.info/cours/10-comm … -http.html
il te faut penser au fait que la taille Max des photos est limitée par le poid Max des fichiers que tu peut envoyer (2Mo) et la taille Max des données sur le formulaire (8Mopar défaut).
Pour ce qui est du code :
avoir 5 champs image dans la table est une hérésie.
Tu fait table qui contient l'identifiant de l'annonce et le nom dd l'image. Pour savoir si une annonce a des image tu fait une requête sur la seconde table.
Cela te permet de faire une dynamique et de ne pas avoir une structure figée pleine de vide (Ben oui demain tu voudra peut être ne permettre que 2 photos )
l'avantage aussi est qu'un sple sélect te permet de savoir combien de champ image tu peut afficher et construire ton formulaire totalement dynamiquement et le tout simplement
@+
Il en faut peu pour être heureux pompompompompompompompompompompom
Hors ligne
Merci pour vos réponses!
j'ai essayé la solution de xTG qui me convient mieux, je pense mais sans succés...
je sais pas comment faire un doublon de la variable d'index file, enfin j'ai essayé quelques trucs qui me semblé logique
en rajoutant "file2" et "$_file_" etc.. de la ligne 16 à 26 , mais des soucis ensuite au niveau de l'enregistrement dans la bdd "$nouveau_nom" etc...
Par contre moogli le upload que tu explique serait pas mal mais est ce que les noms s'enregistre dans une bdd? je vois aucune ligne
pour l'envoie dans la base de donné.
Remarque je vais essayé de l'ajouter.
Dur Dur pour moi...
Merci encore!
Dernière modification par dobi19 (07-03-2010 18:40:11)
Hors ligne
Bjr,
Si quelqu'un pouvait me re écrire les parties du code à changer, et m'expliquer plus précisément le pourquoi du comment, je lui en serait éternellement reconnaissant...
Je cale complet...
Snif snif...
Dernière modification par dobi19 (08-03-2010 19:05:39)
Hors ligne
Le tutorial de Moogli ne t'a pas aidé ? Je l'ai parcouru et je dois bien dire que je vois pas quoi ajouter de plus...
C'est bien commenté je trouve.
Quelles sont les parties que tu ne comprends pas ?
Hors ligne
Bonjour,
ce que je n'arrive pas à faire en faite c'est enregistrer chaque nom de fichiers dans photo, photo1, photo2... Dans la base de donnée.
Comme le nom des fichiers envoyé est name="fichier[]" du coup je suis perdu...
C'est pour ça.
Hors ligne
Saluton,
var_dump($_FILES);
inséré dans ton code devrait te donner une idée de comment manipuler ces informations.
Rappel de la doc
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
En faite ce que je pensais faire c'est:
Aprés la ligne ou dans le code de moogli on déplace l'image dans le dossier, ensuite je veux
récupérer l'identifiant de mon annonce et enregistrer l'identifiant et les nom des photos pour
les enregistrer dans la base de donnée.
Mais à la ligne:
Je suis censé mettre quoi entre les quote dans photo2=' '
// Je récupére l'id de l'annonce
$_POST['idannonce'];
$idannonce=$_POST['idannonce'];
//J'enregistre le nom des photos et l'id dans la bdd
mysql_select_db($database_connexion, $connexion);
$updateSQL = "UPDATE an_annonce SET photo='$nom_final' WHERE idannonce='$idannonce'";
mysql_select_db($database_connexion, $connexion);
$Result1 = mysql_query($updateSQL, $connexion) or die(mysql_error());
Je viens de regarder la fonction avec avec var_dump()
mais comment l'appliquer dans mon cas:
et je remplace ensuite $a et $b pour photo, photo1...
Merci!
Dernière modification par dobi19 (09-03-2010 10:39:29)
Hors ligne
Bonjour,
merci encore a vous tous!
Maljuna Kris tu ne pourrais pas me donner un exemple concret avec var_dump($_FILES); s'il te plait?
Hors ligne
Pages :: 1