IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Fonction images => bizarre


Sujet :

JavaScript

  1. #1
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 42
    Par défaut Fonction images => bizarre
    Bonsoir,

    je souhaite donner la possibilité à un administrateur de changer les images de son site au moyen d'un plan, il faut donc que le src et alt de chaque image soit récupéré à partir d'une base de donnée.

    En fait, chaque image a un numéro attribué virtuellement sur le site (j'ai fais un paln avec des carrés en fait). Dans la partie admin, l'utilisateur choisit un numéro et hop choisit une image.

    Voici donc ma fonction javascript permettant de charger dynamiquement les images. Cette fonction est destinée à être en .js par la suite car apellé sur toutes les pages (d'ailleurs, il n'y a pas le même nombre d'image sur toutes les pages, vous avez une idée pour ça ?)

    <script language="javaScript">
    function src(numero){
    <?
    $reponse = mysql_query("SELECT libelle, url FROM images WHERE num='".numero."'");
    $donnees = mysql_fetch_array($reponse)
    ?>
    var adresse=<? echo $donnees['url'];?>
    alert (adresse);
    return adresse;
    }

    function alt(numero)
    {
    <?
    $reponse = mysql_query("SELECT libelle, url FROM images WHERE num='".numero."'");
    $donnees = mysql_fetch_array($reponse)
    ?>
    var libelle=<? echo $donnees['libelle'];?>
    alert (libelle);
    return libelle;
    }

    function loadImage()
    {
    for (i=1; i<6; i++)
    {
    alert (i);
    img = document.all("image"+i);
    img.src=src(i);
    img.alt=alt(i);
    }
    }
    </script>

    et voici la bout de code html

    <body onload="loadImage();">
    <p align="center">
    <img src="" name="image1" width="155" height="116" alt="">&nbsp;&nbsp;&nbsp;
    <img src="" name="image2" width="155" height="116" alt="">&nbsp;&nbsp;&nbsp;
    <img src="" name="image3" width="155" height="116" alt="">&nbsp;&nbsp;&nbsp;
    <img src="" name="image4" width="155" height="116" alt="">&nbsp;&nbsp;&nbsp;
    <img src="" name="image5" width="155" height="116" alt="">

    En fait ce sont 5 images qui sont en haut de ma page.

    J'ai cherché mais je trouve ces fonctions pas si mal faîtes que ça. Je vois pas pkoi cela ne marche pas.

    Le hic c'est que même les alert ne s'affiche pas donc je comprends pas trop

    Mes tests se font sous eaysphp et la bdd est correcte.

    J'espère que quelqu'un pourra m'aider

    Cordialement

  2. #2
    LEK
    LEK est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    715
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 715
    Par défaut
    Ou la la! Il y a un sérieux problème de compréhension : le code php est exécuté serveur il n'est donc plus disponible plus tard lorsque le code javascript s'exécute sur le poste client. Fait ce test : tu affiche ta page et regarde le source : il n'y a pas de php disponible, dans cette situation est ce que tu vois comment la fonction src ou alt pourraient récupérer quoi que ce soit en base...
    La solution la plus simple si tu n'as pas un million d'entrées en base est de générer des tableaux contenant la liste des alt et source de tes images :

    <script>
    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);
    ...
    là tu fetch sur tes résultats : ... while...

    //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()
    {
    for (i=1; i<6; i++)
    {
    alert (i);
    img = document.all("image"+i);
    img.src=adresse[i];
    img.alt=alt[i];
    }
    }
    </script>


    Pour aller plus loin, tu aurais pu avoir si tu le voulais absolument un fonctionnement qui ressemble à celui que tu avais imaginés précédemment : pour cela on utilisait dans le temps des techniques qui s'appelaient remote scripting, avec des procédés que tu trouveras aujourd'hui sous le nom Ajax : elle repose sur l'appel d'un objet propriétaire du navigateur qui est capabale d'ouvrir un canal de communication vers une page de ton site web depuis javascript : cela permet de faire transiter des informations entre ta page et le serveur.
    Simple autre remarque le code que tu as pondus n'est pas trés portable,marchera sous ie et ... c'et tout. (notamment à cause du document.all au lieu de document.getElementById )...
    Bonne continuation

  3. #3
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 42
    Par défaut
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    <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

    <img src="" id="image1" width="155" height="116" alt="">

    Moi ça me parait pas mal pourtant !!!

Discussions similaires

  1. [Lazarus] Fonction INT : résultat bizarre
    Par Alea46 dans le forum Lazarus
    Réponses: 14
    Dernier message: 10/11/2010, 10h05
  2. fonction image & blanc
    Par hanou88 dans le forum MATLAB
    Réponses: 6
    Dernier message: 03/05/2009, 18h42
  3. Appel d'une fonction en mode bizarre
    Par zarbiman dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/11/2007, 14h35
  4. [GD] Génération d'image - Texte bizarre qui s'affiche
    Par fadeninev dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 15/06/2006, 15h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo