je veux traiter les données d'un formulaire, mais mon code ne fonctionne pas concernant l'upload du fichier proposé par l'utilisateur, et là j'ai besoin de lumières pour résoudre le problème; voici mon fichier de traitement donc:
<?php
$titre_erreur = NULL;
$descr_erreur = NULL;
$descr_erreur2 = NULL;
$descr_erreur3 = NULL;
$rights_erreur = NULL;
$tune_erreur = NULL;
$tune_erreur2 = NULL;
$tune_erreur3 = NULL;
$right_erreur = NULL;
$i = 0;
$temps = time();
$descriptif = mysql_real_escape_string(htmlspecialchars($_POST['descriptif'], ENT_QUOTES));
$titre = mysql_real_escape_string(htmlspecialchars($_POST['titre']));
$titre = stripslashes(nl2br($titre));
$dl = $_POST['dl'];
$cat = $_POST['style'];
$refid_user = $_POST['refid_user'];
$licence = $_POST['licence'];
$dossier = 'upload/';
$fichier = basename($_FILES['tune']['name']);
$taille_maxi = 1000000;
$taille = filesize($_FILES['tune']['tmp_name']);
$extensions = array('.mp3', '.wma');
$extension = strrchr($_FILES['tune']['name'], '.');
//Vérification du titre
if (empty($_POST['titre']))
{
$titre_erreur = 'Le champ "Titre de l\'annonce" est vide.<br />';
$i++;
}
if (strlen($_POST['descriptif']) < 200)
{
$descr_erreur2 = 'Description trop courte (moins de 200 caractères).<br />';
$i++;
}
if (strlen($_POST['descriptif']) > 2000)
{
$descr_erreur3 = 'Description trop longue (plus de 2000 caractères).<br />';
$i++;
}
if ($_POST['right'] == '')
{
$right_erreur = 'Tu dois cocher la case "Droits et propriétés" pour attester que tu possèdes les
droits sur l\'oeuvre proposée! Si ce n\'est pas le cas tu ne dois pas envoyer ce son...<br />';
$i++;
}
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$tune_erreur = 'Le fichier sélectionné n\'est ni un mp3 ni un wma...<br />';
$i++;
}
if($taille>$taille_maxi)
{
$tune_erreur2 = 'Le fichier est trop volumineux...<br />';
$i++;
}
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(move_uploaded_file($_FILES['tune']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo '';
}
else //Sinon (la fonction renvoie FALSE).
{
$tune_erreur3 = 'Upload impossible... échec du transfert.<br />';
$i++;
}
if ($i == 0) // Si i est vide, il n'y a pas d'erreur
{
echo'<h4>Succès '; echo stripslashes(htmlspecialchars($_SESSION['nom'])); echo'</h4>
<p>Ton son, <b>'.$_POST['titre'].'</b>, est publié, merci pour ta participation!</p>';
mysql_query('
INSERT INTO mb_tunes (titre, tune, cat, date, descriptif, licence, refid_user, dl)
VALUES ("'.$titre.'" , "'.$fichier.'" , "'.$cat.'" , "'.$temps.'" , "'.$descriptif.'" , "'.$licence.'" , "'.$refid_user.'" , "'.$dl.'") ')
or die(mysql_error());
}
else
{
echo'<h4>Une ou plusieurs erreurs se sont produites pendant l\'ajout d\'un nouveau son...</h4>';
echo'<br /><p>'.$i.' <b>Erreur(s):</b></p><br />';
echo'<i>'.$titre_erreur.'</i>';
echo'<i>'.$descr_erreur.'</i>';
echo'<i>'.$descr_erreur2.'</i>';
echo'<i>'.$descr_erreur3.'</i>';
echo'<i>'.$rights_erreur.'</i>';
echo'<i>'.$tune_erreur.'</i>';
echo'<i>'.$tune_erreur2.'</i>';
echo'<i>'.$tune_erreur3.'</i>';
echo'<i>'.$right_erreur.'</i>';
echo'<br /><br />';
}
mysql_close();
?>
J'aimerais savoir pourquoi l'upload du fichier ne fonctionne pas, ça me retourne à chaque fois l'erreur $tune_erreur3, soit "Upload impossible... échec du transfert."; il me manque des infos et je n'arrive pas à comprendre comment faire fonctionner ce code...Votre aide sera la bienvenue, merci beaucoup!
EDIT
Résolu! fonctionnne en ligne pas en local...