Bonjour a tous,

Je considere mon probleme simple, mais qui pour un debutant comme moi merite reponse simple ^^
J'ai suivi le tuto de notre cher ami et pere fondateur de nos site Grafikart >> http://www.grafikart.fr/tutoriels/gestion-images-php-52

Il se trouve que j'ai voulu fusionner deux tuto, pour créer un article en y liant un fichier image.
Tout ce passe bien, sauf que l'image ne se lie jamais. je pense que la methode la pus simple est de prendre le nom du fichier uploader, et de le mettre dans phpmyadmin, lié au contenu id titre ect de l'article.
Apres moulte recherche, je comprend qui faut faire un extract($_FILES). ce que je fais. Le resultat est nul, 'Array' s'affiche.

Question simple donc >> Comment recuperer le nom d'un fichier uploader pour le glisser dans un champ phpmyadmin ?

J'espere ne pas avoir fait trop de detour xD
Merci

8 réponses


PhiSyX
Réponse acceptée

Hello, j'ai test, ça fonctionne si on rajoute 'name'] à la requête.

$sql = "INSERT INTO article_home (titre,id_image,contenue) VALUES ('$titre','{$id_image'name']}','$contenue')";
print: INSERT INTO article_home (titre,id_image,contenue) VALUES ('Un titre','io.jpg','Un petit contenu')

Il faut enlever cette ligne du coup...

$_FILES'id_image']'name'] = $id_image;

Voilà ^^

Hello, fais un print_r de $_FILES pour voir les différents résultats que retourne le tableau. Comme ça tu sauras quel clé=>valeur ajouter dans ta bdd. ^^

Canonier
Auteur

je sais qu'il faut que je prenne : $_FILES'input_name']'name']
et que je l'a mette dans $data'id_image'].
Mais c'est la qu’apparaît le fameux 'Array'. Pas de nom, juste un 'Array' moche dans la table :S

Et moi aussi sauf que moi sa renvoie bien la valeur dans la base de donnée tien :

<?php  

//Gestion des images  
if(!emptyempty($_FILES)){  
    require("imgClass.php");  
    $img = $_FILES'img'];  
    $ext = strtolower(substr($img'name'],-3));  
    $allow_ext = array("jpg",'png','gif');  
    if(in_array($ext,$allow_ext)){  
        move_uploaded_file($img'tmp_name'],"images/".$img'name']);  
        Img::creerMin("images/".$img'name'],"images/min",$img'name'],170,150);  
        $img = $img'name'];  
    }  

}  

//On se connecte a la Bdd  
require "../function.php";  
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);  
mysql_select_db(DB_BDD);  
extract($_POST);  

//Selection de la Bdd  
$sql="INSERT INTO news (titre,auteur,img,contenu,autoriser_commentaires) VALUES ('$titre','$auteur','$img','$contenu','$autoriser_commentaires')";    
$req = mysql_query($sql) or die('Erreur SQL !<br/>'.$sql.'<br/>'.mysql_error());  
 header('Location:liste_news/pages1');   

?>

Et niveau formulaire il faut comme ceci

<form method="post" action="creer_news.php" enctype="multipart/form-data" />

Si non pour éviter l'array sais important de garder se bou de code :

$img = $img'name'];

Moi aussi avent sa m'était un array

Et pour l'affichage :

echo"<img src=/admin/images/min/{$data"img"]}>";
Canonier
Auteur

Le probleme est le meme..

J'ai pas bien cherché, mais pour le moment, j'ai pas trouver où etait l'erreur.

Page ou je crer l'article

<form method="post" action="creer_mysql.php" enctype="multipart/form-data">
    Image (520*100) :<br/>
                <input type="file" name="id_image"/><br/><br/>
    Titre :<br/>
                <input type="text" name="titre"/><br/><br/>
    Article :<br/>
                <textarea name="contenue"></textarea><br/><br/>
        <input type="submit" value="Ajouter"/>
</form>

<a href="index.php">Retour à l'index</a>

Lié au fichier 'action'

<?php
    if(!empty($_FILES)){

        $img = $_FILES'id_image'];
        move_uploaded_file($img'tmp_name'],"images/".$img'name']);
        $img = $img'name'];   
    }
?>
<?php
    require "../../config_bdd.php";
    mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
    mysql_select_db(DB_BDD);

    extract($_POST);
    extract($_FILES);
    $_FILES'id_image']'name'] = $id_image;
    $sql="INSERT INTO article_home (titre,id_image,contenue) VALUES ('$titre','$id_image','$contenue')";
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
?>
<a href="index.php">Retour à l'index</a>

Et mon fichier edit pour editer

<?php
    if(!empty($_FILES)){

        $img = $_FILES'id_image'];
        move_uploaded_file($img'tmp_name'],"images/".$img'name']);
    }
?>

<?php
    require "../../config_bdd.php";
    mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
    mysql_select_db(DB_BDD);

    if(!empty($_POST)){
        extract($_POST);
        extract($_FILES);
        $_FILES'id_image']'name'] = $id_image;
        $sql="UPDATE article_home SET titre='$titre', id_image='$id_image', contenue='$contenue' WHERE id=$id";
        $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
        echo "Résultat mis en ligne";
        $_GET"id"]=$id;
    }

    $sql="SELECT * FROM article_home WHERE id={$_GET"id"]}";
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    $data=mysql_fetch_assoc($req);
?>

<form method="post" action="edit.php" enctype="multipart/form-data">
    <input name="id" type="hidden" value="<?php echo $data"id"]; ?>">

    <?php
    if(isset($erreur)){
        echo $erreur;
    }
    ?><br/><br/>

    Image (520*100) :<br/>
                <input type="file" name="id_image" value="<?php echo "<img src=/admin/images/min/{$data"id_image"]}>"; ?>"/><br/>
                <?php echo"<img src=/admin/images/min/{$data"id_image"]}>"; ?><br/><br/>
    Titre :<br/>
                <input type="text" name="titre" value="<?php echo $data"titre"]; ?>"/><br/><br/>
    Article :<br/>
                <textarea name="contenue"><?php echo $data"contenue"]; ?></textarea><br/><br/>
        <input type="submit" value="Modifier">
</form>
<a href="index.php">Retour à l'index</a>

enfin l'affichage sur la page :

<?php
    $head = "<title>»rev team | accueil</title>";
?>

<?php
    require "config_bdd.php";
    mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
    mysql_select_db(DB_BDD);

    $sql="SELECT * FROM article_home ORDER by id DESC";
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

    while($data=mysql_fetch_assoc($req)){
    echo "<span class=\"center\"><img src=\"content/article/images/{$data"img"]}\"/></span><br/>";
        echo "<h1>{$data"titre"]}</h1>";
        echo "<font size=\"1\">Posté le ".date("j/n/Y",strtotime($data"date"]))."</font><br/><br/>";
        echo "<p>{$data"contenue"]}</p><br/>";
    }

?>

Ha. Bha normal, tu envoies le tableau $id_image :)
$_FILES'id_image']'name'] = $id_image; ($id_image = $_FILES'id_image'], un tableau)
Il faut rajouter le 'name'] après $id_image ^^

Canonier
Auteur

J'ai rajouté 'name'] apres $id_image dans les fichiers edit_mysql et créer.
Seulement voila, le resultat est le meme.

Canonier
Auteur

Yes !!!! Merci a vous deux =D
Merci PhiSyX pour avoir tenté chez toi ^^
et Viva Grafikart :P