Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sterowanie wyświetlaniem obrazków z bazy danych
Forum PHP.pl > Forum > Po stronie przeglądarki
defrost
Umieściłem to tutaj, gdyż uważam, że za całość odpowiada javascript.

Mam taki skrypt w sekcji HEAD:
  1. <script LANGUAGE="JavaScript">
  2. browserName = navigator.appName;
  3. browserVer = parseInt(navigator.appVersion);
  4. ns3up = (browserName == "Netscape" && browserVer >= 3);
  5. ie4up = (browserName.indexOf("Microsoft") >= 0 && browserVer >= 4);
  6. function doPic(imgName) {
  7. if (ns3up || ie4up) {
  8. imgOn = ("" + imgName);
  9. document.mainpic.src = imgOn;
  10. }
  11. }

W sekcji BODY umieściłem taki kod:
  1. <?php
  2.  
  3. include ("config.php");
  4. mysql_connect ("$host", "$user", "$pass" ) or die ("Brak polączenia z MySQL.");
  5. mysql_select_db ("$db") or die ("Brak połączenia z bazą danych.");
  6. $wynik = mysql_query ("select * from tabela");
  7.  
  8. while ($rekord = mysql_fetch_array ($wynik)) {
  9.  
  10. echo "<table border=0><tr><td><img name=mainpic src=".$rekord[5]." width=250 height=250 border=0></td>";
  11. if ($rekord[5] == "no_foto.gif" ) {
  12. $pikczer1 = "blank.gif";
  13. } else {
  14. $pikczer1 = "".$rekord[5]."";
  15. }
  16. if ($rekord[6] == "no_foto.gif") {
  17. $pikczer2 = "blank.gif";
  18. } else {
  19. $pikczer2 = "".$rekord[6]."";
  20. }
  21. if ($rekord[7] == "no_foto.gif") {
  22. $pikczer3 = "blank.gif";
  23. } else {
  24. $pikczer3 = "".$rekord[7]."";
  25. }
  26. echo "
  27. <td><p>
  28. <a href=java script:doPic('$pikczer1');><img src=pic/1.gif width=20 height=20 border=0></a><br />
  29. <a href=java script:doPic('$pikczer2');><img src=pic/2.gif width=20 height=20 border=0></a><br />
  30. <a href=java script:doPic('$pikczer3');><img src=pic/3.gif width=20 height=20 border=0></a></p></td>
  31. </tr>
  32. </table>
  33. ";
  34. }
  35. ?>

Problem polega na tym, że w momencie gdy w bazie znajduje się tylko jeden produkt z 3 obrazkami cały skrypt działa prawidłowo. Niestety w momencie gdy pojawiają się kolejne produkty ze zdjęciami skrypt przestaje działać.

Domyślam się, że powodem jest funkcja (?) doPic, która poprostu nie może obsługiwać więcej niż jednego produktu. W momencie, gdy pojawia się kilka produktów i wszystkie zdjęcia odwołują się w ten sas sposób skrypt nie wykona żadnej operacji.

Tak więc moja prośba jest taka: jeżeli ktoś z Was wie w jaki sposób można zrobić aby produkty, które są w bazie mogły być wyświetlane prawidłowo będę wdzięczny.

Jako uzupełnienie dodam, że baza danych ma takie pola: id, nazwa, opis, foto1, foto2, foto3.

Dzięki za wszelkie pomysły.
webik
Nie działa ponieważ powinienes nazwać inaczej obrazek główny "mainpic" w kolejnych produktach ... poniewaz przy wielu produktach istnieje wiele obiektów "mainpic" no i Java Script nie wie do którego sie odwołujesz....

Potrzeba wprowadzic drugi paramter do tej funkcji (doPic - miales racje ze to ona częsciowo winna) który bedzie sie odnosił do nr produktu i w tej funkcji skrypt bedzie za pomoca tego drugiego paraqmetru bedzie odwoływał sie do obiektu np. zapomocą funkcji GetElementhById, w skrypcie musisz tez dodac numerowanie głównego obrazka (np. mainpic1, mainpic2, mainpic3 itd.)

mam nadzieje ze w miare jasno napisałem

nie podaje gotowego rozwiązania.. ponieważ nie od tego jest forum ... chociaz ostatecznie moge podać gotowy kod.. jezeli sam nie znajdziesz rozwiazania.. pisz a wkleje
defrost
webik ponieważ nie bardzo łapię o co chodzi w javascript przedstawiam Ci kombinację jaką zrobiłem. Napisz mi tylko czy dobrze to wykombinowałem smile.gif

Tak czy inaczej działa tak jak właśnie chciałem smile.gif
  1. <?php
  2. include ("config.php");
  3. mysql_connect ("$host", "$user", "$pass" ) or die ("Brak polączenia z MySQL.");
  4. mysql_select_db ("$db") or die ("Brak połączenia z bazą danych.");
  5. $wynik = mysql_query ("select * from tabela");
  6.  
  7. while ($rekord = mysql_fetch_array ($wynik)) {
  8.  
  9. echo "<script LANGUAGE=\"JavaScript\">";
  10. echo "browserName = navigator.appName;";
  11. echo "browserVer = parseInt(navigator.appVersion);";
  12. echo "ns3up = (browserName == \"Netscape\" && browserVer >= 3);";
  13. echo "ie4up = (browserName.indexOf(\"Microsoft\") >= 0 && browserVer >= 4);";
  14. echo "function doPic".$rekord[0]."(imgName) {";
  15. echo "if (ns3up || ie4up) {";
  16. echo "imgOn = (\"\" + imgName);";
  17. echo "document.mainpic".$rekord[0].".src = imgOn;";
  18. echo "}}</script>";
  19.  
  20. echo "<table border=0><tr><td><img name=mainpic".$rekord[0]." src=".$rekord[5]." width=250 height=250 border=0></td>";
  21. if ($rekord[5] == "no_foto.gif" ) {
  22. $pikczer1 = "blank.gif";
  23. } else {
  24. $pikczer1 = "".$rekord[5]."";
  25. }
  26. if ($rekord[6] == "no_foto.gif") {
  27. $pikczer2 = "blank.gif";
  28. } else {
  29. $pikczer2 = "".$rekord[6]."";
  30. }
  31. if ($rekord[7] == "no_foto.gif") {
  32. $pikczer3 = "blank.gif";
  33. } else {
  34. $pikczer3 = "".$rekord[7]."";
  35. }
  36. echo "
  37. <td><p>
  38. <a href=java script:doPic".$rekord[0]."('$pikczer1');><img src=pic/1.gif width=20 height=20 border=0></a><br />
  39. <a href=java script:doPic".$rekord[0]."('$pikczer2');><img src=pic/2.gif width=20 height=20 border=0></a><br />
  40. <a href=java script:doPic".$rekord[0]."('$pikczer3');><img src=pic/3.gif width=20 height=20 border=0></a></p></td>
  41. </tr>
  42. </table>
  43. ";
  44. }
  45. ?>

Zwróciłem uwagę na to co napisałeś oczywiście. Wrzuciłem javascript do sekcji body między znaczniki php i dzięki temu mogłem dodać numerowanie głównego obrazka oraz numerowanie funkcji doPic.
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.