par
Boro64 » 13 oct. 2008, 13:10
Bonjour
Et pardon pour le retard de ma réponse, ma fille et le week end sont passés par là...
Voici donc le code demandé par Katagoto:
<?php
$extension = array('jpg', 'gif', 'jpeg', 'png');//définition de la variable extension gérant les ext. autorisées
$dos_destinataire = '../photos/';//définition de l'adresse du dossier destinataire
// on teste si le formulaire permettant d'uploader un fichier a été soumis
if (isset($_POST['enregistrer'])) {
// on se connecte notre base
include ('../code_boutik/connect.inc.php');
//déclaration chargement photo
if(isset($_FILES['fichier']))
{
//$_FILES existe
$compteur=0;
foreach ($_FILES['fichier']['name'] as $key => $value) {
$fichier=$value;//nom reel de l'image
$size=$_FILES['fichier']['size'][$key]; //poids de l'image en octets
$tmp=$_FILES['fichier']['tmp_name'][$key];//nom temporaire de l'image (sur le serveur)
$type=$_FILES['fichier']['type'][$key];//type de l'image
//On récupère la taille de l'image
list($width,$height)=getimagesize($tmp);
if (is_uploaded_file($tmp)) //permet de vérifier si le fichier a été uplodé via http
{
//vérification du type de l'image et son poids
if ( in_array(substr($fichier, -3), $extension) && $size<=2097152 )
{
// type mime jpeg, jpg, gif ou png poids < à 2097152 octets soit 2Mo
//Pour supprimer les espaces dans les noms de fichiers
$fichier = preg_replace ("` `i","",$fichier);//ligne facultative :)
//On vérifie s'il existe une image qui a le même nom dans le répertoire
if (file_exists('../photos/'.$fichier))
{
/*Le fichier existe on rajoute dans son nom le timestamp du moment pour le
différencier de la première
*/
$nom_final= preg_replace("`.`is",date("U").".",$fichier);
}
else {
$nom_final=$fichier; //l'image n'existe pas on garde le même nom
}
//on déplace l'image dans le répertoire final
if (move_uploaded_file($nom_final, $dos_destinataire)) {
//Message indiquant que tout s'est bien passé
//Pour le test on affiche l'image
echo 'Votre référence a bien été prise en compte<br /><br /><br />';
}
else {
//l'image ne peut être déplacée, on supprime le fichier temporaire
@ unlink ($tmp);
echo 'L\'image n\'a pu être déplacée !<br /><br /><br />';
}
}
else {
//Le type mime, ou la taille ou le poids est incorrect
echo 'Votre image a été rejetée (poids, taille ou type incorrect)<br /><br /><br />';
}
}
$tab_final[$compteur] = $nom_final;
$compteur++;
}
}
// on teste la déclaration de nos variables
if (!isset($_POST['description']) && ($_POST['titre']) && ($_POST['prix'])) {
$erreur = 'Les variables nécessaires au script ne sont pas définies.';
}
else {
if (empty($_POST['description'])&& ($_POST['titre']) && ($_POST['prix'])) {
$erreur = 'Le champs description, titre ou prix est vide.';
}
// si tout est bon, on peut commencer l'insertion dans la base
else {
// lancement de la requête d'insertion
//définition de quelques variables
$sql = "INSERT INTO stock (id_article, date, marque, modele, type, annee, cc, titre, descrip, prix, famille, ss_famille, nam_photo) VALUES('', NOW(), '".$marque."', '".$modele."', '".$type."', '".$annee."', '".$cc."', '".$titre."', '".$descrip."', '".$prix."', '".$famille."', '".$ssfamille."', '".$nam_photo."')";
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
// on ferme la connexion à la base de données
mysql_close();
// on redirige vers la page d'accueil de l'admin
header('Location: insert_article.php');
// on termine le script courant
exit();
}
}
}
?>
Pour le(s) message(s) d'erreur(s), c'est un peu...aléatoire; parfois aucun message mais aucune image enregistrée dans le dossier cible et aucun nom d'image récupéré dans la bdd, parfois (je viens d'en faire le test) le nom est récupéré dans la bdd mais l'image n'est pas récupérée dans le dossier cible; le test que je viens de faire comportait l'upload de 2 images; je récupère le nom d'une image, aucune image dans le dossier-cible et le message d'erreur suivant:
L'image n'a pu être déplacée !
Warning: Cannot modify header information - headers already sent by (output started at /homez.9/lesite/www/boutik/gestion_boutik/insert_article.php:59) in /homez.9/lesite/www/boutik/gestion_boutik/insert_article.php on line 119
Merci de toute aide, avis, conseil, etc. qui me permette de sortir de là...

Bonjour
Et pardon pour le retard de ma réponse, ma fille et le week end sont passés par là... :lol:
Voici donc le code demandé par Katagoto:
[php]
<?php
$extension = array('jpg', 'gif', 'jpeg', 'png');//définition de la variable extension gérant les ext. autorisées
$dos_destinataire = '../photos/';//définition de l'adresse du dossier destinataire
// on teste si le formulaire permettant d'uploader un fichier a été soumis
if (isset($_POST['enregistrer'])) {
// on se connecte notre base
include ('../code_boutik/connect.inc.php');
//déclaration chargement photo
if(isset($_FILES['fichier']))
{
//$_FILES existe
$compteur=0;
foreach ($_FILES['fichier']['name'] as $key => $value) {
$fichier=$value;//nom reel de l'image
$size=$_FILES['fichier']['size'][$key]; //poids de l'image en octets
$tmp=$_FILES['fichier']['tmp_name'][$key];//nom temporaire de l'image (sur le serveur)
$type=$_FILES['fichier']['type'][$key];//type de l'image
//On récupère la taille de l'image
list($width,$height)=getimagesize($tmp);
if (is_uploaded_file($tmp)) //permet de vérifier si le fichier a été uplodé via http
{
//vérification du type de l'image et son poids
if ( in_array(substr($fichier, -3), $extension) && $size<=2097152 )
{
// type mime jpeg, jpg, gif ou png poids < à 2097152 octets soit 2Mo
//Pour supprimer les espaces dans les noms de fichiers
$fichier = preg_replace ("` `i","",$fichier);//ligne facultative :)
//On vérifie s'il existe une image qui a le même nom dans le répertoire
if (file_exists('../photos/'.$fichier))
{
/*Le fichier existe on rajoute dans son nom le timestamp du moment pour le
différencier de la première
*/
$nom_final= preg_replace("`.`is",date("U").".",$fichier);
}
else {
$nom_final=$fichier; //l'image n'existe pas on garde le même nom
}
//on déplace l'image dans le répertoire final
if (move_uploaded_file($nom_final, $dos_destinataire)) {
//Message indiquant que tout s'est bien passé
//Pour le test on affiche l'image
echo 'Votre référence a bien été prise en compte<br /><br /><br />';
}
else {
//l'image ne peut être déplacée, on supprime le fichier temporaire
@ unlink ($tmp);
echo 'L\'image n\'a pu être déplacée !<br /><br /><br />';
}
}
else {
//Le type mime, ou la taille ou le poids est incorrect
echo 'Votre image a été rejetée (poids, taille ou type incorrect)<br /><br /><br />';
}
}
$tab_final[$compteur] = $nom_final;
$compteur++;
}
}
// on teste la déclaration de nos variables
if (!isset($_POST['description']) && ($_POST['titre']) && ($_POST['prix'])) {
$erreur = 'Les variables nécessaires au script ne sont pas définies.';
}
else {
if (empty($_POST['description'])&& ($_POST['titre']) && ($_POST['prix'])) {
$erreur = 'Le champs description, titre ou prix est vide.';
}
// si tout est bon, on peut commencer l'insertion dans la base
else {
// lancement de la requête d'insertion
//définition de quelques variables
$sql = "INSERT INTO stock (id_article, date, marque, modele, type, annee, cc, titre, descrip, prix, famille, ss_famille, nam_photo) VALUES('', NOW(), '".$marque."', '".$modele."', '".$type."', '".$annee."', '".$cc."', '".$titre."', '".$descrip."', '".$prix."', '".$famille."', '".$ssfamille."', '".$nam_photo."')";
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
// on ferme la connexion à la base de données
mysql_close();
// on redirige vers la page d'accueil de l'admin
header('Location: insert_article.php');
// on termine le script courant
exit();
}
}
}
?>
[/php]
Pour le(s) message(s) d'erreur(s), c'est un peu...aléatoire; parfois aucun message mais aucune image enregistrée dans le dossier cible et aucun nom d'image récupéré dans la bdd, parfois (je viens d'en faire le test) le nom est récupéré dans la bdd mais l'image n'est pas récupérée dans le dossier cible; le test que je viens de faire comportait l'upload de 2 images; je récupère le nom d'une image, aucune image dans le dossier-cible et le message d'erreur suivant:
[quote]L'image n'a pu être déplacée !
Warning: Cannot modify header information - headers already sent by (output started at /homez.9/lesite/www/boutik/gestion_boutik/insert_article.php:59) in /homez.9/lesite/www/boutik/gestion_boutik/insert_article.php on line 119[/quote]
Merci de toute aide, avis, conseil, etc. qui me permette de sortir de là... :?