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

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

Merci

 
Afficher la suite 

Votre réponse

17 réponses

Meilleure réponse
Messages postés
2492
Date d'inscription
jeudi 30 novembre 2006
Dernière intervention
14 janvier 2011
- 27 déc. 2007 à 22:55
3
Merci
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.

Merci neigedhiver 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de neigedhiver
Meilleure réponse
Messages postés
41
Date d'inscription
jeudi 21 juin 2007
Dernière intervention
27 juillet 2010
- 28 déc. 2007 à 03:19
3
Merci
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.

Merci cs_Al3x_Oo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de cs_Al3x_Oo
Messages postés
2492
Date d'inscription
jeudi 30 novembre 2006
Dernière intervention
14 janvier 2011
- 26 déc. 2007 à 23:17
0
Merci
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
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Dernière intervention
28 février 2014
- 27 déc. 2007 à 09:03
0
Merci
et esque ça alourdi beaucoup la bdd ou pas

 
Commenter la réponse de nicomilville
Messages postés
2492
Date d'inscription
jeudi 30 novembre 2006
Dernière intervention
14 janvier 2011
- 27 déc. 2007 à 11:41
0
Merci
Oui, evidemment : ça prend de la place
Commenter la réponse de neigedhiver
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Dernière intervention
28 février 2014
- 27 déc. 2007 à 11:59
0
Merci
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
Messages postés
41
Date d'inscription
jeudi 21 juin 2007
Dernière intervention
27 juillet 2010
- 27 déc. 2007 à 13:46
0
Merci
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
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Dernière intervention
28 février 2014
- 27 déc. 2007 à 14:17
0
Merci
tu peut préciser stp !!!

 
Commenter la réponse de nicomilville
Messages postés
41
Date d'inscription
jeudi 21 juin 2007
Dernière intervention
27 juillet 2010
- 27 déc. 2007 à 14:38
0
Merci
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
Messages postés
90
Date d'inscription
vendredi 21 octobre 2005
Dernière intervention
9 septembre 2008
- 27 déc. 2007 à 16:45
0
Merci
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
Messages postés
90
Date d'inscription
vendredi 21 octobre 2005
Dernière intervention
9 septembre 2008
- 27 déc. 2007 à 16:46
0
Merci
bon oublie evidemment la déclaration des sessions au début
Commenter la réponse de cs_pyobour
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Dernière intervention
28 février 2014
- 27 déc. 2007 à 18:05
0
Merci
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
Messages postés
41
Date d'inscription
jeudi 21 juin 2007
Dernière intervention
27 juillet 2010
- 27 déc. 2007 à 21:01
0
Merci
Tu as une base de donnée?
Tu a fait un petit MCD pour te retrouvé?
Commenter la réponse de cs_Al3x_Oo
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Dernière intervention
28 février 2014
- 27 déc. 2007 à 21:09
0
Merci
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
Messages postés
41
Date d'inscription
jeudi 21 juin 2007
Dernière intervention
27 juillet 2010
- 27 déc. 2007 à 21:12
0
Merci
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
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Dernière intervention
28 février 2014
- 27 déc. 2007 à 21:16
0
Merci
je ne comprend pas !!!

 
Commenter la réponse de nicomilville
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Dernière intervention
28 février 2014
- 28 déc. 2007 à 10:15
0
Merci
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.