Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Połączenie PHP z JS
Forum PHP.pl > Forum > PHP
klakier1991
Witam,
Z góry piszę, że jestem początkujący zacząłem przygodę z PHP około 3tyg temu.
Stworzyłem galerię w PHP i teraz chciałbym użyć jakiejś galerii z JavaScriptu.
Niestety napotkałem na problem mianowicie, Galeria z .JS wczytuje zdjęcia na sztywno a ja chciałbym by były pobierane dynamicznie z
galerii stworzonej już wcześniej w PHP lub z bazy danych.
Galeria w PHP wygląda tak, że z bazy danych pobiera wszystkie odnośniki do zdjęć danego użytkownika i wypisane są za pomocy pętli.
  1. for ($i=0; $i <$num_results; $i++) {
  2. $row = mysql_fetch_array($result);
  3.  
  4. $photolocation = 'http://www.raceonline.cba.pl/images/'.$id.'/'.$row['cover'];
  5.  
  6. $photo = "<img src='$photolocation' />";
  7.  
  8. print " ";
  9.  
  10.  
  11. print $photo;
  12.  
  13. }


$id = id użytkownika
$row['cover'] = odnośnik do zdjęcia np. 23.jpge

a JavaScript wygląda tak

var JaS = {
// Customization parameters
imagePath : "pictures/",
images : [

["1.jpg", "Bat bridge in Austin", "Bridge"],
["2.jpg", "Blossoming tree", "Tree"],
["3.jpg", "Bat bridge from below", "Bridge"],
["4.jpg", "Birds", "Birds"]

],

Chciałbym stworzyć galerię JS by była dynamiczna w zależności na jakiego użytkownika się wchodzi stąd moje pytanie czy takie coś jest możliwe.
Podejrzewam, że trzeba jakoś zaincludować PHP do JS lub na odwrót.
Proszę o jakieś wskazówki z góry dzięki.
CuteOne
Mały przykład:

  1. <?php
  2.  
  3. $img = 'image.jpg';
  4.  
  5. echo '<script type="text/javascript">
  6. var img = "images/'.$img.'";
  7. alert(img);
  8. </script>';
  9. ?>
klakier1991
Przeczytałem kilka postów na ten temat ale żaden nie był do końca opisany.
Mogli byście mnie naprowadzić jak zrobić by zmienna z PHP została odczytana w pliku .js
Próbowałem pokombinować ale w ogóle nie znam się na języku JavaScript.
Z tego co przeczytałem to z PHP wysyłam zmienną do pliku po przez:
  1. echo "<script type="text/javascript"></script>

ale gdzie wpisuje nazwę do jakiego pliku podejrzewam że tak:


  1. echo "<script type="text/javascript src="gdzies.js"></script>

Ale nie mam zielonego pojęcia jak odebrać i wyświetlić tą zmienną w pliku .js
Nie prosił bym o pomoc gdybym znał coś z języka JS dopiero jestem w trakcie uczenia PHP.
kulmen
Po pierwsze języki PHP i javascript to byty z dwóch różnych planet - PHP działa wyłącznie po stronie serwera javascript po stronie klienta. Dlatego nie istnieje możliwość bezpośredniego przekazywania sobie zmiennych przez te języki. Jednak dzięki temu, że PHP generuje po prostu kod do wyświetlenia przez przeglądarkę, jak również dzięki temu, że javascript może wywołać dowolny adres, istnieją pewne formy komunikacji. Ale na pewno nie możesz zrobić jednej rzeczy - do pliku javascript nie da się przekazać czegokolwiek z PHP. W drugą stronę OK - możesz w pliku PHP wygenerować kod javascript. W pliku js masz:

var JaS = {
// Customization parameters
imagePath : "pictures/",
images : [

["1.jpg", "Bat bridge in Austin", "Bridge"],
["2.jpg", "Blossoming tree", "Tree"],
["3.jpg", "Bat bridge from below", "Bridge"],
["4.jpg", "Birds", "Birds"]

],
....
}

czyli obrazki znajdują się w własności images obiektu JaS. Zatem w pliku PHP możesz wygenerować kod javascript zmieniający tą własność np:
  1. <script type="text/javascript">
  2. JaS.images = [ <?php foreach($obrazki as $o): ?>
  3. ["<?php echo $o['nazwa_pliku']; ?>", "<?php echo $o['opis_pliku']; ?>", "<?php echo $o['atrybut_alt']; ?>"],
  4. <?php endforeach; ?>
  5. ];


Gdzie $obrazki to dwuwymiarowa tablica PHP zawierająca nazwy, opisy itp. obrazków, które chcesz wyświetlić. Aby nie komplikować kodu darowałem sobie sprawdzanie czy jest to ostatni element tablicy, Ty jednak musisz to zrobić bo wygenerowany kod będzie miał postać:

["aaa1","bbb1", "ccc1"],
["aaa2","bbb2", "ccc2"],
["aaa3","bbb3", "ccc3"],
...

czyli będzie miał przecinek po każdym elemencie tablicy. Tak być powinno poza ostatnim elementem. Jeśli po ostatnim elemencie też będzie przecinek, kod javascript nie będzie Ci działał.
klakier1991
Wielkie dzięki, pokombinowałem troszkę, zrobiłem tak jak napisałeś ale nie mam pojęcia jak teraz wyświetlić tą galerię mam plik html
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
  2.  
  3. <html lang="en">
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  5. <title>JaS - JavaScript Slides</title>
  6. <script type="text/javascript" src="js/jas.js"></script>
  7. <style type="text/css">
  8. @import url("css/jas.css");
  9. </style>
  10. <!--[if lt IE 7]>
  11. <link rel="stylesheet" href="css/ie.css" type="text/css">
  12. <![endif]-->
  13. </head>
  14.  
  15.  
  16. <div id="container">
  17.  
  18. <h1>JaS</h1>
  19.  
  20. <div id="jas-frame">
  21. <div id="jas-tags">
  22. <h3>Tags:</h3>
  23. <p>
  24. <input type="checkbox" id="jas-select-all-tags" checked="checked">
  25. <label for="jas-select-all-tags">Select all</label>
  26. </p>
  27. </div>
  28. <div id="jas-container">
  29. <img id="jas-image" src="images/1.jpg" alt="">
  30. <h2 id="jas-image-text">Bat bridge in Austin</h2>
  31. </div>
  32. </div>
  33.  
  34. <ul id="navigation-controls">
  35. <li><a id="previous-image" href="index.htm">Previous</a></li>
  36. <li id="image-counter">1 / 12</li>
  37. <li><a id="next-image" href="index.htm">Next</a></li>
  38. <li class="slideshow-item">
  39. <a id="start-slideshow" href="index.htm">Start slideshow</a>
  40. <a id="stop-slideshow" href="index.htm">Stop slideshow</a>
  41. </li>
  42. </ul>
  43.  
  44. </body>
  45. </html>

i nie mam pojęcia jak to połączyć przydały by się jakieś wskazówki
everth
Cytat
Po pierwsze języki PHP i javascript to byty z dwóch różnych planet - PHP działa wyłącznie po stronie serwera javascript po stronie klienta

Ehe, źródła poproszę.

@klakier1991
Zakoduj to funkcją json_encode() i osadzaj bezpośrednio w JS. JSON to praktycznie kod JS. Nie będziesz musiał użerać się z przecinkami i klamrami.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.