IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

Affichage d'images depuis base MySQL


Sujet :

SQL Procédural MySQL

  1. #1
    klerdesign
    Invité(e)
    Par défaut Affichage d'images depuis base MySQL
    Bonjour,
    Voici mon script d'affichage de news dans ma page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <?php
    //je sélectionne ma news depuis ma table
    $news->SelectNews('1','id','desc');
     
    include ("includes/connexion.php");
    //ici, je sélectionne mes images
    $req = "SELECT img_nom, img_id ".
    "FROM images ORDER BY img_blob";
    $ret = mysql_query ($req) or die (mysql_error ());
    while ( $col = mysql_fetch_row ($ret) )
    {
    //et je les affiche
    echo "<img src=\"apercu.php?id=".$col[1]."\">";
    }
    ?>
    Au commencement j'utilisai une simple interface d'admin sans insertion d'images. Mais j'ai du adapter pour pouvoir insérer des images.

    Je rencontre des problèmes avec l'affichage des images (elles se placent toutes au même endroit et non avec leur actu respective).

    Qu'est-ce qui est le plus judicieux, adapter mes deux tables ('news' et 'images') pour qu'elles fonctionnent ensemble, ou insérer un enregistrement du type IMG_BLOB dans ma table 'news' ?

  2. #2
    Inscrit

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Points : 909
    Points
    909
    Par défaut
    Tout dépends de vos objectifs en matière de cardinnalités.
    table1 [Nombre_Min_de_Table2,Nombre_Max_de_Table2] <-- --> [Nombre_Min_de_Table1,Nombre_Max_de_Table1] table2

    Solution basique et limitée :
    images [1,1] <-- --> [1,1] news, il suffit d'ajouter un champs pour l'image dans la table de news.
    La solution simple mais interressante : images [1,1] <-- (FK : id_news) --> [0,n] news, là, il faut ajouter une clef id_news dans la table d'images.
    Meilleure solution, celle profitant au maximum des bases de données : images [0,n] <-- tbl_index --> news [0,n], il faut créer une table qui contiendra une ligne par image qui est liée à une news, qui contiendra l'id de chacun. C'est sûrement la meilleure solution.

  3. #3
    klerdesign
    Invité(e)
    Par défaut
    Merci, ta dernière proposition me semble la meilleure en effet.
    Mais : comment lier mon champ 'img_blob' (de ma table 'images')
    à ma news ? Quelle syntaxe et où la placer ? On ne peut pas dire que je sois un pro du PHP, j'avance petit à petit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //Je transfert mes images ainsi :
    $req = "INSERT INTO images ("."img_nom, img_taille, img_type, img_blob ".")
    VALUES ("."'".$img_nom."', ".
    "'".$img_taille."', ".
    "'".$img_type."', ".
    "'".addslashes ($img_blob)."') ";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //partie du code de la page apercu.php
    $req = "SELECT img_id, img_type, img_blob ".
    "FROM images WHERE img_id = ".$id;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //je selectionne ma news (nombre, id, ordre d'apparition).
    $news->SelectNews($nb,$sort,$order);
    //j'affiche mon image depuis la page apercu.php
    echo "<img src=\"apercu.php?id=".$col[1]."\">";
    Jusqu'ici, les news s'insèrent correctement et les images rentrent dans ma table 'images'. Le seul problème est l'affichage de ces dernières. Je ne parviens pas à les associer à leur news repective.

    Je me répète, mais c'est par souci de clarté
    Dernière modification par klerdesign ; 24/10/2006 à 16h22. Motif: Un peu plus d'indication ;)

  4. #4
    Inscrit

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Points : 909
    Points
    909
    Par défaut
    Tout d'abord, je rapelle qu'il ne faut pas stocker du binaire dans mysql pour afficher une image avec php (rapport au champs blob).

    Sinon, admettons que la table de news utilise une clef primaire auto-incrémentée news_id. Il faut créer la table suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    news_id, int, 6, index
    img_id, int, 6
    Il faudrait remplacer 6 par 5 si vous n'attendez pas plus de 99999 news ou image bien sur, vu que cette table risque de contenir beaucoup d'enregistrement, autant l'optimiser au maximum.

    Une fois que vous avez cette table de crée, disons news_img, voici comment vous pourrez ajouter une image à une news :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php
    $sql_lie_image_avec_news = "INSERT INTO `news_img` SET `img_id` = ".$img_id.", `news_id` = ".$news_id;
    Et à pour récupérer les images d'une news :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php
    $sql_fetch_news = "SELECT `img`.*, `news_img`.`news_id` FROM `news_img` LEFT JOIN `img` ON `news_img`.`img_id` = `img`.`img_id` WHERE `news_img`.`news_id` = ".$new_id

Discussions similaires

  1. [MySQL] afficher une image depuis base mysql
    Par zabuze dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 12/10/2009, 13h35
  2. affichage d'image depuis la base de donnée
    Par tortuegenie dans le forum ASP.NET
    Réponses: 4
    Dernier message: 30/06/2009, 13h23
  3. [MySQL] Affichage d'image depuis ma base
    Par bruce207 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 14/07/2008, 18h57
  4. [MySQL]Affichage d'image depuis une base de données
    Par Sofute dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 20/02/2007, 14h43
  5. Problème d'affichage d'image depuis une pseudo-frames
    Par kriss_87 dans le forum Langage
    Réponses: 2
    Dernier message: 24/05/2006, 22h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo