Problème fonction image

Signaler
Messages postés
30
Date d'inscription
dimanche 10 juin 2007
Statut
Membre
Dernière intervention
1 novembre 2007
-
Messages postés
30
Date d'inscription
dimanche 10 juin 2007
Statut
Membre
Dernière intervention
1 novembre 2007
-
merci beaucoup pour ces explications, j'ai donc fait les corrections mais il semblerai qu'il y ait un problème puisque le alert (i) que j'ai mis dans la function "onload" n'apparait qu'une fois ce qui est impossible.

Mes tests se font justement sous firefox j'ai donc remplacé comme ceci :

<script>
function rempli()
{
    var addresse = new Array();
    var alt = new Array();
    <?
    for ($numero=1;$numero<6;$numero++)
    {
        $reponse = mysql_query("SELECT libelle, url FROM images WHERE num='".$numero."'");
        $donnees = mysql_fetch_array($reponse);
        
        while ($donnees = mysql_fetch_array($reponse))
        {
            //La liste des adresses se retrouvera dans la source javascript
            echo "adresse[".$numero."]='".$donnees['url']."';";
            //La liste des libellés se retouvera dans la source javascript
            echo "alt[".$numero."]='".$donnees['libelle']."';";
        }
    }
    ?>
}  
      
function loadImage()
{
    rempli();
    for (i=1; i<6; i++)
    {
        alert (i);
        img = document.getElementById("image"+i);
        img.src=adresse[i];
        img.alt=alt[i];
    }
}
</script>


et les images sont toutes comme ceci

Moi ça me parait pas mal pourtant !!!

ps : dsl si ce n'est pas la bonne rubrique mais je ne voyais pas trop ou le mettre

28 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
Bonjour,

>>merci beaucoup pour ces explications,
    je n'ai encore rien dit, moi...  
    tu dois t'être trompé de lieu où répondre.

>>n'apparait qu'une fois ce qui est
impossible.
    si ça n'apparait qu'une fois, c'est donc possible







o~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~o 
| Avec | et mieux : <label style= "color: rgb(0, 128, 0);">Télécharger</label> | 
|~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~| 
|<label style="color: rgb(128, 0, 0);">FireFox</label> |regarder la "console d'erreurs" | FireBug
| | Outils / Console d'erreurs | | 
|~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~| 
|<label style= "color: rgb(128, 0, 0);">Internet Explorer</label>|activer le deboggage : utils/options I le Debogger IE | 
| | dans la liste, sous "Navigation" : décocher | | 
| | ° Afficher une notification de chaque erreur de script | | 
| | ° Désactiver le débogage de Scripts (autres applications)| | 
| | ° Désactiver le débogage de Scripts (Internet Explorer) | | 
o~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~o



    ça aide....





>>$reponse = mysql_query("SELECT libelle, url...   

    et qu'est-ce qu'on fait nous avec ça ?
    on a le contenu de la base ?

>>Moi ça me parait pas mal pourtant !!!
    moi non plus, mais je pourrais probablement t'en dire plus
    si tu nous donnes la page html générée... pas le PHP.
    ( enfin un extrait, juste le nécessaire.
        tout le nécessaire, mais pas plus )




<hr />



Cordialement            Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
30
Date d'inscription
dimanche 10 juin 2007
Statut
Membre
Dernière intervention
1 novembre 2007

re,

merci pour ta réponse lol

$reponse = mysql_query("SELECT libelle, url...   : la dedans il y a le alt de l'image (libelle) et le src (url) c'est tout. Je n'ai qu'un seule table.

Erreur : adresse is not defined
Fichier source : http://127.0.0.1/nd%20dyn/main.php
Ligne : 29
j'ai download firebug et apparemment adresse ne sera pas défini. Donc c'est que cela merde ici :

while ($donnees = mysql_fetch_array($reponse))
        {
            //La liste des adresses se retrouvera dans la source javascript
            echo "adresse[".$numero."]='".$donnees['url']."';";
            //La liste des libellés se retouvera dans la source javascript
            echo "alt[".$numero."]='".$donnees['libelle']."';";
        }

Je testerai ce soir sans les echos, mais bon...

Merci d'avance pour votre réponse
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
je me  cite ?


    on a le contenu de la base ? comment deviner ce que ça donne ?
    je pourrais probablement t'en dire plus
        si tu nous donnes la page html générée... pas le PHP.
tant qu'à l'erreur que tu signales : ce n'est pas là, firebug c'est coté client lui aussi.


<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
30
Date d'inscription
dimanche 10 juin 2007
Statut
Membre
Dernière intervention
1 novembre 2007

merci pour cette réponse ultra rapide

voici ce que javascript génère :
<script type="text/javascript">
function rempli()
{
var adresse = new Array();
var alt = new Array();
}

function loadImage()
{
rempli();
for (i=1; i<6; i++)
{
var img = document.getElementById('image'+i);
alert (adresse[i]); <== le adresse undefined est là
img.src=adresse[i];
img.alt=alt[i];
}
}
</script>

Déjà j'ai corrigé "adresse" qui était écrit "addresse" dans la fonction rempli() et au vu de ce
qui est généré en html, il semblerait que 'image'+i soit considéré comme literral.

A+
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
et pourquoi ne pas mettre le html ? il faut que je le fasse ? pour tester ?
mais déjà : alert (adresse[i]); ne paut pas fonctionner.
adresse est défini par var dans une fonction, c'est donc une
variable locale, uniquement accessible dans cette fonction.


<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
30
Date d'inscription
dimanche 10 juin 2007
Statut
Membre
Dernière intervention
1 novembre 2007

voici donc la fonction corrigé

<script type="text/javascript">
var adresse = new Array();
    var alt = new Array();

function rempli()
{
    <?
    for ($numero=1;$numero<6;$numero++)
    {
        $reponse = mysql_query("SELECT libelle, url FROM images WHERE num='".$numero."'");
        $donnees = mysql_fetch_array($reponse);
       
        while ($donnees = mysql_fetch_array($reponse))
        {
            //La liste des adresses se retrouvera dans la source javascript
            echo "adresse[".$numero."]='".$donnees['url']."';";
            //La liste des libellés se retouvera dans la source javascript
            echo "alt[".$numero."]='".$donnees['libelle']."';";
        }
    }
    ?>

     
function loadImage()
{
    rempli();
    for (i=1; i<6; i++)
    {
        var img = document.getElementById('image'+i);
        alert (adresse[i]);
        img.src=adresse[i];
        img.alt=alt[i];
    }
}
</script>

et le html

&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;

</html>

Voilà... donc aparemment adresse[] et alt[] sont rempli par undefined. Ce qui voudrait dire que j'arrive pas à récupérer les infos de la base ou que la concaténation n'est pas bonne, ce qui est possible parce que la concaténation javascript php, c pas cool.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
je ne sais pas....    tu donnes toujours le php.
pas la page générée...
<hr />


Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
30
Date d'inscription
dimanche 10 juin 2007
Statut
Membre
Dernière intervention
1 novembre 2007

excuz

<script type="text/javascript">
var adresse = new Array();
var alt = new Array();

function rempli()
{
}

function loadImage()
{
rempli();
for (i=1; i<6; i++)
{
var img = document.getElementById('image'+i);
alert (adresse[i]);
img.src=adresse[i];
img.alt=alt[i];
}
}
</script>
<body onLoad="loadImage();">
<p align="center">
<img src="" id="image1" width="155" height="116" alt="">&nbsp;&nbsp;&nbsp;
<img src="" id="image2" width="155" height="116" alt="">&nbsp;&nbsp;&nbsp;
<img src="" id="image3" width="155" height="116" alt="">&nbsp;&nbsp;&nbsp;
<img src="" id="image4" width="155" height="116" alt="">&nbsp;&nbsp;&nbsp;
<img src="" id="image5" width="155" height="116" alt="">

</html>
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
function rempli()
{
}


donc ?!?
les array adresse et alt ne sont pas remplis
puisque la fonction est vide....
erreur coté php... ou alors tu tentes d'appeller
du php depuis javascript, ce qu'on ne peut pas faire,
enfin... pas comme ça.







<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
30
Date d'inscription
dimanche 10 juin 2007
Statut
Membre
Dernière intervention
1 novembre 2007

comment dois je m'y prendre pour résoudre le problème ?
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
debogguer le php....

 <?php
    ...CONNECTION A LA BASE...
    for ($numero=1;$numero<6;$numero++)
    {   $reponse = mysql_query("SELECT libelle, url FROM images WHERE num='".$numero."'");
        $donnees = mysql_fetch_array($reponse);
        while ($donnees = mysql_fetch_array($reponse))
        { echo $numero.'='.$donnees['url']."\t".$donnees['libelle'];}
     }
    ... FERMER LA BASE ....
?>

uniquement ça dans un .php, tester...
<hr />


Cordialement            Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
30
Date d'inscription
dimanche 10 juin 2007
Statut
Membre
Dernière intervention
1 novembre 2007

je l'ai modifié un peu et comme sa :

<?php
    for ($numero=1;$numero<6;$numero++)
    {   $reponse = mysql_query("SELECT libelle, url FROM images WHERE num='".$numero."'");
        while ($donnees = mysql_fetch_array($reponse))
        {
        echo $numero.'='.$donnees['url']."\t".$donnees['libelle']." ";
        }
     }
?>

avec bien sur la connexion et déconnexion, cela m'affiche bien tout à savoir :


1=img/001.jpg test1 2=img/002.jpg test2 3=img/003.jpg test3 4=img/004.jpg test4 5=img/005.jpg test5
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
donc... si tu remplaces
echo $numero.'= '.$donnees['url']."\t".$donnees['libelle']." "; par





     echo 'adresse['.$numero.'] ='.$donnees['url'].';'
     echo 'alt['.$numero.']='.$donnees['libelle'].';';








avec bien sur la connexion et déconnexion,


    ça doit le faire... ( sauf erreur de syntaxe, pas testé )

si ta page est une page.php,
 si tu n'es pas en train de tenter d'appeler du php depuis le javascript...








<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
30
Date d'inscription
dimanche 10 juin 2007
Statut
Membre
Dernière intervention
1 novembre 2007

a ba oui mais en faisant sa, j'apelle du PHP a partir du javascript.

Je crois que je vais pas me prendre la tête je vais tout simplement rajouter du php dans mon html et hop.

Je voulais utiliser javascript pour ne pas avoir a le faire sur toutes les pages (en utilisant un .js) mais apparement ce n'est pas possible.

Merci beaucoup pour ton aide.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
euh...



     echo 'adresse['.$numero.']="'.$donnees['url'].'";'
     echo 'alt['.$numero.']="'.$donnees['libelle'].'";';




comme ça, ça ira mieux...
<hr />


Cordialement            Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
>> rajouter du php dans mon html et hop.
    je vois que tu n'a pas parfaitement compris le php.
    on n'ajoute pas du php au html.
    c'est le php qui crée (génère) le html/javascript.


<hr />                    Cordialement        Bul     [mon Site]     [M'écrire]<hr />
Messages postés
30
Date d'inscription
dimanche 10 juin 2007
Statut
Membre
Dernière intervention
1 novembre 2007

j'ai ajouté le php et cela fonctionne néanmoins je suis obligé de faire la connexion, déconnexion et requete dans chaque page.

Tu m'as envoyé cela entre temps
echo 'adresse['.$numero.']="'.$donnees['url'].'";'
     echo 'alt['.$numero.']="'.$donnees['libelle'].'";';

est ce que cela veut dire que par javascript c'est possible même si je me sert de php pour générer les variables utilisées par javascript ???

C'est vrai que j'ai l'habitude d'utiliser le php a chaque fois que je veux dynamiser le tout mais cette fois ci j'aimerais un peu innover et surtout cela me permettrait de faire des economies de code.

Au final j'aimerais pouvoir apellé cette fonction qui serait stocké dans un .js avec pour argument le nombre d'image (boucle).

Merci d'avance pour ta réponse
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
>>est ce que cela veut dire
que par javascript c'est possible même si je me sert
>>de php pour
générer les variables utilisées par javascript ??


bien sûr...
mais : je crois que certaines choses t'échappent encore.

javascript et php, sont 2 langages différents,

ils ne tournent pas sur la même machine,
et pas en même temps.

se déroule sur la machine clientphp sur le serveur.



php "génère" du html, javascript ... et l'envoie vers le client,
il  se termine, plus rien n'existe sur le serveur.
l'utilisateur,coté client donc,  voit une page html ( avec javascript )
clique (par exemple) sur
un bouton
et l'action associée [ javascript ou html ] peut
appeller du code php,
peut-être celui qui l'a généré .




on ne peut pas utiliser du php dans le javascript... c'est lui qui le génère.

par exemple du php :
    <? $toto="a"; ?>
    <script type="text/javascript">
        alert("<?php echo $toto;?>");
    </script>
envoie vers le client :

    <script type="text/javascript">

        alert("a");
    </script>



dans le javascript, on ne peut pas appeler le php, il n'existe plus.
si on veut communiquer, il faut envoyer un formulaire, changer l'url, appeler avec Ajax...



ce que tu veux faire doit fonctionner... dans les mêmes conditions.

>>je suis obligé de faire la connexion, déconnexion et requete dans chaque page
    probablement. et alors ? tu pourrais mémoriser (session) mais
    s'il se passe 2 jours entre chaque page ? il vaut mieux agir comme ça.






<hr />



Cordialement            Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
30
Date d'inscription
dimanche 10 juin 2007
Statut
Membre
Dernière intervention
1 novembre 2007

donc si j'ai bien compris je dois générer grace à php le html qui sera utilisé par javascript.

Donc en fait c'est juste une galère de concaténation comme je les aime.

donc pour récapituler dans le head : le script et la connexion :

<?
mysql_connect("localhost", "root", "");
mysql_select_db("test");
?>
<script type="text/javascript">
var adresse = new Array();
    var alt = new Array();

function rempli()
{
    <?
    for ($numero=1;$numero<6;$numero++)
    {
        $reponse = mysql_query("SELECT libelle, url FROM images WHERE num='".$numero."'");
        $donnees = mysql_fetch_array($reponse);
      
        while ($donnees = mysql_fetch_array($reponse))
        {
            echo 'adresse['.$numero.']="'.$donnees['url'].'";';
             echo 'alt['.$numero.']="'.$donnees['libelle'].'";';
        }
    }
    ?>
}
    
function loadImage()
{
    rempli();
    for (i=1; i<6; i++)
    {
        var img = document.getElementById('image'+i);
        alert (adresse[i]);
        img.src=adresse[i];
        img.alt=alt[i];
    }
}
</script>

on load on lance Imageload()

et dans le body :

&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;

à la fin déconnexion

donc ceci ne marche pas, cela me sort une erreur ligne 34 (echo 'alt['.$numero.']="'.$donnees['libelle'].'";';)
, j'ai donc ajouté le ; qu'il me semble que tu avais oublié pour executer le echo

Maintenant la page se charge mais j'ai toujours undefined partout dans le scr et le alt.

la fonction généré est vide et aucun erreur dans la console.

Moi et la concaténation sa fait ... beaucoup ... ya t'il un crac dans le coin ???
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
tu es très gentil... mais tu me donnes toujours le php !
regardes et ... fournis le htm !
et lance Imageload() function qui n'existe pas ? loadImage() si.



<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />