par
Stef » 16 janv. 2009, 15:17
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...

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]<?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();
?>[/php]
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!
[b]EDIT[/b]
Résolu! fonctionnne en ligne pas en local... :oops: