Bonjour,
J'ai un formulaire qui comporte 2 champs "FILE".
Le 1er permet d'uploader 1 fichier PDF et le second permet d'uploader 3 photos sur le serveur.
Le probleme est que je n'arrive pas à récupérer les données dans la table users_images des photos uploadées par les utilisateurs mais ça fonctionne bien quand je supprime le script qui traite le champ "FILE" destiné aux PDF.
Donc apparemment c'est un probleme qui provient du script additionnel (dossier pdf)
Voici la structure :
le form:
<form method="post" enctype="multipart/form-data" name="upload" id="upload" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
Pour info mon champ pour uploader le pdf se nomme ddp et les champs pour uploader les images se nomment "image".
ALors quelqu'uns sait-il comment faire pour que le fomulaire traite le 2 instructions (upload pdf puis inscription dans une table et upload des image avec inscription dans un AUTRE table).
Merci d'avance
Modifié par pareto (02 Apr 2010 - 10:12)
J'ai un formulaire qui comporte 2 champs "FILE".
Le 1er permet d'uploader 1 fichier PDF et le second permet d'uploader 3 photos sur le serveur.
Le probleme est que je n'arrive pas à récupérer les données dans la table users_images des photos uploadées par les utilisateurs mais ça fonctionne bien quand je supprime le script qui traite le champ "FILE" destiné aux PDF.
Donc apparemment c'est un probleme qui provient du script additionnel (dossier pdf)
Voici la structure :
$repertoire_images = 'uploads';
$max_images = 3;
$taille_max = 1048576; // 1Mo
require('connexion.inc.php');
// Récupération des rubriques
$rubriques = array(0 => 'Choisir une rubrique');
$sql_rub = 'Select rubrique_user, nom_rubrique From rubriques Order By nom_rubrique';
$result_rub = mysql_query($sql_rub) or die(mysql_error());
while($row_rub = mysql_fetch_assoc($result_rub))
{
$rubriques[$row_rub['rubrique_user']] = $row_rub['nom_rubrique'];
}
// Initialisation ou récupération des variables
$nom = !empty($_POST['nom']) ? trim($_POST['nom']) : '';
$prenom = !empty($_POST['prenom']) ? trim($_POST['prenom']) : '';
$email = !empty($_POST['email']) ? trim($_POST['email']) : '';
$site = !empty($_POST['site']) ? trim($_POST['site']) : '';
$article = !empty($_POST['article']) ? trim($_POST['article']) : '';
$rubrique = !empty($_POST['rubrique']) ? intval($_POST['rubrique']) : '0';
$erreurs = array();
if($_SERVER['REQUEST_METHOD']=='POST')
{
if(empty($nom))
{
$erreurs[] = 'Le nom est obligatoire.';
}
if(empty($prenom))
{
$erreurs[] = 'Le prénom est obligatoire.';
}
if($rubrique == 0 || $rubrique > count($rubriques))
{
$erreurs[] = 'La rubrique est obligatoire.';
}
// images
if (!empty($_FILES))
{
foreach($_FILES as $index => $array_image)
{
if(!empty($_FILES[$index]['name']))
{
if($_FILES[$index]['error'] > 0)
$erreurs[] = 'Erreur survenue durant l\'upload de l\'image '.$_FILES[$index]['name'];
elseif($_FILES[$index]['size'] > $taille_max)
{
$erreurs[] = 'l\'image '.$_FILES[$index]['name'].' dépasse le poids autorisé.';
}
}
}
}
// Aucune erreur...
if(empty($erreurs))
{
mysql_query("SET NAMES 'utf8'");
// Création du user
$sql = sprintf("Insert Into users (id_user, nom_user, prenom_user, email_user, site_user, article_user, rubrique_user) Values(null, '%s', '%s', '%s', '%s','%s','$rubrique')",
mysql_real_escape_string($nom),
mysql_real_escape_string($prenom),
mysql_real_escape_string($email),
mysql_real_escape_string($site),
mysql_real_escape_string($article),
mysql_real_escape_string($rubrique));
mysql_query($sql);
$id_user = mysql_insert_id();
//dossier pdf
//Initialisation d'un variable qui autorisera ou non l'enregistrement dans la base
$uploaded=0;
$fichier = $_POST['ddp'];
$fichier_size = $_FILES['ddp']['size'];
$fichier_name = $_FILES['ddp']['name'];
$fichier_tmp = $_FILES['ddp']['tmp_name'];
//Si le fichier a une taille
if($fichier_size>0)
{
//on génère un nombre aléatoire en 0 et 100000 qui sera ajouté à la fin du nom du dossier pour éviter les conflits (deux fichiers avec le même nom)
$rename=rand(0,100000);
//Répertoire où sera stocké ce fichier (le répertoire doit avoir les droits 0777)
$rep ="/ddp/";
//On met le nom du fichier dans la variable $newfichier
$newfichier=$fichier_name;
//on sépare en deux le nom et l'extension
list($nom, $ext) = explode(".", $newfichier);
//Au nom, on rajoute un underscore et le nombre généré
$nom = $nom."_".$rename;
//On lui rajoute l'extension pour la copie dans le dossier
$savefile= $rep.$nom.".".$ext;
//Le fichier est déplacé dans le dossier prévu
move_uploaded_file($fichier_tmp, $savefile) or die('Impossible de copier le fichier : '.$savefile.mysql_error());
$sqlddp= sprintf("Insert Into users_ddp (id_ddp, id_user, chemin_ddp) Values(null, $id_user, '$savefile')",
mysql_real_escape_string($chemin_ddp));
mysql_query($sqlddp);
//On passe la variable à 1
$uploaded=1;
}
//Sinon, si le fichier n'a pas de taille
else
{
//Si pas de taille, la variable reste à zéro pour empêcher l'écriture dans la base
$uploaded=0;
}
// Récupération de l'id_user créé
if (!empty($_FILES))
{
foreach($_FILES as $index => $array_image)
{
if(!empty($_FILES[$index]['name']))
{
$chemin_image = $repertoire_images .'/'. $id_user . '-' . basename($_FILES[$index]['name']);
if (move_uploaded_file($_FILES[$index]['tmp_name'], $chemin_image))
{
$sql= sprintf("Insert Into users_images (id_image, id_user, chemin_image) Values(null, $id_user, '%s')",
mysql_real_escape_string($chemin_image));
mysql_query($sql);
}
else
{
$erreurs[] = 'Erreur survenue durant la copie de l\'image '.$_FILES[$index]['name'].'. Vérifier les droits du répertoire '.$repertoire_images;
break;
}
}
}
}
// Traitement (envoi de mail, Insert en base, etc.)
header('Location: confirmation.php');
}
}
le form:
<form method="post" enctype="multipart/form-data" name="upload" id="upload" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
Pour info mon champ pour uploader le pdf se nomme ddp et les champs pour uploader les images se nomment "image".
ALors quelqu'uns sait-il comment faire pour que le fomulaire traite le 2 instructions (upload pdf puis inscription dans une table et upload des image avec inscription dans un AUTRE table).
Merci d'avance
Modifié par pareto (02 Apr 2010 - 10:12)