pb upload (changement : caractère spéciaux et UTF-8)

ViPHP
AB
ViPHP | 5818 Messages

22 sept. 2011, 02:32

Je sais pas tu fais certainement de fausses manip. D'ailleurs tu avais dit que tu avais suivi le tuto sur l'utf-8 et pourtant pour avoir de l'utf-8 tu écris dans ton code :

Code : Tout sélectionner

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
à la place de

Code : Tout sélectionner

<meta http-equiv="Content-type" content="text/html; charset=UTF-8"/>
Faut faire attention et suivre toutes les étapes pas à pas sinon tu ne t'en sortira pas.

Eléphant du PHP | 188 Messages

23 sept. 2011, 21:50

Ah ba ça doit etre une ancienne version de mon code parce que moi j'avais deja la ligne avec UTF-8.

Oui j'ai suivi le tuto et pourtant je ne comprends pas ... Il faut que j'entoure de utf-8_encode() ou utf-8_decode() les textes avant l'affichage ?

ViPHP
AB
ViPHP | 5818 Messages

24 sept. 2011, 20:36

Non justement si toute la page est en utf-8 tu n'as pas à utiliser ces fonctions sauf si tu importe des données extérieures qui ne sont pas en utf-8.

Fait voir tout ton script (pas celui de la classe).

Eléphant du PHP | 188 Messages

25 sept. 2011, 17:07

Le voila :
<?php
	session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8"/>
<title>Document sans titre</title>
</head>
<body>
<!-- verification connexion user -->
	<?php
	if (!empty($_SESSION['pseudo']) AND !empty($_SESSION['pass']) AND !empty($_SESSION['id'])) // si les infos ont bien été créées
		{
		$log = 1;
		}
    else //si les infos n'ont pas été bien envoyées ou pas crées
		{
        $log = 0;
		}
	?>
<!--   /fin de la verification -->
<!-- corps du site -->
	<?php
		if ($log == 1) //si l'user est connecté
			{
// Chargement de la classe
require('Classe_upload.php');

$repertoire_destination = 'Code/musiques';

//Déclaration de la classe
$up = new Telechargement($repertoire_destination,'form1','song','controle_form');

//Extensions autorisées (sans les .)
$extensions = array("mp3");
$up->Set_Extensions_accepte ($extensions);

// Rennommage des fichiers (en mode incrémentiel) si déjà présents sur le serveur.
$up->Set_Renomme_fichier('incr');

// Téléchargement
$up->Upload();


// Enregistrement en bdd des valeurs récupérées par le post
if (isset($_POST['form1']))
{

       // Récupération des valeurs du transfert de fichiers
       $transfert = $up->Get_Tab_upload();//tableau à plusieurs dimensions (c.f. Doc de la class pour plus de détails)
                  
       // définition d'une valeur par défaut
       $fichier = null;

       if (isset($transfert['resultat']))
            {
                foreach ($transfert['resultat'] as $num => $rep)
                     {
                          foreach ($rep as $key => $value)
                              {
                                   if(!empty($value['nom'])) $fichier =  $value['nom'];// Nom du fichier transféré
                                   $dossier =  $key; // Nom du dossier 
                              }                     
                     }    
            }

        
      if(isset($fichier))
            {
                   // là on est certain que le code entre ces accolades ne s'exécutera que si un fichier à été téléchargé
                                 
                   // suite du code récupération des autres variables et enregistrement en bdd
                     
                  // Récupération de tes autres valeurs
                 //on regarde si la description est remplie
         if ((isset($_POST['description'])) AND (!empty($_POST['description'])))
                         {
                         $description = $_POST['description'];
                         }
         else
                         {
                         $description = '';
                         }
         if ((isset($_POST['style'])) AND (!empty($_POST['style'])))
                         {
                         $style = $_POST['style'];
                         }
         else
                         {
                         $style = '';
                         $_SESSION['info_style'] = 0;
						 echo "Veuillez s&lectionner un style musical.";
						 $up->Get_Reload_page();
                         }
                if ((isset($_POST['titre'])) AND (!empty($_POST['titre'])))
					{
					$titre = $_POST['titre'];
					if (preg_match("#^[a-zA-Z0-9]+$#", $titre))
						{
						}
					else
						{
						echo "Veuillez n'utiliser que des caractères alphanumériques.";
						$up->Get_Reload_page();
						}
					}
				else
					{
					echo "Veuillez indiquer le titre de la chanson.";
					$up->Get_Reload_page();
					}
                  // Connexion à ta bdd
                 // connexion BDD par PDO

         $PARAM_hote='localhost';      // le chemin vers le serveur
         $PARAM_port='3306';
         $PARAM_nom_bd='monsite';          // le nom de votre base de données
         $PARAM_utilisateur='root';    // nom d'utilisateur pour se connecter
         $PARAM_mot_passe='';          // mot de passe de l'utilisateur pour se connecter

         try{
                         $connexion = new PDO('mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
                         $connexion -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
                         /* BDD connectee */
         }
         catch(Exception $e){
                 /* erreur connection */
                 echo 'Une erreur est survenue !';
                 echo 'Erreur : '.$e->getMessage().'<br />';
                 echo 'N° : '.$e->getCode();
                 die();
         }
         //   /fin de la connexion BDD par PDO-->
         //exemple de requête avec mysql (protéger les valerurs par mysql_real_escape_string) ou utiliser PDO --> j'utilise PDO::quote
          $artiste = $_SESSION['pseudo'];
          $id_artiste = $_SESSION['id'];
          $adresse_chanson = $dossier.'/'.$fichier;
		  $vues = 0;
		  $note = 0;
         $insert = $connexion->prepare('INSERT INTO chansons(titre, artiste, id_artiste, date_envoi, vues, note, description, adresse_chanson, style) VALUES(:titre, :artiste, :id_artiste, NOW(), :vues, :note, :description, :adresse_chanson, :style)');
			try 
			{
			$insert->execute(array(
						'titre' => $titre,
						'artiste' => $artiste,
						'id_artiste' => $id_artiste,
						'vues' => $vues,
						'note' => $note,
						'description' => $description,
						'adresse_chanson' => $adresse_chanson,
						'style' => $style
						));
			}
			catch(Exception $e)
			{
                 /* erreur insertion */
                 echo 'Une erreur est survenue !';
                 echo 'Erreur : '.$e->getMessage().'<br />';
                 echo 'N° : '.$e->getCode();
                 die();
			}
			$insert->closeCursor(); // Termine le traitement de la requête
}                            
                         
                                  
}
         



// Récupération des messages d'information
$resultat = $up->Get_Tab_message();
?>
 <form enctype = "multipart/form-data" action = "<?php echo htmlspecialchars($_SERVER['PHP_SELF']).'?controle_form=1' ?>" method = "post">
      
       <input type="hidden" name="MAX_FILE_SIZE" value="5242880" />

       <input type="file" name="song[]" /><br  />
          
		<label for="titre">Titre de la chanson : (seuls les caract&egrave;res alphanum&eacute;riques sont autoris&eacute;s)</label><input type="text" name="titre" id="titre"/><br />
                 <label for="style"> Style musical de la chanson : </label>
                 <select name="style" id="style" >
                                 <option value="blues" > Blues </option>
                                 <option value="chanson_francaise" > Chanson Fran&ccedil;aise </option>
                                 <option value="classique" id="classique" > Classique </option>
                                 <option value="club" > Club </option>
								 <option value="country" > Country </option>
								<option value="dance" > Dance </option>
								<option value="disco" > Disco</option>
								<option value="electro" > Electro</option>
								<option value="electro_rock" >Electro-Rock </option>
								<option value="electro_pop" > Electro-Pop</option>
								<option value="folk" > Folk</option>
								<option value="funk" > Funk</option>
								<option value="garage_rock" > Garage Rock</option>
								<option value="gospel" > Gospel</option>
								<option value="grunge" > Grunge</option>
								<option value="hard_rock" > Hard Rock </option>
								<option value="heavy_metal" > Heavy Metal</option>
								<option value="hip_hop" > Hip Hop</option>
								<option value="house" > House</option>
								<option value="indie_rock" > Indie Rock</option>
								<option value="instrumental" > Instrumental</option>
								<option value="jazz" > Jazz</option>
								<option value="lounge" > Lounge<option>
								<option value="mambo" > Mambo</option>
								<option value="opera" > Opera</option>
								<option value="pop" > Pop</option>
								<option value="pop_rock" > Pop Rock</option>
								<option value="punk" > Punk</option>
								<option value="punk_rock" > Punk Rock</option>
								<option value="rnb" > R'n'B</option>
								<option value="rap" > Rap</option>
								<option value="reggae" > Reggae</option>
								<option value="rock" > Rock</option>
								<option value="salsa" > Salsa</option>
								<option value="slam" > Slam</option>
								<option value="soul" > Soul</option>
								<option value="tango" > Tango</option>
								<option value="techno" > Techno</option>
								<option value="trance" > Trance</option>
						</select><br />
				 <textarea name="description" id="description" /></textarea><label for="description" > Breve description de la chanson (facultatif) : </label>
                 <input type="submit" name = "form1" value="Envoyer le fichier">
 </form>

<?php //affichage des résultats
if (!empty($resultat))
         {
                 echo '<p>';
                         foreach ($resultat as $num)
                                 {
                                         foreach ($num as $value)
                                         echo htmlspecialchars($value).'<br />';
                                 }
                 echo '</p>';
         }
}
		else   //si l'user n'est pas connecté
			{
			?>
			<p>Vous devez &ecirc;tre connect&eacute; pour acc&eacute;der &agrave; cette partie. <br />
			<a href="connexion.php" alt="connexion" > Se Connecter, </a>ou <a href="enregistrer.php" alt="inscription"> S'inscrire. </a><br /></p>
			<?php
			}
			?>
?>
</body>
</html>
Merci :)

ViPHP
AB
ViPHP | 5818 Messages

26 sept. 2011, 00:41

Faut absolument bien suivre et comprendre les tutos avant de coder...

Bon en fait il te manquait aussi la ligne
header('Content-type: text/html; charset=UTF-8');
pourtant elle aussi indiquée dans le tuto.

Sans compter que tu n'avais pas indiqué à mysql de travailler en utf-8 (aussi indiqué dans le tuto).

Je te refait le code entier pour te montrer :
<?php
header('Content-type: text/html; charset=UTF-8');

session_start();


if (empty($_SESSION['pseudo']) || empty($_SESSION['pass']) || empty($_SESSION['id']))
{
	exit('<p>Vous devez être connecté pour accéder à cette partie du site. <br />
			<a href="connexion.php" alt="connexion" > Se Connecter, </a>ou <a href="enregistrer.php" alt="inscription"> S\'inscrire. </a><br /></p>');
}


	
// Chargement de la classe
require('Classe_upload.php');


// On déclare un tableau pour enregistrer les messages d'erreur du formulaire
$_SESSION['erreur_form'] = isset($_SESSION['erreur_form']) ?  $_SESSION['erreur_form'] : array();

if (isset($_POST['form1']))
	{			
					 
		//on regarde si la description est remplie
		$description = !empty($_POST['description']) ? $_POST['description'] : '';
			
			 
		 if (!empty($_POST['style']))
			 {
				$style = $_POST['style'];
			 }
			 else
			 {
				$_SESSION['erreur_form'][] = "Veuillez sélectionner un style musical.";
			 }
			
			 
		if (!empty($_POST['titre']))
			{
				$titre = $_POST['titre'];
				
				if (!preg_match("#^[a-zA-Z0-9]+$#", $titre))
					{
						$_SESSION['erreur_form'][] = "Veuillez n'utiliser que des caractères alphanumériques dans le titre.";
					}
			}
			else
			{
				$_SESSION['erreur_form'][] = "Veuillez indiquer le titre de la chanson.";
			}
			
			
		if (count($_SESSION['erreur_form']) > 0)
		{
			$_SESSION['erreur_form'][] = 'Aucun fichier n\'a été téléchargé';
			
			//reload de la page
			header('Location: '.$_SERVER['PHP_SELF']);
			exit;
		}
	}




if (count($_SESSION['erreur_form']) == 0) 
	{
		$repertoire_destination = 'Code/musiques';
		
		//Déclaration de la classe
		$up = new Telechargement($repertoire_destination,'form1','song','controle_form');
		
		//Extensions autorisées (sans les .)
		$extensions = array("mp3");
		$up->Set_Extensions_accepte ($extensions);
		
		// Rennommage des fichiers (en mode incrémentiel) si déjà présents sur le serveur.
		$up->Set_Renomme_fichier('incr');
		
		// Téléchargement
		$up->Upload();
		
		
		// Enregistrement en bdd des valeurs récupérées par le post
		if (isset($_POST['form1']))
			{
			
				// Récupération des valeurs du transfert de fichiers
				$transfert = $up->Get_Tab_upload();//tableau à plusieurs dimensions (c.f. Doc de la class pour plus de détails)
							 
				// définition des valeurs par défaut
				$fichier = array();
				$dossier = array();
				
				if (isset($transfert['resultat']))
					{
						foreach ($transfert['resultat'] as $num => $rep)
							{
								foreach ($rep as $key => $value)
									{
										if(!empty($value['nom'])) $fichier[] =  $value['nom'];// Nom du fichier transféré
										$dossier[] =  $key; // Nom du dossier
									}                    
							}    
					}
			
				   
			   if(count($fichier) == 0)
				   {
						$_SESSION['erreur_form'][] = 'Aucun fichier n\'a été téléchargé';
						$up->Get_Reload_page(); // reload de la page
				   }
				
				
				// là on est certain que le code qui suit ne s'exécutera que si un fichier à été téléchargé
				
				// Puisqu'il n'y a qu'un champ de fichier il sera dans $fichier[0], et puisqu'il n'y a pas de redimensionnement multiple il n'y a qu'un dossier de destination donc il sera dans $dossier[0]
				
									 
				// la récupération des autres variables du post a été faite dans la première condition (haut de page) if (isset($_POST['form1']))

			
			
			 	// Connexion à ta bdd
			 	// connexion BDD par PDO
	
				 $PARAM_hote='localhost';      // le chemin vers le serveur
				 $PARAM_port='3306';
				 $PARAM_nom_bd='monsite';          // le nom de votre base de données
				 $PARAM_utilisateur='root';    // nom d'utilisateur pour se connecter
				 $PARAM_mot_passe='';          // mot de passe de l'utilisateur pour se connecter
		
		
				 try{
						 $connexion = new PDO(
						 'mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_nom_bd, 
						 $PARAM_utilisateur,
						 $PARAM_mot_passe,
						 array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") 
						 );

						 $connexion -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
						 
					}
				 catch(Exception $e){
						 
						 echo 'Une erreur est survenue !';
						 echo 'Erreur : '.$e->getMessage().'<br />';
						 echo 'N° : '.$e->getCode();
						 die();
					}
				 //   /fin de la connexion BDD par PDO-->
				 
				  $artiste = $_SESSION['pseudo'];
				  $id_artiste = $_SESSION['id'];
				  $adresse_chanson = $dossier[0].'/'.$fichier[0];
				  $vues = 0;
				  $note = 0;
				 $insert = $connexion->prepare('INSERT INTO chansons(titre, artiste, id_artiste, date_envoi, vues, note, description, adresse_chanson, style) VALUES(:titre, :artiste, :id_artiste, NOW(), :vues, :note, :description, :adresse_chanson, :style)');
				 
				try
					{
					$insert->execute(array(
						'titre' => $titre,
						'artiste' => $artiste,
						'id_artiste' => $id_artiste,
						'vues' => $vues,
						'note' => $note,
						'description' => $description,
						'adresse_chanson' => $adresse_chanson,
						'style' => $style
						));
					}
				catch(Exception $e)
					{
						
						 echo 'Une erreur est survenue !';
						 echo 'Erreur : '.$e->getMessage().'<br />';
						 echo 'N° : '.$e->getCode();
						 die();
					}
					
				$insert->closeCursor(); // Termine le traitement de la requête
				
				$up->Get_Reload_page(); // Reload de la page
			} 
		
			
		// Récupération des messages d'information de téléchargement
		$resultat = $up->Get_Tab_message();								 						 
	}			 
		


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8"/>
<title>Document sans titre</title>
</head>
<body>

	
 	<form enctype = "multipart/form-data" action = "<?php echo htmlspecialchars($_SERVER['PHP_SELF']).'?controle_form=1' ?>" method = "post">
     
       <input type="hidden" name="MAX_FILE_SIZE" value="5242880" />

       <input type="file" name="song[]" /><br  />
         
		<label for="titre">Titre de la chanson : (seuls les caract&egrave;res alphanum&eacute;riques sont autoris&eacute;s)</label><input type="text" name="titre" id="titre"/><br />
		 <label for="style"> Style musical de la chanson : </label>
		 <select name="style" id="style" >
			<option value="blues" > Blues </option>
			<option value="chanson_francaise" > Chanson Fran&ccedil;aise </option>
			<option value="classique" id="classique" > Classique </option>
			<option value="club" > Club </option>
			<option value="country" > Country </option>
			<option value="dance" > Dance </option>
			<option value="disco" > Disco</option>
			<option value="electro" > Electro</option>
			<option value="electro_rock" >Electro-Rock </option>
			<option value="electro_pop" > Electro-Pop</option>
			<option value="folk" > Folk</option>
			<option value="funk" > Funk</option>
			<option value="garage_rock" > Garage Rock</option>
			<option value="gospel" > Gospel</option>
			<option value="grunge" > Grunge</option>
			<option value="hard_rock" > Hard Rock </option>
			<option value="heavy_metal" > Heavy Metal</option>
			<option value="hip_hop" > Hip Hop</option>
			<option value="house" > House</option>
			<option value="indie_rock" > Indie Rock</option>
			<option value="instrumental" > Instrumental</option>
			<option value="jazz" > Jazz</option>
			<option value="lounge" > Lounge<option>
			<option value="mambo" > Mambo</option>
			<option value="opera" > Opera</option>
			<option value="pop" > Pop</option>
			<option value="pop_rock" > Pop Rock</option>
			<option value="punk" > Punk</option>
			<option value="punk_rock" > Punk Rock</option>
			<option value="rnb" > R'n'B</option>
			<option value="rap" > Rap</option>
			<option value="reggae" > Reggae</option>
			<option value="rock" > Rock</option>
			<option value="salsa" > Salsa</option>
			<option value="slam" > Slam</option>
			<option value="soul" > Soul</option>
			<option value="tango" > Tango</option>
			<option value="techno" > Techno</option>
			<option value="trance" > Trance</option>
			</select><br />
			<textarea name="description" id="description" /></textarea><label for="description" > Breve description de la chanson (facultatif) : </label>
		 <input type="submit" name = "form1" value="Envoyer le fichier">
 </form>


<?php //affichage des résultats de téléchargement
if (!empty($resultat))
	 {
		 echo '<p>';
		 
		 foreach ($resultat as $num)
			 {
				 foreach ($num as $value)
				 echo htmlspecialchars($value).'<br />';
			 }
			 
		 echo '</p>';
	 }?>
	

	 
	 
<?php // affichage des erreurs du formulaire

if(count($_SESSION['erreur_form']) > 0)
	{
		 echo '<p>';
		 
		 foreach ($_SESSION['erreur_form'] as $value)
			 {
				 echo htmlspecialchars($value).'<br />';
			 }
					 
		 echo '</p>';
		 
	 	unset($_SESSION['erreur_form']);
	}?>

</body>
</html>
Il faut également que ta table soit déclarée avec l'Interclassement "utf8_general_ci" (dans phpmyadmin) comme indiqué dans le tuto sur l'utf-8.

Concernant le code ci-dessus, cette construction sert à éviter de mettre l'initialisation de la classe de téléchargement à l'intérieur de la condition (if (isset($_POS['index'])) {//initialisation de la classe... }) car la classe ne pourrait pas envoyer de message d'erreur en cas du dépassement du post_max_size puisque dans ce cas aucun post ne serait renvoyé et donc la classe ne serait pas instanciée. Ou alors il faudrait gérer le dépassement du post_max_size avec un supplément de code.

Eléphant du PHP | 188 Messages

29 sept. 2011, 21:16

Mais pourquoi je doit modifier ma table MySQL et tout ? Tout le reste de mon site est deja codé sans UTF-8 et toute mes tables sans utf-8, il n'y a pas un moyen plus simple juste pour afficher ce petit message de résultat correctement sans tout modifier ?

Merci :D

ViPHP
AB
ViPHP | 5818 Messages

29 sept. 2011, 23:11

Sans utf-8 tu seras plus limité, ton site sera moins facilement évolutif. Par exemple des lib javascript comme jquery requirent l'utf-8, etc. La norme actuelle pour développer un site est l'utf-8.

Si tu veux rester en iso et bien fait des tests pour faire afficher des caractères accentués en iso. Encore une fois, la classe et le code sont complètement étrangés à ces problèmes.

Mais bon puisque tu en es à la construction, autant partir sur de bonnes bases et travailler en utf-8 et je t'ai donné le code complet dans mon message précédent.

Quelque soit l'encodage que tu choisis, gardes la structure du code pour avoir les meilleurs résultats.

Pour moi ce topic est clos. Si tu as de nouveaux problèmes ouvres un nouveau sujet.

Eléphant du PHP | 188 Messages

04 oct. 2011, 18:51

Désolé de te désobéir AB, mais j'ai un problème qui cette fois ci a directement un lien avec l'upload et l'enregistrement BDD.
J'ai transformé tout mon site en UTF-8, mes tables MySQL aussi tout comme dans le tuto, et sur ce point de vue tout fonctionne niquel.
Mais j'ai remplacer mon ancien code par le dernier que tu m'a donné, je l'ai adapté pour pouvoir remplir d'autres tables après l'upload, et j'ai une erreur qui doit venir de la connexion à la BDD car j'ai ces erreurs :
Notice: Undefined variable: connexion in C:\wamp\www\Code\pages\uploadtest.php on line 263
Fatal error: Call to a member function quote() on a non-object in C:\wamp\www\Code\pages\uploadtest.php on line 263
et $connexion est ma ressource de connexion.
sur ce code :
$id = $_SESSION['id'];
			$sql  = 'SELECT id '.
					'FROM chansons '.
					'WHERE id_artiste='.$connexion->quote($id).' '.
					'and date_envoi= NOW()';
			$req = $connexion->query($sql); 
			$req->setFetchMode(PDO::FETCH_OBJ);
Ceci est une requette juste après l'enregistrement principal, qui lui fonctionne avec le meme $connexion et il ne me sors pas d'erreur...

J'ai tout essayé pour cette connexion ...

Merci :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

04 oct. 2011, 21:01

Yop,
Fait voir la page complète sinon on ne peux que supposer ;)


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 188 Messages

04 oct. 2011, 21:57

Voila toute la partie upload+enregistrement BDD (donc toute la page sauf l'entete et le formulaire, dont on s'en fout non ?)
// Chargement de la classe
require('Classe_upload.php');


// On déclare un tableau pour enregistrer les messages d'erreur du formulaire
$_SESSION['erreur_form'] = isset($_SESSION['erreur_form']) ?  $_SESSION['erreur_form'] : array();

if (isset($_POST['form1']))
         {                       
                                          
                 //on regarde si la description est remplie
                 $description = !empty($_POST['description']) ? $_POST['description'] : '';
                         
                          
                  if (!empty($_POST['style']))
                          {
                                 $style = $_POST['style'];
                          }
                          else
                          {
                                 $_SESSION['erreur_form'][] = "Veuillez sélectionner un style musical.";
                          }
                         
                          
                 if (!empty($_POST['titre']))
                         {
                                 $titre = $_POST['titre'];
                                 
                                 if (!preg_match("#^[a-zA-Z0-9]+$#", $titre))
                                         {
                                                 $_SESSION['erreur_form'][] = "Veuillez n'utiliser que des caractères alphanumériques dans le titre.";
                                         }
                         }
                         else
                         {
                                 $_SESSION['erreur_form'][] = "Veuillez indiquer le titre de la chanson.";
                         }
                         
                         
                 if (count($_SESSION['erreur_form']) > 0)
                 {
                         $_SESSION['erreur_form'][] = 'Aucun fichier n\'a été téléchargé';
                         
                         //reload de la page
                         header('Location: '.$_SERVER['PHP_SELF']);
                         exit;
                 }
         }




if (count($_SESSION['erreur_form']) == 0) 
         {
                 $repertoire_destination = 'Code/musiques';
                 
                 //Déclaration de la classe
                 $up = new Telechargement($repertoire_destination,'form1','song','controle_form');
                 
                 //Extensions autorisées (sans les .)
                 $extensions = array("mp3");
                 $up->Set_Extensions_accepte ($extensions);
                 
                 // Rennommage des fichiers (en mode incrémentiel) si déjà présents sur le serveur.
                 $up->Set_Renomme_fichier('incr');
                 
                 // Téléchargement
                 $up->Upload();
                 
                 
                 // Enregistrement en bdd des valeurs récupérées par le post
                 if (isset($_POST['form1']))
                         {
                         
                                 // Récupération des valeurs du transfert de fichiers
                                 $transfert = $up->Get_Tab_upload();//tableau à plusieurs dimensions (c.f. Doc de la class pour plus de détails)
                                                          
                                 // définition des valeurs par défaut
                                 $fichier = array();
                                 $dossier = array();
                                 
                                 if (isset($transfert['resultat']))
                                         {
                                                 foreach ($transfert['resultat'] as $num => $rep)
                                                         {
                                                                 foreach ($rep as $key => $value)
                                                                         {
                                                                                 if(!empty($value['nom'])) $fichier[] =  $value['nom'];// Nom du fichier transféré
                                                                                 $dossier[] =  $key; // Nom du dossier
                                                                         }                    
                                                         }    
                                         }
                         
                                    
                            if(count($fichier) == 0)
                                    {
                                                 $_SESSION['erreur_form'][] = 'Aucun fichier n\'a été téléchargé';
                                                 $up->Get_Reload_page(); // reload de la page
                                    }
                                 
                                 
                                 // là on est certain que le code qui suit ne s'exécutera que si un fichier à été téléchargé
                                 
                                 // Puisqu'il n'y a qu'un champ de fichier il sera dans $fichier[0], et puisqu'il n'y a pas de redimensionnement multiple il n'y a qu'un dossier de destination donc il sera dans $dossier[0]
                                 
                                                                          
                                 // la récupération des autres variables du post a été faite dans la première condition (haut de page) if (isset($_POST['form1']))

                         
                         
                                 // Connexion à ta bdd
                                 // connexion BDD par PDO
         
                                  $PARAM_hote='localhost';      // le chemin vers le serveur
                                  $PARAM_port='3306';
                                  $PARAM_nom_bd='monsite';          // le nom de votre base de données
                                  $PARAM_utilisateur='root';    // nom d'utilisateur pour se connecter
                                  $PARAM_mot_passe='';          // mot de passe de l'utilisateur pour se connecter
                 
                 
                                  try{
                                                  $connexion = new PDO(
                                                  'mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_nom_bd, 
                                                  $PARAM_utilisateur,
                                                  $PARAM_mot_passe,
                                                  array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") 
                                                  );

                                                  $connexion -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
                                                  
                                         }
                                  catch(Exception $e){
                                                  
                                                  echo 'Une erreur est survenue !';
                                                  echo 'Erreur : '.$e->getMessage().'<br />';
                                                  echo 'N° : '.$e->getCode();
                                                  die();
                                         }
                                  //   /fin de la connexion BDD par PDO-->
                                  
                                   $artiste = $_SESSION['pseudo'];
                                   $id_artiste = $_SESSION['id'];
                                   $adresse_chanson = $dossier[0].'/'.$fichier[0];
                                   $vues = 0;
                                   $note = 0;
                                  $insert = $connexion->prepare('INSERT INTO chansons(titre, artiste, id_artiste, date_envoi, vues, note, description, adresse_chanson, style) VALUES(:titre, :artiste, :id_artiste, NOW(), :vues, :note, :description, :adresse_chanson, :style)');
                                  
                                 try
                                         {
                                         $insert->execute(array(
                                                 'titre' => $titre,
                                                 'artiste' => $artiste,
                                                 'id_artiste' => $id_artiste,
                                                 'vues' => $vues,
                                                 'note' => $note,
                                                 'description' => $description,
                                                 'adresse_chanson' => $adresse_chanson,
                                                 'style' => $style
                                                 ));
                                         }
                                 catch(Exception $e)
                                         {
                                                 
                                                  echo 'Une erreur est survenue !';
                                                  echo 'Erreur : '.$e->getMessage().'<br />';
                                                  echo 'N° : '.$e->getCode();
                                                  die();
                                         }
                                         
                                 $insert->closeCursor(); // Termine le traitement de la requête
                                 
                                 
                         } 
                 
                         
                 // Récupération des messages d'information de téléchargement
                 $resultat = $up->Get_Tab_message();                                                                                                              
         
			
			//la chanson est enregistréz dans la BDD chansons, on va maintenant récupérer son id créer automatiquement par MySQL
			$id = $_SESSION['id'];
			$sql  = 'SELECT id '.
					'FROM chansons '.
					'WHERE id_artiste='.$connexion->quote($id).' '.
					'and date_envoi= NOW()';
			$req = $connexion->query($sql); 
			$req->setFetchMode(PDO::FETCH_OBJ); // on dit qu'on veut que le résultat soit récupérable sous forme d'objet
			$data = $req->fetch();
			$id_chanson = $data->id;
			$req->closeCursor(); // Termine le traitement de la requête
			
			//on a récupérer l'id de la chanson, on va l'enregistrer dans la BDD musplay avec les infos correspondantes au compositeur
			$id_playlist = $_SESSION['id_playlist'];
			$id_crea = $_SESSION['id'];
			$type = 1;
			$insert2 = $connexion->prepare('INSERT INTO musplay(id_chanson, id_playlist, type, id_crea) VALUES(:id_chanson, :id_playlist, :type, :id_crea)');
			try 
			{
			$insert2->execute(array(
						'id_chanson' => $id_chanson,
						'id_playlist' => $id_playlist,
						'type' => $type,
						'id_crea' => $id_crea
						));
			}
			catch(Exception $e)
			{
                 /* erreur insertion */
                 echo 'Une erreur est survenue !';
                 echo 'Erreur : '.$e->getMessage().'<br />';
                 echo 'NР: '.$e->getCode();
                 die();
			}
			$insert2->closeCursor(); // Termine le traitement de la requête
			
			//on incrémente de 1 le nombre de chansons du compositeur
			$nb_chanson = $_SESSION['nb_chanson'];
			$nb_chanson = $nb_chanson + 1;
			$id = $_SESSION['id'];
			$update = $connexion->prepare('UPDATE user SET nb_chanson = :nb_chanson WHERE id = :id');
			try 
			{
			$update->execute(array(
						'nb_chanson' => $nb_chanson,
						'id' => $id
						));
			}
			catch(Exception $e)
			{
                 /* erreur insertion */
                 echo 'Une erreur est survenue !';
                 echo 'Erreur : '.$e->getMessage().'<br />';
                 echo 'NР: '.$e->getCode();
                 die();
			}
			$update->closeCursor(); // Termine le traitement de la requête
			
			//on incrémente de 1 le nombre de chansons de la playlist de type 1 (compositeur) du compositeur dans playlist_compo
			$nb_chanson_playlist = $_SESSION['nb_chanson'];
			$nb_chanson_playlist = $nb_chanson_playlist + 1;
			$update2 = $connexion->prepare('UPDATE playlist_compo SET nb_chanson = :nb_chanson WHERE id = :id');
			try 
			{
			$update2->execute(array(
						'nb_chanson' => $nb_chanson_playlist,
						'id' => $id
						));
			}
			catch(Exception $e)
			{
                 /* erreur insertion */
                 echo 'Une erreur est survenue !';
                 echo 'Erreur : '.$e->getMessage().'<br />';
                 echo 'NР: '.$e->getCode();
                 die();
			}
			$update2->closeCursor(); // Termine le traitement de la requête
			
		   $up->Get_Reload_page();
		   }
Merci :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

05 oct. 2011, 00:32

pourquoi tu met ces insertions en dehors du test sur $_POST['form1'] ?

si tu ne passe pas dans le if $connexion n'existe pas !

Tu n'a pas besoin de closecursor() après une insertion :)

sinon je ne vois pas pourquoi ce message, dans le cas où l'on passe par le if du dessus.

ajoute de var_dump($connexion); au fur et a mesure du code pour voir où cela peut clocher.

par exemple
- après l'insertion
- après le $insert->closeCursor();
- avant et après $resultat = $up->Get_Tab_message();
- avant $req = $connexion->query($sql);

@+
Il en faut peu pour être heureux ......

ViPHP
AB
ViPHP | 5818 Messages

05 oct. 2011, 04:03

Oui commence par mettre tes requêtes supplémentaires à la place de la ligne "$insert->closeCursor();" que j'avais oublié d'enlever dans mon code (et donc juste avant la ligne "$up->Get_Reload_page();" toujours par rapport à mon exemple de code).

moogli te l'avais déjà dit mais je précise l'endroit exact, des fois que...

Sinon je vois pas pourquoi tu as supprimé la ligne header('Content-type: text/html; charset=UTF-8'); je t'en ai parlé pourtant plusieurs fois (ce n'est pas l'origine de ton problème de requête mais cela pourrait te poser de nouveaux problèmes d'affichage ultérieurement).

Pour la petite histoire on ne traite généralement qu'un problème par topic. Ce sont les règles du forum, et c'est pas moi qui les ai fixées :wink:

Après un pb d'upload, suivi d'un problème de caractères spéciaux on en est maintenant à un pb de requête ...

On ne traite généralement qu'un problème par topic pour faciliter la recherche et la pertinence des résultats pour les visiteurs qui consultent le forum pour essayer de trouver des réponses à leur problème.
Tu comprends bien qu'avec un topic sur plusieurs sujets et à rallonge comme le tiens, il devient quasiment inutilisable pour de nouveaux visiteurs (comme disent les anciens, une chatte n'y retrouverait pas ses petits :lol: ) Alors qu'avec des questions plus ciblées, en même temps qu'on aide quelqu'un, on peut aider aussi potentiellement d'autres visiteurs.
Cela dit il est vrai qu'il était difficile de trouver un titre à ton nouveau problème puisqu'il provient, au moins pour partie, du fait que tu n'avais mis ton complément de code au bon endroit.

Dernière chose, plutôt que de rechercher l'identifiant que vient d'insérer mysql, tu peux éventuellement essayé d'utiliser PDO::lastInsertId je dis éventuellement car comme dit dans la doc ça ne fonctionne pas avec toutes les bases.
Concernant le code que je t'ai donné en exemple, il peut y avoir de petites erreurs, étant donné que je n'ai pas testé, mais normalement les erreurs fournies par php sont assez explicites pour corriger.

Eléphant du PHP | 188 Messages

05 oct. 2011, 21:18

Sinon je vois pas pourquoi tu as supprimé la ligne header('Content-type: text/html; charset=UTF-8'); je t'en ai parlé pourtant plusieurs fois (ce n'est pas l'origine de ton problème de requête mais cela pourrait te poser de nouveaux problèmes d'affichage ultérieurement).
Je l'ai laissée, mais j'ai indiquer avant de donner mon code a moogli dans mon précédent message que je n'avais pas mit l'entète, et donc pas non plus ce qu'il y a au dessus (donc je n'ai pas copié le "session_start()" et le "header('Content-type: text/html; charset=UTF-8');"), mais ceux ci sont présents dans mon code.
Après un pb d'upload, suivi d'un problème de caractères spéciaux on en est maintenant à un pb de requête ...
Oui mais l'ancien code (pas celui là mais celui d'avant que tu m'avais donné) fonctionnait très bien, tu m'a donné celui là qui est mieux d'après toi alors j'essaye dans cette direction.

pourquoi tu met ces insertions en dehors du test sur $_POST['form1'] ?
Oui c'est une erreur de ma part, j'ai corrigé, mais maintenant j'ai ces erreurs :
Notice: Undefined variable: up in C:\wamp\www\Code\pages\uploadtest.php on line 351
Fatal error: Call to a member function Get_Tab_message() on a non-object in C:\wamp\www\Code\pages\uploadtest.php on line 351
qui correspondent à cette ligne :
$resultat = $up->Get_Tab_message();
J'ai vérifié que la Classe_upload.php était bien dans le bon répertoire et avec le bon nom, mais rien y fait ...

Merci :D

ViPHP
AB
ViPHP | 5818 Messages

06 oct. 2011, 02:24

Il faut que la ligne "$resultat = $up->Get_Tab_message();"

soit après l'accolade de fermeture de la condition
if (isset($_POST['form1'])) {...}

mais avant l'accolade de fermeture de la condition
if (count($_SESSION['erreur_form']) == 0) {...}

(comme dans l'exemple de mon code en fait).

Quand je parle de la condition if (isset($_POST['form1'])) je parle de la seconde, c'est à dire celle qui se trouve à l'intérieure de la condition "if (count($_SESSION['erreur_form']) == 0)", pas de la première qui se trouve plus haut.

Eléphant du PHP | 188 Messages

06 oct. 2011, 20:57

J'ai modifié que tout ma dit et maitenant l'upload ET l'enregistrement BDD fonctionnent mais si j'envoi un fichier autre que .mp3 il m'indique "aucun fichier n'a été téléchargé" au lieu de me dire que le format n'est pas correct ...
voici donc le code :
<?php
// Chargement de la classe
require('Classe_upload.php');


// On déclare un tableau pour enregistrer les messages d'erreur du formulaire
$_SESSION['erreur_form'] = isset($_SESSION['erreur_form']) ?  $_SESSION['erreur_form'] : array();

if (isset($_POST['form1']))
         {                       
                                          
                 //on regarde si la description est remplie
                 $description = !empty($_POST['description']) ? $_POST['description'] : '';
                         
                          
                  if (!empty($_POST['style']))
                          {
                                 $style = $_POST['style'];
                          }
                          else
                          {
                                 $_SESSION['erreur_form'][] = "Veuillez sélectionner un style musical.";
                          }
                         
                          
                 if (!empty($_POST['titre']))
                         {
                                 $titre = $_POST['titre'];
                                 
                                 if (!preg_match("#^[a-zA-Z0-9]+$#", $titre))
                                         {
                                                 $_SESSION['erreur_form'][] = "Veuillez n'utiliser que des caractères alphanumériques dans le titre.";
                                         }
                         }
                         else
                         {
                                 $_SESSION['erreur_form'][] = "Veuillez indiquer le titre de la chanson.";
                         }
                         
                         
                 if (count($_SESSION['erreur_form']) > 0)
                 {
                         $_SESSION['erreur_form'][] = 'Aucun fichier n\'a été téléchargé';
                         
                         //reload de la page
                         header('Location: '.$_SERVER['PHP_SELF']);
                         exit;
                 }
        }




if (count($_SESSION['erreur_form']) == 0) 
         {
                 $repertoire_destination = 'Code/musiques';
                 
                 //Déclaration de la classe
                 $up = new Telechargement($repertoire_destination,'form1','song','controle_form');
                 
                 //Extensions autorisées (sans les .)
                 $extensions = array("mp3");
                 $up->Set_Extensions_accepte ($extensions);
                 
                 // Rennommage des fichiers (en mode incrémentiel) si déjà présents sur le serveur.
                 $up->Set_Renomme_fichier('incr');
                 
                 // Téléchargement
                 $up->Upload();
                 
                 
                 // Enregistrement en bdd des valeurs récupérées par le post
                 if (isset($_POST['form1']))
                         {
                         
                                 // Récupération des valeurs du transfert de fichiers
                                 $transfert = $up->Get_Tab_upload();//tableau à plusieurs dimensions (c.f. Doc de la class pour plus de détails)
                                                          
                                 // définition des valeurs par défaut
                                 $fichier = array();
                                 $dossier = array();
                                 
                                 if (isset($transfert['resultat']))
                                         {
                                                 foreach ($transfert['resultat'] as $num => $rep)
                                                         {
                                                                 foreach ($rep as $key => $value)
                                                                         {
                                                                                 if(!empty($value['nom'])) $fichier[] =  $value['nom'];// Nom du fichier transféré
                                                                                 $dossier[] =  $key; // Nom du dossier
                                                                         }                    
                                                         }    
                                         }
                         
                                    
                            if(count($fichier) == 0)
                                    {
                                                 $_SESSION['erreur_form'][] = 'Aucun fichier n\'a été téléchargé';
                                                 $up->Get_Reload_page(); // reload de la page
                                    }
                                 
                                 
                                 // là on est certain que le code qui suit ne s'exécutera que si un fichier à été téléchargé
                                 
                                 // Puisqu'il n'y a qu'un champ de fichier il sera dans $fichier[0], et puisqu'il n'y a pas de redimensionnement multiple il n'y a qu'un dossier de destination donc il sera dans $dossier[0]
                                 
                                                                          
                                 // la récupération des autres variables du post a été faite dans la première condition (haut de page) if (isset($_POST['form1']))

                         
                         
                                 // Connexion à ta bdd
                                 // connexion BDD par PDO
         
                                  $PARAM_hote='localhost';      // le chemin vers le serveur
                                  $PARAM_port='3306';
                                  $PARAM_nom_bd='monsite';          // le nom de votre base de données
                                  $PARAM_utilisateur='root';    // nom d'utilisateur pour se connecter
                                  $PARAM_mot_passe='';          // mot de passe de l'utilisateur pour se connecter
                 
                 
                                  try{
                                                  $connexion = new PDO(
                                                  'mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_nom_bd, 
                                                  $PARAM_utilisateur,
                                                  $PARAM_mot_passe,
                                                  array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") 
                                                  );

                                                  $connexion -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
                                                  
                                         }
                                  catch(Exception $e){
                                                  
                                                  echo 'Une erreur est survenue !';
                                                  echo 'Erreur : '.$e->getMessage().'<br />';
                                                  echo 'N° : '.$e->getCode();
                                                  die();
                                         }
                                  //   /fin de la connexion BDD par PDO-->
                                  
                                   $artiste = $_SESSION['pseudo'];
                                   $id_artiste = $_SESSION['id'];
                                   $adresse_chanson = $dossier[0].'/'.$fichier[0];
                                   $vues = 0;
                                   $note = 0;
                                  $insert = $connexion->prepare('INSERT INTO chansons(titre, artiste, id_artiste, date_envoi, vues, note, description, adresse_chanson, style) VALUES(:titre, :artiste, :id_artiste, NOW(), :vues, :note, :description, :adresse_chanson, :style)');
                                  
                                 try
                                         {
                                         $insert->execute(array(
                                                 'titre' => $titre,
                                                 'artiste' => $artiste,
                                                 'id_artiste' => $id_artiste,
                                                 'vues' => $vues,
                                                 'note' => $note,
                                                 'description' => $description,
                                                 'adresse_chanson' => $adresse_chanson,
                                                 'style' => $style
                                                 ));
                                         }
                                 catch(Exception $e)
                                         {
                                                 
                                                  echo 'Une erreur est survenue !';
                                                  echo 'Erreur : '.$e->getMessage().'<br />';
                                                  echo 'N° : '.$e->getCode();
                                                  die();
                                         }
                                         
                                 //$insert->closeCursor(); // Termine le traitement de la requête
                                 
                                 
                          
                 
                         
                                                                                                                              
         
			
			//la chanson est enregistréz dans la BDD chansons, on va maintenant récupérer son id créer automatiquement par MySQL
			$id = $_SESSION['id'];
			$sql  = 'SELECT id '.
					'FROM chansons '.
					'WHERE id_artiste='.$connexion->quote($id).' '.
					'and date_envoi= NOW()';
			$req = $connexion->query($sql); 
			$req->setFetchMode(PDO::FETCH_OBJ); // on dit qu'on veut que le résultat soit récupérable sous forme d'objet
			$data = $req->fetch();
			$id_chanson = $data->id;
			$req->closeCursor(); // Termine le traitement de la requête
			
			//on a récupérer l'id de la chanson, on va l'enregistrer dans la BDD musplay avec les infos correspondantes au compositeur
			$id_playlist = $_SESSION['id_playlist'];
			$id_crea = $_SESSION['id'];
			$type = 1;
			$insert2 = $connexion->prepare('INSERT INTO musplay(id_chanson, id_playlist, type, id_crea) VALUES(:id_chanson, :id_playlist, :type, :id_crea)');
			try 
			{
			$insert2->execute(array(
						'id_chanson' => $id_chanson,
						'id_playlist' => $id_playlist,
						'type' => $type,
						'id_crea' => $id_crea
						));
			}
			catch(Exception $e)
			{
                 /* erreur insertion */
                 echo 'Une erreur est survenue !';
                 echo 'Erreur : '.$e->getMessage().'<br />';
                 echo 'NР: '.$e->getCode();
                 die();
			}
			//$insert2->closeCursor(); // Termine le traitement de la requête
			
			//on incrémente de 1 le nombre de chansons du compositeur
			$nb_chanson = $_SESSION['nb_chanson'];
			$nb_chanson = $nb_chanson + 1;
			$id = $_SESSION['id'];
			$update = $connexion->prepare('UPDATE user SET nb_chanson = :nb_chanson WHERE id = :id');
			try 
			{
			$update->execute(array(
						'nb_chanson' => $nb_chanson,
						'id' => $id
						));
			}
			catch(Exception $e)
			{
                 /* erreur insertion */
                 echo 'Une erreur est survenue !';
                 echo 'Erreur : '.$e->getMessage().'<br />';
                 echo 'NР: '.$e->getCode();
                 die();
			}
			$update->closeCursor(); // Termine le traitement de la requête
			
			//on incrémente de 1 le nombre de chansons de la playlist de type 1 (compositeur) du compositeur dans playlist_compo
			$nb_chanson_playlist = $_SESSION['nb_chanson'];
			$nb_chanson_playlist = $nb_chanson_playlist + 1;
			$update2 = $connexion->prepare('UPDATE playlist_compo SET nb_chanson = :nb_chanson WHERE id = :id');
			try 
			{
			$update2->execute(array(
						'nb_chanson' => $nb_chanson_playlist,
						'id' => $id
						));
			}
			catch(Exception $e)
			{
                 /* erreur insertion */
                 echo 'Une erreur est survenue !';
                 echo 'Erreur : '.$e->getMessage().'<br />';
                 echo 'NР: '.$e->getCode();
                 die();
			}
			$update2->closeCursor(); // Termine le traitement de la requête
			}
		// Récupération des messages d'information de téléchargement
                 $resultat = $up->Get_Tab_message(); 
				 
		   //$up->Get_Reload_page();
		   }
		   
		
?>
 <form enctype = "multipart/form-data" action = "<?php echo htmlspecialchars($_SERVER['PHP_SELF']).'?controle_form=1' ?>" method = "post">
      
       <input type="hidden" name="MAX_FILE_SIZE" value="5242880" />

       <input type="file" name="song[]" /><br  />
          
		<label for="titre">Titre de la chanson : (seuls les caractères alphanumériques sont autorisés)</label><input type="text" name="titre" id="titre"/><br />
                 <label for="style"> Style musical de la chanson : </label>
                 <select name="style" id="style" >
                                 <option value="blues" > Blues </option>
                                 <option value="chanson_francaise" > Chanson Française </option>
                                 <option value="classique" id="classique" > Classique </option>
                                 <option value="club" > Club </option>
								 <option value="country" > Country </option>
								<option value="dance" > Dance </option>
								<option value="disco" > Disco</option>
								<option value="electro" > Electro</option>
								<option value="electro_rock" >Electro-Rock </option>
								<option value="electro_pop" > Electro-Pop</option>
								<option value="folk" > Folk</option>
								<option value="funk" > Funk</option>
								<option value="garage_rock" > Garage Rock</option>
								<option value="gospel" > Gospel</option>
								<option value="grunge" > Grunge</option>
								<option value="hard_rock" > Hard Rock </option>
								<option value="heavy_metal" > Heavy Metal</option>
								<option value="hip_hop" > Hip Hop</option>
								<option value="house" > House</option>
								<option value="indie_rock" > Indie Rock</option>
								<option value="instrumental" > Instrumental</option>
								<option value="jazz" > Jazz</option>
								<option value="lounge" > Lounge<option>
								<option value="mambo" > Mambo</option>
								<option value="opera" > Opera</option>
								<option value="pop" > Pop</option>
								<option value="pop_rock" > Pop Rock</option>
								<option value="punk" > Punk</option>
								<option value="punk_rock" > Punk Rock</option>
								<option value="rnb" > R'n'B</option>
								<option value="rap" > Rap</option>
								<option value="reggae" > Reggae</option>
								<option value="rock" > Rock</option>
								<option value="salsa" > Salsa</option>
								<option value="slam" > Slam</option>
								<option value="soul" > Soul</option>
								<option value="tango" > Tango</option>
								<option value="techno" > Techno</option>
								<option value="trance" > Trance</option>
						</select><br />
				 <textarea name="description" id="description" /></textarea><label for="description" > Breve description de la chanson (facultatif) : </label>
                 <input type="submit" name = "form1" value="Envoyer le fichier">
 </form>

<?php //affichage des résultats
if (!empty($resultat))
         {
                 echo '<p>';
                         foreach ($resultat as $num)
                                 {
                                         foreach ($num as $value)
                                         echo htmlspecialchars($value).'<br />';
                                 }
                 echo '</p>';
         }
		 
// affichage des erreurs du formulaire
if(count($_SESSION['erreur_form']) > 0)
         {
                  echo '<p>';
                  
                  foreach ($_SESSION['erreur_form'] as $value)
                          {
                                  echo htmlspecialchars($value).'<br />';
                          }
                                          
                  echo '</p>';
                  
                 unset($_SESSION['erreur_form']);
         }
?>
Et aussi au passage, serait -il possible de ne pas afficher le dossier ou a été uploadé la musique dans ce message ?

Merci :D