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 :

variable javascript dans tableau php


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 31
    Par défaut variable javascript dans tableau php
    Bonjour

    mon problème est le suivant :
    je dispose d'un tableau associatif php et j'aurai voulu savoir si lors de l'exécution d'une fonction java script il était possible de faire passer une variable java script comme indice.

    Je vous joint le code si dessous pour être plus clair :

    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
    <div id='gallery'>
     
     
    		<script language="javascript">
     
    		function ChangeImage(i) {
     
    			 var image = "<?php $tableau["+i+"]['nomFichier']; ?>"
    			 alert(image)
    			 alert(i)
    		}
    		</script> 
     
     
     
    <?php 
    echo "<em id='miniImages'>";	
     
    if(isset($_GET['page']) )
    {
    		$i = $_GET['page'];
    }
    else // Sinon
    {
         $i= 0;  
    }
    $j = 0;
    while ($j <= $nb && $i <= $total-1 ){
    		echo "
    					<img id='img' onClick=\"ChangeImage(".$i.");\" src='upload/".$images[$i]['nomFichier']."' WIDTH=50px  />&nbsp;";
    $j++;
    $i++;
    }
    la fonction ChangeImage est bien appelé car le alert(i) me retourne bien l'indice (il ne marche que quand les deux première ligne de la fonction sont en commentaire).

    J'ai lus dans la fac qu'on pouvait convertir un tableau associatif php en tableau javas sript mais cela semblait difficile voila pourquoi je demande si une solution de ce genre existe.

    Merci d'avance

  2. #2
    Membre émérite Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Par défaut
    Bonjour,

    le PHP s'execute avant que ta page ne soit chargée.
    Le Javascript apres.

    Donc impossible de lancer une instruction PHP dans ta fonction en Javascript.
    Pour t'en persuader, regarde le code source de ta page HTML générée.

    Si tu veux utiliser un tableau existant en PHP dans ton code Javascript, il faudra convertir ton tableau PHP en Javascript lors du chargement de ta page, donc comme c'est dit dans la FAQ.
    Tu trouveras également plein de posts là dessus en utilisant la fonction Rechercher

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 31
    Par défaut
    d'accord merci de répondre si vite à mon interrogation.

    Je verrais ça cette après midi en espérant que ça fonctionne.

  4. #4
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Bonjour,

    Est-ce que la boucle while qui génère les balises img
    avec un id="img" ne risque pas de poser problème ?
    L'attribut id est censé être unique sur une page.

    Personnellement,
    je ne connais pas la finalité de la fonction changeImage(),
    mais j'aurais fait en sorte que la boucle while génère des balises img
    avec des attributs id numérotés (img0,img1,...),
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while ($j <= $nb && $i <= $total-1 ){
      echo '<img id="img'.$i.'" onClick="ChangeImage('.$i.');" src="upload/'.$images[$i]['nomFichier'].'" width="50px"  />&nbsp;';
      $j++;
      $i++;
    }
    Ainsi, dans la fonction changeImage(i),
    j'accèderais aux attributs de ces balises
    grace à la méthode document.getElementById.
    Par exemple, pour avoir le nom du fichier image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('img'+i).src;
    La construction d'un tableau javascript ne serait alors peut-être plus nécessaire.

    Fred

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 31
    Par défaut
    en fait c'est une galerie la boucle sert à généré des miniatures des images de la galerie et la fonction changeImage sert a récupéré l'indice de l'image sur laquelle on clic pour l'afficher (avec diverse info comme sont nom, description ...)

    si tu pense que ton idée est toujours une bonne option pourrais tu l'expliquer un peu plus je ne l'ai pas totalement compris


    edit : j'ai utilisé json et ça marche malheureusement lorsque je fais un document.write il me change de page pour m'afficher ce qu'il faut sur une page blanche.

  6. #6
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Je pensais à quelque chose de ce type :
    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
    36
    37
     
    <script language="javascript">
    function ChangeImage(i) {
    	 var image = document.getElementById('img'+i);
       document.getElementById('image').src=image.src;
       document.getElementById('image').alt=image.alt;
       document.getElementById('no').innerHTML=i;
       document.getElementById('titre').innerHTML=image.title;
    }
    </script> 
     
    <div  style="text-align:center;">	
    <h1>Miniatures avec toutes les infos nécessaires<br/>(nom, description)</h1> 
    <p>
    <?php 
    $images = array(
      array('oiseau','magnifique photo d\'un oiseau'),
      array('chien','magnifique photo d\'un chien'),
      array('chat','magnifique photo d\'un chat'),
      array('lapin','magnifique photo d\'un lapin')
      );
    foreach ($images as $iImg => $image){
    ?>
    <img id="img<?php echo $iImg; ?>" onClick="ChangeImage(<?php echo $iImg; ?>);" src="upload/<?php echo $image[0].'.png'; ?>" alt="<?php echo $image[0]; ?>"  title="<?php echo $image[1]; ?>" width="50px" style="cursor:pointer;" />&nbsp;
    <?php 
    }
    ?>
    </p>
     
     
     
    <h1>Agrandissement de l'image choisie avec sous-titrage<br/>(Mis à Jour par la fonction ChangeImage())</h1>
    <h2><img id="image" src="" alt="" width="200px" /></h2>
    <p style="background-color:yellow;">Image n° <span id="no"></span> - Titre = <span id="titre"></span></p>
    </div>
     
    <script type="text/javascript">ChangeImage(0);</script>
    Fred

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 31
    Par défaut
    Je viens d'esseyer vite fait ta solution mais cela ne marche pas (je l'ai surment fais trop vite)

    Comme dis plus haut j'arrive a avoir mes valeurs avec le Json seul bemol je n'arrive pas a modifier la valeur du background de la balise div galleri

  8. #8
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Pour mettre à 'blue' la valeur du background de la balise div gallery
    tu dois pouvoir essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('gallery').style.backgroundColor='blue';
    Fred

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 31
    Par défaut
    J'ai esseyer ça mais ça ne marche pas je continue de chercher.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("gallery").style.backgroundImage = 'upload/'+image

  10. #10
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("gallery").style.backgroundImage = 'url(upload/'+image+')';
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 31
    Par défaut
    aaaah ça marche merci beaucoup j'avais esséyé avec url mais j'avais du me tromper dans un ' .

    Je passe en résolu un grand merci encore vous m'enlever une grosse épine du pied

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/04/2007, 09h12
  2. [PHP-JS] mettre une variable javascript dans une variable php
    Par Mounr dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/04/2007, 09h09
  3. [PHP-JS] comment recupérer des variables javascript dans un fichier php
    Par domino_dj dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/02/2007, 11h46
  4. [PHP-JS] recuperer une variable javascript dan php
    Par hammag dans le forum Langage
    Réponses: 2
    Dernier message: 07/08/2006, 14h00
  5. Utiliser variable Javascript dans du PHP
    Par phpaide dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 23/05/2006, 15h14

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