Mettre le nom d'un fichier dans une bdd

Résolu
valens1460 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   -  
hharchi9 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

voilà mon idée: je souhaite uploader un fichier en mettant son nom et le nom du dossier(pour le moment toujours le même) dans la bdd, pour l'upload c'est ok, mais mes variables ne rentre pas dans ma bdd, et la je comprend pas car c'est un simple INSERT

voilà de code pour voir le soucis:

<?php
$dossier = 'galerie/';
$fichier = basename($_FILES['fichier']['name']);
$taille_maxi = 26214400;
$taille = filesize($_FILES['fichier']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.docx', '.doc', '.xls', '.xlsx', '.text', '.rar', '.PNG');
$extension = strrchr($_FILES['fichier']['name'], '.');
include("bdd.php");


//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
// header ('Location: membre.php');
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);

if(move_uploaded_file($_FILES['fichier']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{

$req = $bdd->prepare('INSERT INTO galerie (nom_image, nom_dossier, ordre) VALUES(?, ?)');
$req->execute(array($fichier,$dossier));

echo 'Upload effectué avec succès !';
var_dump($fichier);var_dump($dossier);
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';

}
}
else
{
echo $erreur;

}

?>

<?php include('session.php'); ?>
<!DOCTYPE html>
<html>

<?php include("Head.php"); ?>


<body>
<?php include("header.php");
var_dump($fichier);var_dump($dossier);?>
<section>

<p id="index">Voulez vous ajouter un fichier?<br/>
25Mo maximum!</p>
<form method="POST" action="modif_galerie.php" enctype="multipart/form-data">
<!-- Le contenu du formulaire est à placer ici... -->
<input type="hidden" name="MAX_FILE_SIZE" value="26214400">
Fichier :<input type="file" name="fichier">
<input type="submit" name="envoyerfichier" value="Envoyer le fichier">
</form>

</section>
<?php echo $fichier; ?>
<?php include("piedpage.php"); ?>

</body>
</html>

A voir également:

3 réponses

hharchi9 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   24
 
Bonsoir,

Essayez ceci :

$req = $bdd->prepare('INSERT INTO galerie (nom_image, nom_dossier, ordre) VALUES(nom_image=:nom_image, nom_dossier=:nom_dossier)');
$req->execute(array(
':nom_image' => $fichier,
'nom_dossier' => $dossier));
0
valens1460 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
ça ne marche pas pas :(
et pas comme ça non plus:

$req = $bdd->prepare('INSERT INTO galerie (nom_image, nom_dossier, ordre) VALUES(nom_image=:nom_image, nom_dossier=:nom_dossier)');
$req->bindParam(':nom_image', $fichier);
$req->bindParam(':nom_dossier', $dossier);
$req->execute();
0
hharchi9 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   24
 
Vos var_dump donnent bien des résultats ?
0
valens1460 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
il y a quand même une nouveauté, il me fais bien une ligne dans la bdd, mais toutes les valeurs sont a zéro
0
valens1460 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
oui oui les var_dump donne bien les bons résultats
0
hharchi9 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   24
 
A quoi correspond le champ ordre de la bdd ?
0
valens1460 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
ce que ça donne



0
hharchi9 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   24
 
Dans la structure de votre table ordre a-t-il une valeur par défaut ?
0
valens1460 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
non il en a pas
0
hharchi9 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   24
 
Alors il faut en spécifier une lors de la requête d'insertion !

Ce qui donne :

$req = $bdd->prepare('INSERT INTO galerie (nom_image, nom_dossier, ordre) VALUES(nom_image=:nom_image, nom_dossier=:nom_dossier, ordre=:ordre)');
$req->execute(array(
':nom_image' => $fichier,
':nom_dossier' => $dossier,
':ordre' => '0'));
0
valens1460 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
alors ça reste la même chose, sauf que ordre passe à un, ce qui est bizarre
0
hharchi9 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   24
 
Essayez ceci :

$sql='INSERT INTO galerie (nom_image, nom_dossier, ordre) VALUES(nom_image=:nom_image, nom_dossier=:nom_dossier, ordre=:ordre)';
$params=array(
':nom_image' => $fichier,
':nom_dossier' => $dossier,
':ordre' => '0');

try{
  $prepare = $bdd->prepare($sql);
  $prepare->execute($params);
}catch(Exception $e){
  die('Erreur : '.$e->getMessage());
}
0
valens1460 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
voici:
0
hharchi9 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   24
 
Ceci donne-t-il toujours la même chose ?


$sql='INSERT INTO galerie (nom_image, nom_dossier, ordre) VALUES(nom_image=:nom_image, nom_dossier=:nom_dossier, ordre=:ordre)';
$params=array(
':nom_image' => $fichier,
':nom_dossier' => $dossier,
':ordre' => 0);

try{
  $prepare = $bdd->prepare($sql);
  $prepare->execute($params);
}catch(Exception $e){
  die('Erreur : '.$e->getMessage());
}
0
valens1460 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
c'est dingue mais oui, et je vois pas pourquoi
0
hharchi9 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   24
 
Mille excuse j'ai fait une erreur :

$sql='INSERT INTO galerie (nom_image, nom_dossier, ordre) VALUES(:nom_image, :nom_dossier, :ordre)';
$params=array(
':nom_image' => $fichier,
':nom_dossier' => $dossier,
':ordre' => 0);
0
valens1460 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
Magnifique ça marche!!
mais pourquoi?
0
hharchi9 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   24
 
Dans votre requête vous ne spécifiez pas ordre et il devait donc y avoir une erreur (il manquait un paramètre requis)
0