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

PHP & Base de données Discussion :

Récupérer et afficher champ type image


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 13
    Points : 4
    Points
    4
    Par défaut Récupérer et afficher champ type image
    Je voudrais récupérer une image stockée dans une bdd sql server sur un serveur distant. Le type du champ est image. Voici le code que j'ai fait, je ne sais plus quoi faire , j'arrive à me connecter à la base mais pas à afficher l'image :

    showimage.php :
    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
     
      $ID = $_POST['produit_id'];
        //CONNEXION AU SERVEUR
      $CONN = mssql_connect("XXXXXXXX","sa","XXXXXXXX") OR DIE('ERREUR DE CONNEXION');
      //SÉLECTION DE LA BASE DE DONNÉES
      $DB= MSSQL_SELECT_DB('catalogue',$CONN) OR DIE('ERREUR DE SÉLECTION DE LA BASE DE DONNÉES'); 
      //REQUÊTE QUI VA RÉCUPÉRER L'IMAGE
      $RESIMG = MSSQL_QUERY("SELECT * FROM PHOTOTEQUE P, PRODUIT_IMG I WHERE P.PHOTOTEQUE_ID = I.PHOTOTEQUE_ID AND PRODUIT_ID ='".$ID."' and produit_img_position='1'");
       $ROW = mssql_fetch_assoc($RESIMG);
        $IMAGE = $ROW['phototeque_image'];
        //AFFICHAGE DE L IMAGE  
        header("Content-type: image/jpeg");
        echo $IMAGE;
     
    ?>

    ls_prod.php :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    <?php
        //Connexion au serveur
    		$conn = mssql_connect("XXXXXXX","sa","XXXXXXX") or die('Erreur de connexion');
    		//Sélection de la base de données
    		$db= mssql_select_db('catalogue',$conn) or die('Erreur de sélection de la base de données'); 
    ?>
    <html>	               
      <head>		                         
        <title>Récupération de données                         
        </title>    
        <link rel="stylesheet" type="text/css" href="styleDevis.css" /> 	               
      </head>	               
      <body>  
        <div class="bandeau">  Fiche du Produit   
        </div>                   
        <div class="contenu">         
    <?php
        $req3 = ("Select categorie_nom, famille_nom, marque_nom from categorie, famille, marque, produit where categorie.categorie_id = produit.produit_categorie and famille.famille_id=produit.produit_famille and marque.marque_id=produit.produit_marque and produit_id ='".$_POST['produits']."'");
        $req = "SELECT * FROM produit where produit_id ='".$_POST['produits']."' ORDER BY produit_nom";
        $req4 = "SELECT * from caracteristique, descriptif where caracteristique.caracteristique_id = descriptif.specification_id and produit_id='".$_POST['produits']."'";
        $res4 = mssql_query($req4);
        $row4 = mssql_fetch_array($res4);
    		$res = mssql_query($req);
    		$row= mssql_fetch_array($res); 
    		$res3 = mssql_query($req3);
    		$row3= mssql_fetch_array($res3);
    ?>
          <center>
            <img src=showimage.php?produit_id=<?php echo $row['produit_id'];?> alt="im" />
          </center> <br />          
          <table colspan ="100%">          
            <tr>          
              <td colspan="98%" align="center" color="mintcream"><b>
                  <?php echo $row['produit_nom']; ?></b></td>          
              <td><i>Référence : 
                  <?php echo $row['produit_ref']; ?></i></td>          
            </tr>          
            <tr>          
              <td colspan="50%"><i>Catégorie : 
                  <?php echo $row3['categorie_nom']; ?></i></td>          
              <td colspan="25%"><i>Famille : 
                  <?php echo $row3['famille_nom'];?></i></td>          
              <td colspan="25%"><i>Marque : 
                  <?php echo $row3['marque_nom'];?></i></td>          
            </tr>          
            <tr>          
              <td colspan="100%">
                <?php echo $row['produit_caraPrincipal'];?></td>          
            </tr>          
            <tr>          
              <td colspan="100%">
                <ul><br />
                  <?php while($row4){ echo '<li><b>'.$row4['caracteristique_nom'].'</b> : &nbsp;&nbsp;'.$row4['descriptif_description'].'</li>'; $row4 = mssql_fetch_array($res4);} ?>
                </ul></td>          
            </tr>          
            <tr>          
              <td colspan="100%">
                <?php echo $row['produit_commentaire']; ?></td>          
            </tr>          
          </table>                
        </div>         
      </body>
    </html>

  2. #2
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Salut,
    tu peux déjà mettre des guillemets pour src car avec les 2 = y a moyen que ça plante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="showimage.php?produit_id=<?php echo $row['produit_id'];?>" alt="im" />
    sinon est-ce que ça marche quand t'appelles directement la page showimage ?
    Vive les roues en pierre

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    J'ai déja essayé avec les guillemets. Et le code source de la page showimage.php m'affiche une page blanche.

    Merçi pour ta réponse.

  4. #4
    Candidat au Club
    Inscrit en
    Décembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Si j'appelle directement showimage.php,
    Sur firefox, il me réaffiche le lien :

    http://www.test-dev.fr/showimage.php?produit_id=2/

    Et sur IE, un carré avec une croix rouge

  5. #5
    Candidat au Club
    Inscrit en
    Décembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    J'ai trouvé mon erreur à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $ID = $_POST['produit_id'];
    , il faut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ID=$_GET['produit_id'];
    Mais bon j'ai toujours un problème car les images ne s'affiche pas en entières!

  6. #6
    Futur Membre du Club
    Inscrit en
    Avril 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    J'ai un problème similaire.

    Voila ce que je souhaite faire :

    J'ai une base de données mssql avec une table qui contient un champs de type image. Je souhaite faire une migration des données et donc je voudrais extraire les images de cette basse.

    Je cherche donc un script ou une méthode pour "télécharger" les images stocké dans ce champs.

    Peut importe le langage php, asp, batch, ...


    Je vous remerci d'avance.

  7. #7
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Salut,
    en php tu peux utiliser la méthode ci-dessus mais mixer avec la bufferisation de sortie (ob_start(), etc.), tu stockes tout dans une variable puis tu crées un fichier (fopen(), etc.).
    Il y a peut-être plus simple (par ex : via GD mais moins performant).

    Si le besoin est ponctuel tu dois pouvoir utiliser directemet la méthode ci-dessus et aller pomper dans le cache du navigateur.
    Vive les roues en pierre

  8. #8
    Futur Membre du Club
    Inscrit en
    Avril 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    OK je te remerci
    Je fais essayer de suivre ce que tu m'as dis. je vous tien au courant.

  9. #9
    Futur Membre du Club
    Inscrit en
    Avril 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Alors j'ai testé ta méthode.

    J'affiche bien les images et en suite j'ai essayer de suivre ce que tu ma dit et j'ai donc ajouté ces ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $test = ob_start($IMAGE);
    $handle = fopen("c:\\folder\\resource.png", "r");
    et ensuite je suis aller voir dans le cache mais rien !!!

  10. #10
    Futur Membre du Club
    Inscrit en
    Avril 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Je pense que j'ai trouver une solution, voila ce que j'ai ajouté :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    fopen("./".$ID.".jpg", "x");
    $filename = $ID.'.jpg';
    $somecontent = $IMAGE;
     
    // Assurons nous que le fichier est accessible en écriture
    if (is_writable($filename)) {
     
        // Dans notre exemple, nous ouvrons le fichier $filename en mode d'ajout
        // Le pointeur de fichier est placé à la fin du fichier
        // c'est là que $somecontent sera placé
        if (!$handle = fopen($filename, 'a')) {
             echo "Impossible d'ouvrir le fichier ($filename)";
             exit;
        }
     
        // Ecrivons quelque chose dans notre fichier.
        if (fwrite($handle, $somecontent) === FALSE) {
            echo "Impossible d'écrire dans le fichier ($filename)";
            exit;
        }
     
        echo "L'écriture de ('test') dans le fichier ($filename) a réussi";
     
        fclose($handle);
     
    } else {
        echo "Le fichier $filename n'est pas accessible en écriture.";
    }
    Mais j'ai toujours un problème qui a été levé au début de ce topique :

    Mes images ne s'affiche pas entièrement il y a le haut de l'image mais pas la fin !!!

  11. #11
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Salut,
    t'utilises ob_get_contents() finalement ?
    Est-ce que tu envoies bien le header ?
    Ton image s'affiche-t-elle bien ? Tu peux tester avec ob_flush(), un fois qu'elle s'affichera bien tu pourras te pencher vers la sauvegarde je pense.
    Vive les roues en pierre

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    @aboeuf

    As-tu résolu ton souci d'image qui ne s'affiche pas entièrement ?
    J'ai le même souci...

  13. #13
    Futur Membre du Club
    Inscrit en
    Avril 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Salut,

    Non je n'ai par réussi avec php et donc du coup j'ai utilisé windev pour extraire mes images à la perfection.

    Désolé

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    fichtre !
    t'as un bout de code ou quelque chose à mettre à disposition ?

    NB : Je ne connais pas DU TOUT Windev..

Discussions similaires

  1. [2.x] Afficher champs type Collection pré remplis
    Par spiralfriz dans le forum Symfony
    Réponses: 3
    Dernier message: 12/07/2014, 19h20
  2. Créer un PDF depuis un champ type "Image"
    Par siriu dans le forum JDBC
    Réponses: 0
    Dernier message: 03/04/2014, 14h16
  3. [SQL-Server] Affichage d'un champ type image
    Par jaknetc dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 25/07/2012, 09h22
  4. Afficher champ type Memo access 2003
    Par fbpdt dans le forum Modélisation
    Réponses: 0
    Dernier message: 11/01/2008, 10h36
  5. [VB.NET] Afficher un type Image
    Par cicko dans le forum ASP.NET
    Réponses: 4
    Dernier message: 20/02/2004, 10h58

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