Code : Tout sélectionner
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />Code : Tout sélectionner
<meta http-equiv="Content-type" content="text/html; charset=UTF-8"/>
Code : Tout sélectionner
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />Code : Tout sélectionner
<meta http-equiv="Content-type" content="text/html; charset=UTF-8"/>
<?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è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>';
}
}
else //si l'user n'est pas connecté
{
?>
<p>Vous devez être connecté pour accéder à 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
header('Content-type: text/html; charset=UTF-8'); pourtant elle aussi indiquée dans le tuto. <?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è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 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.
et $connexion est ma ressource de connexion.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
$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...
// 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
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.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).
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.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 c'est une erreur de ma part, j'ai corrigé, mais maintenant j'ai ces erreurs :pourquoi tu met ces insertions en dehors du test sur $_POST['form1'] ?
qui correspondent à cette ligne :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
$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 ...
<?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 ?