gregorybts
Messages postés30Date d'inscriptiondimanche 10 juin 2007StatutMembreDernière intervention 1 novembre 2007
-
10 juin 2007 à 05:49
gregorybts
Messages postés30Date d'inscriptiondimanche 10 juin 2007StatutMembreDernière intervention 1 novembre 2007
-
15 juin 2007 à 00:13
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
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 11 juin 2007 à 09:39
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 )
gregorybts
Messages postés30Date d'inscriptiondimanche 10 juin 2007StatutMembreDernière intervention 1 novembre 2007 11 juin 2007 à 10:14
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']."';";
}
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 11 juin 2007 à 10:36
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.
gregorybts
Messages postés30Date d'inscriptiondimanche 10 juin 2007StatutMembreDernière intervention 1 novembre 2007 11 juin 2007 à 10:49
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+
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 11 juin 2007 à 11:01
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.
gregorybts
Messages postés30Date d'inscriptiondimanche 10 juin 2007StatutMembreDernière intervention 1 novembre 2007 11 juin 2007 à 11:45
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>
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.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 11 juin 2007 à 12:25
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.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 11 juin 2007 à 12:44
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 ....
?>
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 11 juin 2007 à 13:31
>> 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.
gregorybts
Messages postés30Date d'inscriptiondimanche 10 juin 2007StatutMembreDernière intervention 1 novembre 2007 12 juin 2007 à 02:41
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).
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 12 juin 2007 à 08:48
>>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.
gregorybts
Messages postés30Date d'inscriptiondimanche 10 juin 2007StatutMembreDernière intervention 1 novembre 2007 12 juin 2007 à 20:43
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);
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 ???
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 13 juin 2007 à 06:50
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.