PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 06-11-2009 23:04:24

tazz94fr
Membre
Inscription : 06-11-2009
Messages : 4

Afficher une image à partir d'une variable

Bonjour,


Je suis débutant, et j'ai un problème pour afficher une image à partir d'une variable. Le nom et le chemin de l'image se trouve dans ma base de donnée, et je souhaite afficher cette image dans ma page. Mais rien à faire, ca ne fonctionne pas. J'aimerai savoir ou est mon erreur. Merci à vous.


<?php
$rq="SELECT image_recto FROM carte";$result=mysqli_query($connexion,$rq) or die ("Exécution de la requéte impossible.");
   while($ligne=mysqli_fetch_assoc($result))
      {
      extract($ligne);
      echo"$image_recto";
      }
?>
<table align="center" border="1" width="400" height="300" bordercolordark="black" bordercolorlight="black">
    <tr>
        <td width="300">
            <p align="center"> <?php
                                echo "<img src='$image_recto' border="0">";
                                ?>
                                </p>
        </td>
    </tr>
</table>
 

Hors ligne

#2 07-11-2009 01:30:07

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : Afficher une image à partir d'une variable

salut,

pour commencer :
- des " autour d'une variable ne servent à rien donc on ne met pas echo "$truc" mais echo $truc directement. Pourquoi ? pour éviter d'utiliser le moteur de php pour chercher des variables dans une chaine de caractère alors qu'il n'y a pas besoin wink
- qu'elle est le résultat de echo "<img src='$image_recto' border="0">";  (source HTML du rendu)?.
- les attribut HTML (XML) sont "encapsulés" par des " et non des ' ! tu a d'ailleur une erreur de syntaxe a cause de ça à la ligne ci ci dessus.
- on va éviter le extract et utiliser directement $ligne['image_recto].

Le problème de ton code :
tu va toujours avoir la même image d'affichée. Pourquoi ? parce que tu ne filtre pas dans la requete SQL, s'il y a 300 tuples à récupérer tu faire 300 boucles while et le dernier résultat sera toujours le même.
si tu veut afficher tout les résultat il te faut inclure l'affichage dans la boucle while.

un code corrigé :


<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "[url]http://www.w3.org/TR/xhtml1/DTD/xhtml1.strict.dtd[/url]">
<html xml:lang="fr" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>

<?php
// on oublira pas d'ajouter la connexion au serveur SQL => $connexion
$rq="SELECT image_recto FROM carte";
$result=mysqli_query($connexion,$rq) or die ('<p class="systemerror">Exécution de la requéte impossible.<br />'.$rq.'<br />'.mysqli_error($connexion).'</p>');
   while($ligne=mysqli_fetch_assoc($result))
      {
         echo '<p class="afficheimage">
                  <img src="'
.$ligne['image_recto'].'" alt="" />
               </p>'
;
      }
?>
</body>
</html>
 

Je te laisse faire la css wink

@+


Il en faut peu pour être heureux pompompompompompompompompompompom

Hors ligne

#3 07-11-2009 13:27:09

tazz94fr
Membre
Inscription : 06-11-2009
Messages : 4

Re : Afficher une image à partir d'une variable

Merci beaucoup pour cette aide, je vais aller tester çà pour voir son fonctionnement.

Hors ligne

#4 07-11-2009 23:27:12

tazz94fr
Membre
Inscription : 06-11-2009
Messages : 4

Re : Afficher une image à partir d'une variable

J'ai encore besoin aide. Cette image que j'affiche, j'aimerai que ça soit un lien, et surtout que l'image change quand on passe le curseur de la souris dessus. Mais rien à faire !!!


<script type="text/javascript">
<!--
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//-->
</script>

 

</head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">

<?php
   $user="";
   $host="";
   $password="";
   $database="";
   
   $connexion=mysqli_connect($host,$user,$password)
   or die ("Connexion au serveur impossible.");
   
   $db=mysqli_select_db($connexion,$database)
   or die ("Selection de la base impossible.");
   
   $rq="SELECT *
        FROM carte, edition
        WHERE carte.id_ed = edition.id_ed"
;
   
   $result=mysqli_query($connexion,$rq)
   or die ('<p class="systemerror">Exécution de la requéte impossible.<br />'.$rq.'<br />'.mysqli_error($connexion).'</p>');
   

?>
<table align="center" border="0" width="210" height="210" bordercolordark="black" bordercolorlight="black" onload="MM_preloadImages('<?php
                                  while($ligne=mysqli_fetch_assoc($result))
                                    {
                                    echo '<p class="afficheimage">
                                    <img src="'
.$ligne['root'].''.$ligne['image_vecto'].'" alt="''" />
                                    </p>'
;
                                    }
                                ?>')>
    <tr>
        <td width="300">
            <p align="center"> <a href="pages/index.html" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Image1','','<? echo '<p class="afficheimage"><img src="'.$ligne['root'].''.$ligne['image_verso'].'" alt="''" /></p>';?>',1)"><img src="<? echo '<p class="afficheimage"><img src="'.$ligne['root'].''.$ligne['image_recto'].'" alt="''" /></p>';?>" name="Image1" width="200" height="282" border="0" id="Image1" />
                               
                           
                                </p>
        </td>
    </tr>
</table>

</body>

</html>

 

Hors ligne

#5 09-11-2009 09:01:31

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : Afficher une image à partir d'une variable

Salut,

Vu que tu es en période d'apprentissage, tu vas un peu bosser :
Etape 1 : Cherche la portion de code qui affiche ton image
Etape 2 : Rajoute correctement le fragment <a href="tonlien"> ...</a>
Etape 3 : tu auras besoin du paramètre "onclic" pour l'effet sur survol souris

Courage, tu vas y arriver !


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#6 09-11-2009 10:02:27

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Afficher une image à partir d'une variable

>> "onclic" pour l'effet sur survol souris

roll


ce serai pas plutot onmouseover ??


a++

Hors ligne

#7 09-11-2009 10:46:25

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : Afficher une image à partir d'une variable

Pierrot a écrit :

>> "onclic" pour l'effet sur survol souris

roll

ce serai pas plutot onmouseover ??
a++

Effectivement .. c'était pour voir si vous suiviez ^^


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#8 09-11-2009 11:42:07

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Afficher une image à partir d'une variable

bah, je suis moaaaaa roll big_smile:D
a++

Hors ligne

#9 11-11-2009 15:56:29

tazz94fr
Membre
Inscription : 06-11-2009
Messages : 4

Re : Afficher une image à partir d'une variable

J'ai cherché depuis quelques jours mais rien à faire. Il y a quelque chose qui cloche quelque part mais je ne trouve tjs pas quoi. Je continue à chercher, mais si vous avez quelques infos pour m'aider, voilà mon code.

<head>
<title></title>

<style>
BODY {font-family: Arial; font-size: 10pt}
</style>
<SCRIPT LANGUAGE="JavaScript">
<!--

function preload() {
   
    nb_arguments = preload.arguments.length;


    if (nb_arguments > 0) {
       
        var img_load = new Array();

       
        for (var i=0; i<nb_arguments; i++) {
            img_load[i+1] = new Image();
            img_load[i+1].src = preload.arguments[i];
        }
    }
}

preload("");
//-->
</SCRIPT>

</head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<script language="javascript">
<!--
function rollover(objet, img){
    objet.src = img;
}
</script>
<?php
   
   $user="root";
   $host="localhost";
   $password="";
   $database="****";
   $collection="***";
   
   $connexion=mysqli_connect($host,$user,$password)
   or die ("Connexion au serveur impossible.");
   
   $db=mysqli_select_db($connexion,$database)
   or die ("Selection de la base impossible.");
   
   $rq="SELECT *
        FROM carte, edition
        WHERE carte.id_ed = edition.id_ed
        AND nom_ed='$collection';
   
   $result=mysqli_query($connexion,$rq)
   or die ('<p class="systemerror">Exécution de la requéte impossible.<br />'.$rq.'<br />'.mysqli_error($connexion).'</p>');
   

?>
<p align="center"><font size="5" face="Century Gothic"> <?php echo $collection; ?></font></p>
<table width="983" align="center" cellpadding="0" cellspacing="0">

                   
<?php
                                  while($ligne=mysqli_fetch_assoc($result))
                                      {
                                      while($ligne)
                                          {
                                          preload( <?php "'.$ligne['root'].''.$ligne['image_recto'].'";?>);                                                                                  
                                          echo '<tr align="center" valign="middle">';
                                          $i=0;
                                          while( $ligne && ($i<3) )
                                                {
                                                echo'<td width="503" align="center" valign="middle">';
                                                if ($ligne['position_h']=='oui')
                                                  {
                                                  echo '<a href="javascript: void(0)"><p class="afficheimage">
                                                  <img src="'.$ligne['root'].''.$ligne['image_recto'].'" alt="'.$ligne['num_carte_ed'].''.$ligne['nom_carte'].'" width="224" height="320" border="0" onmouseover="rollover(this, '.$ligne['root'].''.$ligne['image_verso'].')" onmouseout="rollover(this, '.$ligne['root'].''.$ligne['image_recto'].')"></a>';
                                                  if ($ligne['double']=='0')
                                                      {
                                                      echo '<font face="Century Gothic"><b>
                                                      <br>'.$ligne['num_carte_ed'].' - '.$ligne['nom_carte'].'</b></font></p>';
                                                      }else{
                                                            echo '<font face="Century Gothic" color="red"><b>
                                                            <br>'.$ligne['num_carte_ed'].' - '.$ligne['nom_carte'].'</b></font></p>';
                                                            }
                                                  }else{
                                                        echo '<a href="javascript: void(0)"><p class="afficheimage">
                                                        <img src="'.$ligne['root'].''.$ligne['image_recto'].'" alt="'.$ligne['num_carte_ed'].''.$ligne['nom_carte'].'" width="320" height="224" border="0" onmouseover="rollover(this, '.$ligne['root'].''.$ligne['image_verso'].')" onmouseout="rollover(this, '.$ligne['root'].''.$ligne['image_recto'].')"></a>';
                                                        if ($ligne['double']=='0')
                                                            {
                                                            echo '<font face="Century Gothic"><b>
                                                            <br>'.$ligne['num_carte_ed'].' - '.$ligne['nom_carte'].'</b></font></p>';
                                                            }else{
                                                                  echo '<font face="Century Gothic" color="red"><b>
                                                                  <br>'.$ligne['num_carte_ed'].' - '.$ligne['nom_carte'].'</b></font></p>';
                                                                  }
                                                        }
                                                echo"</td>";
                                                $i++;
                                                $ligne= mysqli_fetch_assoc($result);
                                                }
                                          while($i<3)
                                                {
                                                echo '<tdwidth="503" align="center" valign="middle"> </td>';
                                                $i++;
                                                }
                                          echo "</tr>";
                                          }  
                                   
                                      }
                                ?>

 

       
</table>

</body>

</html>


MERCI BCP

Hors ligne

#10 11-11-2009 16:49:43

nicolas
Membre
Inscription : 11-11-2009
Messages : 69
Site Web

Re : Afficher une image à partir d'une variable

moogli a écrit :

- les attribut HTML (XML) sont "encapsulés" par des " et non des ' ! tu a d'ailleur une erreur de syntaxe a cause de ça à la ligne ci ci dessus.

Je ne suis pas sûr de réellement comprendre ton propos. Si tu veux dire que les attributs html doivent se mettre entre doubles quotes alors tu te trompes. Les simples quotes sont parfaitement valables et valides d'ailleurs. Le fait de mettre des doubles quotes n'est qu'une habitude française/européenne !

Hors ligne

Pied de page des forums