Passer des variables Javasceipt dans du php

Passer des variables Javasceipt dans du php - PHP - Programmation

Marsh Posté le 14-02-2006 à 14:29:12    

Salut à tous,
 
J'ai un petit Javascript qui fait diaporama: on clique sur Suivant ou Précédent, et ça va chercher l'image en question, les photos en question étant nommées photo1, photo2....donc c'est très facile. Voici le code:
 

Citation :

<html>  
<body>
 
<SCRIPT type='text/javascript'>
<!--";
image_courante = 1;
nombre_images = 4;    
function change_image(direction) {
image_courante = image_courante + direction;
if (image_courante < 1) { image_courante = nombre_images };
if (image_courante > nombre_images) { image_courante=1 };
document.photo.src = 'photos/photo' + image_courante + '.jpg';
}
// -->
</SCRIPT>
 
<IMG SRC="photos/photo1.jpg" name="photo">
  <table onmousedown="change_image(-1)">
   <td>PRECEDENTE</td>
  </table>
  <table onmousedown="change_image(1)">
   <td>SUIVANTE</td>
  </table>
 
</body>
</html>


 
 
Mais en plus je voudrais afficher avec chaque photo un commentaire. Ce commentaire je peux le récuppérer dans un fichier .txt via php, et l'insérer au script. (après une lutte acharnée et l'intervention d'un certain PhenXDesig n  :jap: ici: http://forum.hardware.fr/hardwaref [...] 1.htm#bas)
 
Oui mais voilà, la variable image_courante, qui est un nombre,  qui tourne dans le Javascript doit être récuppérée par le php pour aller chercher la bonne ligne dans le fichier .txt.
 
C'est possible?
 
:sol:  
 

Reply

Marsh Posté le 14-02-2006 à 14:29:12   

Reply

Marsh Posté le 14-02-2006 à 14:53:01    

http://forum-images.hardware.fr/th [...] herche.gif
recherche javascript dans le corp des message dans la catégorie php.
 
J'en ai marre de me répéter sur le sujet alors lit ça :
http://forum.hardware.fr/hardwaref [...] 4812-1.htm

Reply

Marsh Posté le 14-02-2006 à 17:25:03    

plutôt que faire un tableau foireux pour simuler les 2 boutons, fais 2 liens hypertextes et dans les url, tu passes le n° d'indice des images précédente et suivante.
ex d'url : www.monsite.php?NumImage=2
 
Après, dans php, tu utilise la variable $_GET["MonImage"]

Reply

Marsh Posté le 15-02-2006 à 17:28:03    

rufo a écrit :

plutôt que faire un tableau foireux pour simuler les 2 boutons, fais 2 liens hypertextes et dans les url, tu passes le n° d'indice des images précédente et suivante.
ex d'url : www.monsite.php?NumImage=2
 
Après, dans php, tu utilise la variable $_GET["MonImage"]


 
 
Salut rufo,  :hello:  
D'abord mes tableaux sont pas foireux du tout mais très jolis!! Je t'es épargné les images de fond et feuille de style pour alléger le code, mais l'effet bouton enfoncé/relaché me plait bien.
En tout cas, j'avais surtout pas envie de faire comme ton lien, tout pourri, qui ne renvoie vers rien....  :lol:  
 
Bon mais surtout, la question ne concernait ni l'image, ni le tableau:

Citation :

je voudrais afficher avec chaque photo un commentaire. Ce commentaire je peux le récuppérer dans un fichier .txt via php, et l'insérer au script. Oui mais voilà, la variable image_courante, qui est un nombre,  qui tourne dans le Javascript doit être récuppérée par le php pour aller chercher la bonne ligne dans le fichier .txt.


 
 
Désolé pour les redites omega2, mais merci pour les lien. C'est un peu pénible à gérer le mix php/Javascript, surtout lorsque les variables sont des chaines, parce qu'entre les côtes et doubles-côtes, ça devient vite l'enfer!!
 
Bon mais, j'insiste....  :sweat:  
 
 :sol:  
 
 

Reply

Marsh Posté le 15-02-2006 à 17:31:58    

ramkin a écrit :

En tout cas, j'avais surtout pas envie de faire comme ton lien, tout pourri, qui ne renvoie vers rien....


Tu plaisante là, je veux dire... tu le fais exprès???

Reply

Marsh Posté le 15-02-2006 à 17:39:10    

faut générer le code javascript qui va bien avec PHP stou ...
creer avec PHP un tableau javascript qui contient tes commentaires.
 
pense a faire marcher ton site sans javascript avec des liens images suivante et images precedentes ... le javascript, s'il est activé sur le navigateur, modifiant le comportement de ces liens pour faire un diaporama plus sympa.

Reply

Marsh Posté le 15-02-2006 à 18:27:46    

ramkin a écrit :

Salut rufo,  :hello:  
D'abord mes tableaux sont pas foireux du tout mais très jolis!! Je t'es épargné les images de fond et feuille de style pour alléger le code, mais l'effet bouton enfoncé/relaché me plait bien.
En tout cas, j'avais surtout pas envie de faire comme ton lien, tout pourri, qui ne renvoie vers rien....  :lol:  
 
Bon mais surtout, la question ne concernait ni l'image, ni le tableau:

Citation :

je voudrais afficher avec chaque photo un commentaire. Ce commentaire je peux le récuppérer dans un fichier .txt via php, et l'insérer au script. Oui mais voilà, la variable image_courante, qui est un nombre,  qui tourne dans le Javascript doit être récuppérée par le php pour aller chercher la bonne ligne dans le fichier .txt.


 
 
Désolé pour les redites omega2, mais merci pour les lien. C'est un peu pénible à gérer le mix php/Javascript, surtout lorsque les variables sont des chaines, parce qu'entre les côtes et doubles-côtes, ça devient vite l'enfer!!
 
Bon mais, j'insiste....  :sweat:  
 
 :sol:


 
 
bien sûr que si, il renvoie vers qq chose mon lien! Vers le script php chargé de récupérer le commentaire et d'afficher la bonne image + le commentaire. Grâce à la variable $_GET["MonImage"] (dont la valeur provient du lien hypertexte, des fois que tu n'aurais pas compris), tu connais l'image à afficher, donc tu sais quel commentaire il faut afficher. On peut imaginer un fichier txt (format csv par ex) qui contient le n° de l'image et le commentaire associé.

Reply

Marsh Posté le 16-02-2006 à 07:15:00    

rufo a écrit :

bien sûr que si, il renvoie vers qq chose mon lien! Vers le script php chargé de récupérer le commentaire et d'afficher la bonne image + le commentaire. Grâce à la variable $_GET["MonImage"] (dont la valeur provient du lien hypertexte, des fois que tu n'aurais pas compris), tu connais l'image à afficher, donc tu sais quel commentaire il faut afficher. On peut imaginer un fichier txt (format csv par ex) qui contient le n° de l'image et le commentaire associé.


non mais je crois qu'il veut dire que quand il clique sur ton lien, le site est introuvable  :pt1cable:

Reply

Marsh Posté le 16-02-2006 à 09:06:35    

D'où ma question :

dwogsi a écrit :

Tu plaisante là, je veux dire... tu le fais exprès???

Reply

Marsh Posté le 16-02-2006 à 09:27:03    

ramkin a écrit :

Salut à tous,
 
J'ai un petit Javascript qui fait diaporama: on clique sur Suivant ou Précédent, et ça va chercher l'image en question, les photos en question étant nommées photo1, photo2....donc c'est très facile. Voici le code:
[..]
Oui mais voilà, la variable image_courante, qui est un nombre,  qui tourne dans le Javascript doit être récuppérée par le php pour aller chercher la bonne ligne dans le fichier .txt.
 
C'est possible?
 
:sol:


Ben pas besoin de javascript ici, fais simplement des liens vers la page suivante et la page precedente, qui vont chercher dans le fichier ce que tu veux, et affiche la bonne image... comme on te l'a dit au dessus...
tu vas t'emmerder avec le JS, passe les numeros des images dans l'adresse genre images.php?id=12 et recupere avec $_GET['id'] dans PHP
(et pour le lien foireux: c'est vrai, tu plaisantes pas ?  :pt1cable: )

Reply

Marsh Posté le 16-02-2006 à 09:27:03   

Reply

Marsh Posté le 16-02-2006 à 11:35:39    

Djebel1 a écrit :

non mais je crois qu'il veut dire que quand il clique sur ton lien, le site est introuvable  :pt1cable:


 
ah, ouaih, quand même... Je l'avais pas compris comme ça, moi. :D  

Reply

Marsh Posté le 22-02-2006 à 18:52:27    

Salut tous,   :hello:  
 
Désolé pour l'abscence mais raison d'état oblige!!
 
Pour l'histoire du lien qui mène vers rien, faut pas chercher.....  :lol:  C'était juste pour rembarrer (gentiment...  :) ) rufo d'avoir insulté mes boutons... (Faut pas se moquer des boutons des gens...  :D )
 
Bon, alors, ceci étant dit, si j'ai fait du JS c'était pour faire des boutons agréables, avec deux images, par pur esthétisme.... Et à l'époque c'est tout ce que j'avais trouvé. Et je n'étais pas encore au php.
 
Je vais regarder du côté de cette "obscure" fonction $_GET(), comme vous le conseillez.
 
 :sol:

Reply

Marsh Posté le 22-02-2006 à 19:21:31    

j utilise pour ça un <span id=texte> (texte vide) </span>, et sur le lien tu fais (en gros):
 
onclick="document.texte.innerHTML='<SCRIPT url=&quot;http://siteweb/text'+numero_image+'.js&quot;></SCRIPT>';"
 
Quand tu clique sur le lien, ça lance un script javascript numéroté. ça fonctionne avec les dernières version de IE, NS, FF, & Opera.
 
Dans text1.js tu mets par exemple:
document.texte.innerHTML=Texte à afficher pour image 1
 
Tu peut rajouter du PHP dans tout ça si le texte provient d une BDD.
 

Reply

Marsh Posté le 22-02-2006 à 20:09:59    

nargy a écrit :

j utilise pour ça un <span id=texte> (texte vide) </span>, et sur le lien tu fais (en gros):
 
onclick="document.texte.innerHTML='<SCRIPT url=&quot;http://siteweb/text'+numero_image+'.js&quot;></SCRIPT>';"
 
Quand tu clique sur le lien, ça lance un script javascript numéroté. ça fonctionne avec les dernières version de IE, NS, FF, & Opera.
 
Dans text1.js tu mets par exemple:
document.texte.innerHTML=Texte à afficher pour image 1
 
Tu peut rajouter du PHP dans tout ça si le texte provient d une BDD.


 
 
Oui j'ai à peu près la même chose, au sujet du Onclick, mais le truc c'est que les textes accompagnant chaque photos se trouvent tous dans un même fichier.
 
D'ailleurs j'ai trouvé un truc qui marche. Je vous le mets. Attention, ça dépote...  :sweat:  
 
On imagine donc un fichier texte.txt conçu comme ça:

Citation :

photo 1: Ceci est le texte de la première photo.
photo 2: Ici le texte de la deuxième.
 
...etc...


 
 
IMPORTANT! Pas de retour à la ligne! Chaque texte doit être sur une seule ligne.
 

Citation :

<script src="../selection_impossible.js"></script>
 
<?php
echo "  
<SCRIPT type='text/javascript'>
<!--
 
image_courante = 1;
nombre_images = 40;
";
 
for ($numero_ligne = 0; $numero_ligne <= 39; $numero_ligne++) {
 $ligne = $tab[$numero_ligne];
 $ligne = substr($ligne, 10);
 $ligne = str_replace("\r\n", "\\r\\n", $ligne);                // pour echapper les retours a la ligne
 echo ("texte$numero_ligne = '$ligne';" );
};
echo "  
function change_image(direction) {
image_courante = image_courante + direction;
if (image_courante < 1) { image_courante = nombre_images };
if (image_courante > nombre_images) { image_courante=1 };
document.photo.src = 'photos/photo' + image_courante + '.jpg';
document.getElementById('texte').innerHTML=eval('texte' + image_courante);
}
// -->
</SCRIPT>
";
?>


 
La boucle for va créer les variable texte1, texte2.... qui seront insérer dans le scripts.
 
 
J'ai pas trouvé mieux.
 
 
mais effectivement, je commence à me pencher sur la question de faire ça sans JS.
 
 :sol:

Reply

Marsh Posté le 22-02-2006 à 20:22:59    

Ok, petit topo PHP:
1- fonction PHP utile pour lire un fichier texte:
file()
retourne une array, chaque ligne du fichier est stockée dedans. la 1ere ligne est dans array[0].
 
2- tu peut appeler un script PHP, genre gettext.php, qui s identifie comme un script JavaScript (voir doc sur php.net sur les mime types)
 
3- tu passe le numéro de la photo ainsi:
(javascript:) 'gettext.php?numero='+numero
 
4- dans gettext.php, la variable $numero contient le numero de la photo, donc:

Code :
  1. header("mime-type?: text/javascript" );
  2. $basededonnee=file('textes.txt');
  3. echo "document.texte.innerHTML='".$basededonnee[$numero-1]."';";


 
 
 
 

Reply

Marsh Posté le 22-02-2006 à 20:28:05    

Note: de toutes façon, tu as besoin aussi de faire une version sans javascript. ça permet de pouvoir accueillir tous les internautes dans de bonnes conditions. L utilisation de JS rends de toutes façon ton site plus attrayant. Tu peut ajouter un tag NOSCRIPT pour indiquer à l internaute qui a éteint son JS que ton site fonctionne très bien avec JS.

Reply

Marsh Posté le 22-02-2006 à 20:37:45    

Note2: j ai appelé la méthode que j ai décrite une JavaScript Frame. la frame est le span (ou un div), le contenu est un fichier javascript. ça permet de faire tout plein de trucs interactifs sur une page sans qu elle soit entièrement rechargée.
Tu peut même mettre une JSFrame dans un graphique Flash, afin d intégrer à la fois du javascript, du flash et du PHP sur une même page interactive (genre vidéos ou musiques interactive avec changement des couleur/polices/images de la page).

Reply

Marsh Posté le 23-02-2006 à 09:47:24    

nargy a écrit :

Note2: j ai appelé la méthode que j ai décrite une JavaScript Frame. la frame est le span (ou un div), le contenu est un fichier javascript. ça permet de faire tout plein de trucs interactifs sur une page sans qu elle soit entièrement rechargée.
Tu peut même mettre une JSFrame dans un graphique Flash, afin d intégrer à la fois du javascript, du flash et du PHP sur une même page interactive (genre vidéos ou musiques interactive avec changement des couleur/polices/images de la page).


 
les frames sont à éviter autant que possible (tout comme les iframes du reste). Pour les changements de couleur/polices/images, y'a truc qui s'appelle CSS et avec un peu de dhtml en +, on peut faire des pages très intéractives.
 
ramkin, $_GET["NomVariable"] n'est pas une fonction! C'est une variable super-globale de PHP tout comme $_POST, $_SESSION, $_SERVER... Franchement ramkin, pour faire ce que tu veux, t'as pas besoin de JS. Tu n'as qu'un fichier php (appelons le "galerie.php" ) qui affiche l'image et le commentaire (tiré d'un fichier texte dans ton cas) correspondant au numéro d'image passé en paramètre via la variable $_GET["NumImage"]. Au premier affichage, cette variable n'existe pas, faut donc tester :  

Code :
  1. if (isSet($_GET["NumImage"]))
  2. {
  3.     $NumImageAAfficher = $_GET["NumImage"];
  4. }
  5. else
  6. {
  7.     // Premier affichage
  8.     $NumImageAAfficher = 1;
  9. }
  10. // $CheminImageAAfficher va contenir un truc du genre C://www//MonSite//Images/Image5.jpg"
  11. $CheminImageAAfficher = "Chemin_et_nom_fichier".$NumImageAAfficher.".extension";


Ensuite, tu récupères le commentaire de l'image ayant pour n° celui contenu dans $NumImageAAfficher via la fonction file() (cf http://fr.php.net/manual/en/function.file.php)

Code :
  1. $ArrayContenuFichier = file("Chemin_du_fichier_texte" );


Ensuite, tu affiches ton code html et dedans tu mets un  

Code :
  1. echo "<img src=\"$CheminImageAAfficher\" title=\"Légende\" />";


Et 2 liens hypertextes pour l'image précédente et suivante (sauf si c'est la première image ou la dernière où là, tu mets qu'un lien)

Code :
  1. echo "<a href=\"galerie.php?NumImage=".($NumImageAAfficher - 1)."\" title=\"Image précédente\">Précédente</a>
  2. <a href=\"galerie.php?NumImage=".($NumImageAAfficher + 1)."\" title=\"Image suivante\">Suivante</a>";


Là, tu mets le commentaire :

Code :
  1. echo $ArrayContenuFichier[$NumImageAAfficher - 1]; // On utilise le n° de l'image comme indice pour afficher le bon commentaire, le -1 c'est parce que le tableau commence à l'indice 0


Et enfin, tu mets la fin de ton code html et ton script galerie.php est complet.

Reply

Marsh Posté le 23-02-2006 à 11:30:53    

Citation :


les frames sont à éviter autant que possible (tout comme les iframes du reste). Pour les changements de couleur/polices/images, y'a truc qui s'appelle CSS et avec un peu de dhtml en +, on peut faire des pages très intéractives.  


 
C est pas une vraie frame, mais une manière d inclure un script javascript customizable interactivement dans une page.
 
Le CSS peut être modifié par javascript.
 
La différence entre utiliser un lien vers une page PHP et un javascript, c est que la page n a pas besoin d être rechargée avec JS. Ça permet entre autres des économies de bande passante, et de mettre une galerie photo en bas de page. L utilisation de JS, bien que rendant la page plus confortable pour l internaute, ne dispense pas de prévoir la version sans javascript.
 

Reply

Marsh Posté le 23-02-2006 à 12:01:09    

nargy a écrit :

Citation :


les frames sont à éviter autant que possible (tout comme les iframes du reste). Pour les changements de couleur/polices/images, y'a truc qui s'appelle CSS et avec un peu de dhtml en +, on peut faire des pages très intéractives.  


 
C est pas une vraie frame, mais une manière d inclure un script javascript customizable interactivement dans une page.
 
Le CSS peut être modifié par javascript.
 
La différence entre utiliser un lien vers une page PHP et un javascript, c est que la page n a pas besoin d être rechargée avec JS. Ça permet entre autres des économies de bande passante, et de mettre une galerie photo en bas de page. L utilisation de JS, bien que rendant la page plus confortable pour l internaute, ne dispense pas de prévoir la version sans javascript.


 
 
Pour économiser la bande passante, y'a AJAX (pas le produit de nettoyage, hein!). Et puis parler d'économiser de la bande passante en utilisant un js, ça suppose que tu précharge tous les commentaires et les images, non? Donc pas terrible comme économie :/

Reply

Marsh Posté le 23-02-2006 à 12:08:46    

rufo > Ca dépend comment il prévoit ça.
L'idéal serait de récupérer une page faite de maniére à ce qu'elle fonctionne sans javascript. De plus, il faudrait que cette page ne contienne au départ que les infos de l'image en cours (commentaire compris) et que ca soit un javascript qui aille chercher les adresses et commentaires des 3-4 images autour de celle affiché et que ce même javascript une fois récupérer les infos change les liens "image précédante/image suivante" pour appeller une fonction javascript qui utilisera ces informations là. Evidement, si le visiteur demande à afficher une image au bord de la zone de sélection, on demandera les infos des images suivantes ou précédante sans effacer les infos déjà reçu.
 
En faisant comme ça, il économisera beaucoup de bande passante par rapport à la récupération de plusieurs pages et même si on ne demande qu'une seule image, on ne perdra pas grand chôse et la perte sera peut être compensé par le premier visiteur qui en demandera deux.


Message édité par omega2 le 23-02-2006 à 12:09:40
Reply

Marsh Posté le 23-02-2006 à 16:38:38    

omega2> excellente solution. j allais le proposer ;D

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed