Précédent   Forum du club des développeurs et IT Pro > PHP > PHP & SGBD > PHP & SQL-Server
PHP & SQL-Server Forum d'entraide sur SQL-Server avec PHP. Avant de poster -> FAQ SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 30/12/2009, 15h36   #1
mymy2002
Invité de passage
 
myriam boron
Inscription : 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>
mymy2002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2009, 16h52   #2
Djakisback
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 914
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 914
Points : 1 840
Points : 1 840
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 ?
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2009, 17h07   #3
mymy2002
Invité de passage
 
myriam boron
Inscription : 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
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.
mymy2002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2009, 17h17   #4
mymy2002
Invité de passage
 
myriam boron
Inscription : 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
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
mymy2002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2010, 15h33   #5
mymy2002
Invité de passage
 
myriam boron
Inscription : 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
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!
mymy2002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2012, 11h18   #6
aboeuf
Invité régulier
 
Inscription : avril 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 9
Points : 7
Points : 7
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.
aboeuf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2012, 14h38   #7
Djakisback
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 914
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 914
Points : 1 840
Points : 1 840
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
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2012, 09h03   #8
aboeuf
Invité régulier
 
Inscription : avril 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 9
Points : 7
Points : 7
OK je te remerci
Je fais essayer de suivre ce que tu m'as dis. je vous tien au courant.
aboeuf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2012, 09h38   #9
aboeuf
Invité régulier
 
Inscription : avril 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 9
Points : 7
Points : 7
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 !!!
aboeuf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2012, 11h20   #10
aboeuf
Invité régulier
 
Inscription : avril 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 9
Points : 7
Points : 7
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 !!!
aboeuf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2012, 12h13   #11
Djakisback
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 914
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 914
Points : 1 840
Points : 1 840
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
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2012, 09h06   #12
jaknetc
Invité de passage
 
Inscription : juillet 2012
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2012
Messages : 3
Points : 2
Points : 2
@aboeuf

As-tu résolu ton souci d'image qui ne s'affiche pas entièrement ?
J'ai le même souci...
jaknetc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2012, 11h18   #13
aboeuf
Invité régulier
 
Inscription : avril 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 9
Points : 7
Points : 7
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é
aboeuf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2012, 11h40   #14
jaknetc
Invité de passage
 
Inscription : juillet 2012
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2012
Messages : 3
Points : 2
Points : 2
fichtre !
t'as un bout de code ou quelque chose à mettre à disposition ?

NB : Je ne connais pas DU TOUT Windev..
jaknetc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h34.


 
 
 
 
Partenaires

Hébergement Web