Comment mettre une image dans une bdd mysql ? [Résolu]

nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 26 déc. 2007 à 13:26 - Dernière réponse : nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention
- 28 déc. 2007 à 10:15
salut comment faire pour mettre une image dans une bdd ?

Merci

 
Afficher la suite 

17 réponses

Répondre au sujet
neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention - 27 déc. 2007 à 22:55
+3
Utile
Salut,

Un MCD, dans la théorie, c'est indispensable pour tout développement avec bdd. Dans la pratique, on peut tout à fait s'en passer sur papier, si la structure de la bdd est simple : on le visualise dans sa tête, c'est parfois largement suffisant. Ce que je veux dire, c'est que pour élaborer une simple table qui stocke des messages d'un livre d'or, par exemple, pas la peine de se casser la tête avec Merise ou UML, faire un MCD et un MLD : une seule table, le modèle il est vite vu, y'a un index automatique, d'autres pour les champs utiles dans les recherches, et basta...

Dans le cas présent, seul nicomilville peut savoir si un MCD et un MLD sont justifiés : on ne connait pas son projet, on ne sait pas quelles seront les relations entre les données, etc.

Concrètement, nicomilville, le mieux est non pas de stocker la photo dans la base de données, mais un lien vers elle. Je détaille...
La photo, elle a plus sa place sur le système de fichiers, au même titre que tous les autres fichiers qui ont besoin d'être accessible par un navigateur web.
Dans un répertoire, donc. A toi de t'organiser comme tu le veux pour t'y retrouver. Tu peux aussi bien mettre toutes tes images (photos, icones, etc) dans un seul répertoire. Tu peux aussi les mettre dans des répertoires bien structurés : un répertoire par type d'image (icone, photo, illustration d'article, avatar, etc). C'est ta sauce : chacun sa manière de faire, tu fais comme tu le sens, personne n'a à te dire que c'est mieux comme si, ou comme ça.

Dans ta base de données, au lieu de stocker l'image complète, tu te contentes de stocker l'URL de celle-ci. Soit l'url absolue (avec http://www.tonsite.com/images/... tout ça tout ça), soit l'url relative (/photo.png) si tu sais que toutes les images du type avatar sont dans tel répertoire.
A toi, au moment de l'affichage, de gérer ce que tu as stocké pour restituer l'adresse de l'image, pour qu'elle soit accessible depuis le web.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de neigedhiver
cs_Al3x_Oo 41 Messages postés jeudi 21 juin 2007Date d'inscription 27 juillet 2010 Dernière intervention - 28 déc. 2007 à 03:19
+3
Utile
Re,

C'est clair que tu n'a pas besoin de faire un MCD sur papier pour construire une base de donnée, mais si tu en as une je penses qu'il est necéssaire d'avoir quelque notion a ce sujet. Une heure ou deux de recherche sa suffit.
Il doit etre dur de créer une bdd sans notion de MCD ou MLD.
J'ai essayé de te conseiller avec se que tu as indiqué et se que j'ai compris : un lien entre les membres et les photos, je pensais a une tabe membre et photo.

Aprés pour l'organisation des photos, c'est sur c'est un exemple que je t'ai donné, et neigedhiver a tout a fait raison sur ce sujet : tu fais se que tu veux.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Al3x_Oo
neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention - 26 déc. 2007 à 23:17
0
Utile
Salut,

Il faut récupérer le contenu du fichier image dans une variable :
$image = file_get_contents('fichier/image.png');

Puis stocker ça dans un champ TEXT dans sa base de données.

Pour afficher l'image, il faut d'abord envoyer le bon entête au navigateur :
header('Content-Type: image/png');
header('Content-Type: image/jpeg');
etc

On peut aussi utiliser une URL, cf la doc de php.
Commenter la réponse de neigedhiver
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 27 déc. 2007 à 09:03
0
Utile
et esque ça alourdi beaucoup la bdd ou pas

 
Commenter la réponse de nicomilville
neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention - 27 déc. 2007 à 11:41
0
Utile
Oui, evidemment : ça prend de la place
Commenter la réponse de neigedhiver
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 27 déc. 2007 à 11:59
0
Utile
je t'explique en fait c'est pour un espace membre il y a quatre photo par membre et quand une personne va dans son espace membre si il a aucune photo il peut en ajouter jusqu'a quatre photo mais je ne sais pas comment faire !!!

 
Commenter la réponse de nicomilville
cs_Al3x_Oo 41 Messages postés jeudi 21 juin 2007Date d'inscription 27 juillet 2010 Dernière intervention - 27 déc. 2007 à 13:46
0
Utile
Salut,
Donne un identifiant relatif a tes photos, et rentre uniquement son identifiant dans ta bdd, pas ton image.
Ensuite tu ranges tes photos dans l'odre, tu peux créer un dossier par membre par exemple.
Je penses que c'est la plus pratique.
++
Commenter la réponse de cs_Al3x_Oo
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 27 déc. 2007 à 14:17
0
Utile
tu peut préciser stp !!!

 
Commenter la réponse de nicomilville
cs_Al3x_Oo 41 Messages postés jeudi 21 juin 2007Date d'inscription 27 juillet 2010 Dernière intervention - 27 déc. 2007 à 14:38
0
Utile
C'est quoi que tu ne comprends pas?
Se que je voulais dire, si je me suis mal exprimé, c'est d'utiliser l'url de la photo.
Le nom de ta photo est le mm que l'identifiant de ta table photo (si tu a une table photo).
Tu as une table photo?
Commenter la réponse de cs_Al3x_Oo
cs_pyobour 90 Messages postés vendredi 21 octobre 2005Date d'inscription 9 septembre 2008 Dernière intervention - 27 déc. 2007 à 16:45
0
Utile
J'ai mieux pour toi j'ai un script que j'ai recup et que j'ai un peu élaboré pour toi si sa t'aide j'en suis heureu ^^
<?php
error_reporting(6143);

    $membre = $_SESSION['MM_Username'];
    $titi = $_SESSION['MM_UserGroup'];
// Définition des variable globales, modifiables à volonté        //
?>
<html>
<head>    <link href='./css/type1.css' rel='stylesheet' type='text/css'></head>

<?

// Récupération du dossier dans lequel le fichier sera uploadé    //
$DESTINATION_FOLDER = $_POST["folder"];                           

// Taille maximale de fichier, valeur en bytes                    //
$MAX_SIZE = 50000000;                                           

                    //
// Définition des extensions de fichier autorisées (avec le ".")//
$AUTH_EXT = array(".jpg", ".bmp", ".gif");                                           

// Fonction permettant de vérifier si l'extension du fichier est
// autorisée.

function isExtAuthorized($ext){
    global $AUTH_EXT;
    if(in_array($ext, $AUTH_EXT)){
        return true;
    }else{
        return false;
    }
}

// On vérifie que le champs contenant le chemin du fichier soit
// bien rempli.
$date=$_POST['date'];
$titre=$_POST['titre'];
$categorie=$_POST['folder'];
if($categorie=="popart/")
{
$id_cat="1";
}
if($categorie=="pixelart/")
{
$id_cat="2";
}
if($categorie=="3d/")
{
$id_cat="3";
}
if($categorie=="esquisse/")
{
$id_cat="4";
}
if($categorie=="autres/")
{
$id_cat="5";
}

if(!empty($_FILES["file"]["name"])){
   
    // Nom du fichier choisi:
    $nomFichier = $_FILES["file"]["name"] ;
   
    // Nom temporaire sur le serveur:
    $nomTemporaire = $_FILES["file"]["tmp_name"] ;
   
    // Type du fichier choisi:
    $typeFichier = $_FILES["file"]["type"] ;
   
    // Poids en octets du fichier choisit:
    $poidsFichier = $_FILES["file"]["size"] ;
   
    // Code de l'erreur si jamais il y en a une:
    $codeErreur = $_FILES["file"]["error"] ;
   
    // Extension du fichier
    $extension = strrchr($nomFichier, ".");
   
    // Si le poids du fichier est de 0 bytes, le fichier est
    // invalide (ou le chemin incorrect) => message d'erreur
    // sinon, le script continue.
    if($poidsFichier <> 0){
   
   
        // Si la taille du fichier est supérieure à la taille
        // maximum spécifiée => message d'erreur
        if($poidsFichier < $MAX_SIZE){
       
       
            // On teste ensuite si le fichier a une extension autorisée
            if(isExtAuthorized($extension)){
           
           
                // Ensuite, on copie le fichier uploadé ou bon nous semble.
                $uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER.$nomFichier);
                if($uploadOk){
                    echo("L'upload a réussi !

");
                $image= "./$categorie$nomFichier";
                include('Connections/lvlart.php');
                $database=mysql_select_db($database_lvlart, $lvlart);
                $sql= " INSERT INTO fiche(id_membre,id_categorie,titre,date,image) VALUES('$membre','$id_cat','$titre','$image');";
                mysql_insert_id()or die(mysql_error('error'));;
                $db= mysql_query($sql);
       
                   
                }else{

                    echo("L'upload a échoué !

");
                   
                }
            }else{
                echo ("Les fichiers avec l'extension $extension ne peuvent pas être uploadés !
");
               
            }
        }else{
            $tailleKo = $MAX_SIZE / 1000;
            echo("Vous ne pouvez pas uploader de fichiers dont la taille est supérieure à : $tailleKo Ko.
");
           
        }       
    }else{
        echo("Le fichier choisi est invalide !
");
       
    }
}else{
    echo("Vous n'avez pas choisi de fichier !
");
   
}

?>

</html>
Commenter la réponse de cs_pyobour
cs_pyobour 90 Messages postés vendredi 21 octobre 2005Date d'inscription 9 septembre 2008 Dernière intervention - 27 déc. 2007 à 16:46
0
Utile
bon oublie evidemment la déclaration des sessions au début
Commenter la réponse de cs_pyobour
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 27 déc. 2007 à 18:05
0
Utile
non je n'ai pas encore de table photo parce que je ne savais pas quoi faire !!!
donc en gros je met le chemin de ma photo dans un champ text de ma bdd mais ensuite ???
comment faire pour afficher des photos selon l'utilisateur ???

 
Commenter la réponse de nicomilville
cs_Al3x_Oo 41 Messages postés jeudi 21 juin 2007Date d'inscription 27 juillet 2010 Dernière intervention - 27 déc. 2007 à 21:01
0
Utile
Tu as une base de donnée?
Tu a fait un petit MCD pour te retrouvé?
Commenter la réponse de cs_Al3x_Oo
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 27 déc. 2007 à 21:09
0
Utile
oui j'ai une base de donnée quand au MCD je ne sais pas ce que c'est !!!
Commenter la réponse de nicomilville
cs_Al3x_Oo 41 Messages postés jeudi 21 juin 2007Date d'inscription 27 juillet 2010 Dernière intervention - 27 déc. 2007 à 21:12
0
Utile
lol, bah il est la ton pb, pour faire une base de donné faut que tu sache se qu'est un MCD, c'est se qui relis les tables entre elle.

Model Conceptuel de Donnée, a toi de chercher! :p
Commenter la réponse de cs_Al3x_Oo
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 27 déc. 2007 à 21:16
0
Utile
je ne comprend pas !!!

 
Commenter la réponse de nicomilville
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 28 déc. 2007 à 10:15
0
Utile
je crois que je vais faire une seule table avec les champs : pseudo, pass, email, age, pays, image1, image2, image3, image4

 
Commenter la réponse de nicomilville

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.