Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 14 sur 14
  1. #1
    Invité de passage
    Profil pro myriam boron
    Inscrit en
    décembre 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Nom : myriam boron

    Informations forums :
    Inscription : décembre 2009
    Messages : 13
    Points : 0
    Points
    0

    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 :
    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 :
    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 Expert Avatar de Djakisback
    Inscrit en
    février 2005
    Messages
    1 971
    Détails du profil
    Informations forums :
    Inscription : février 2005
    Messages : 1 971
    Points : 1 926
    Points
    1 926

    Par défaut

    Salut,
    tu peux déjà mettre des guillemets pour src car avec les 2 = y a moyen que ça plante :

    Code :
    <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 ?

  3. #3
    Invité de passage
    Profil pro myriam boron
    Inscrit en
    décembre 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Nom : myriam boron

    Informations forums :
    Inscription : décembre 2009
    Messages : 13
    Points : 0
    Points
    0

    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
    Invité de passage
    Profil pro myriam boron
    Inscrit en
    décembre 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Nom : myriam boron

    Informations forums :
    Inscription : décembre 2009
    Messages : 13
    Points : 0
    Points
    0

    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
    Invité de passage
    Profil pro myriam boron
    Inscrit en
    décembre 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Nom : myriam boron

    Informations forums :
    Inscription : décembre 2009
    Messages : 13
    Points : 0
    Points
    0

    Par défaut

    J'ai trouvé mon erreur à la place de
    Code :
     $ID = $_POST['produit_id'];
    , il faut mettre
    Code :
    $ID=$_GET['produit_id'];
    Mais bon j'ai toujours un problème car les images ne s'affiche pas en entières!

  6. #6
    Invité régulier
    Inscrit en
    avril 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : avril 2011
    Messages : 9
    Points : 7
    Points
    7

    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 Expert Avatar de Djakisback
    Inscrit en
    février 2005
    Messages
    1 971
    Détails du profil
    Informations forums :
    Inscription : février 2005
    Messages : 1 971
    Points : 1 926
    Points
    1 926

    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
    Invité régulier
    Inscrit en
    avril 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : avril 2011
    Messages : 9
    Points : 7
    Points
    7

    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
    Invité régulier
    Inscrit en
    avril 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : avril 2011
    Messages : 9
    Points : 7
    Points
    7

    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 :
    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
    Invité régulier
    Inscrit en
    avril 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : avril 2011
    Messages : 9
    Points : 7
    Points
    7

    Par défaut

    Je pense que j'ai trouver une solution, voila ce que j'ai ajouté :

    Code :
    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 Expert Avatar de Djakisback
    Inscrit en
    février 2005
    Messages
    1 971
    Détails du profil
    Informations forums :
    Inscription : février 2005
    Messages : 1 971
    Points : 1 926
    Points
    1 926

    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
    Invité de passage
    Inscrit en
    juillet 2012
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : juillet 2012
    Messages : 3
    Points : 2
    Points
    2

    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
    Invité régulier
    Inscrit en
    avril 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : avril 2011
    Messages : 9
    Points : 7
    Points
    7

    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
    Invité de passage
    Inscrit en
    juillet 2012
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : juillet 2012
    Messages : 3
    Points : 2
    Points
    2

    Par défaut

    fichtre !
    t'as un bout de code ou quelque chose à mettre à disposition ?

    NB : Je ne connais pas DU TOUT Windev..

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •