Page 1 sur 1

Traitement formulaire upload fichier audio

Posté : 16 janv. 2009, 15:17
par Stef
Hellohooo :)

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... :oops: