logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[PHP] [PHP][JS][HTML] Skrypt galerii zdjęć - otwieranie zdjęć w nowym oknie za pomocą JS

Rolnik95 29 Cze 2009 19:24 2040 21
REKLAMA
  • #1 6719000
    Rolnik95
    Poziom 18  
    Posty: 339
    Pomógł: 6
    Ocena: 9
    Witam Pisze galerie zdjęć. Wiem że mogę zrobić za każdym razem nowy plik html i robić galerie albo w jakimś programie. Ja że lubię utrudniać sobie życie (w ten sposób się bardzo dużo nauczyłem) stworzyłem skrypt który ogólnie działa - wyświetla zdjęcia ale w JS chciałem zrobić żeby zdjęcie wyświetlało się w nowym oknie. Windows.open. Zamieszczam kod na wklej.org bo lepiej sie czyta: Kod żródłowy
    Wiem że kod ma sporo błędów ale tym się zajmę potem. Narazie galeria jest pod tym adresem: www.panelwebmastera.yoyo.pl/proba.php
    Problem jest chyba ze zmiennymi w Js tzn. Ze zmienną $adres. Obrazek się wyświetla ale ani okno się nie otwiera ani nic.

    Liczę na szybką pomoc.
  • REKLAMA
  • #2 6719326
    Dżyszla
    Poziom 42  
    Posty: 7074
    Pomógł: 1095
    Ocena: 224
    podejrzyj sobie kod u mnie: www.dzyszla.pl/galerie.php

    Kod JS jest na początku strony, a linki do funkcji znajdziesz, jak wyświetlisz jakiś zbiór zdjęć.

    I zapoznaj się z czymś takim, jak Konsola błędów w przeglądarce (Firefox lub IE8 mają bardzo fajną konsolę błędów)
  • REKLAMA
  • #4 6719433
    Dżyszla
    Poziom 42  
    Posty: 7074
    Pomógł: 1095
    Ocena: 224
    
    <script language="JavaScript" type="text/javascript">
    function GShow(nr)
    {
    	showwin=window.open('galerie/pic'+nr+'.html','img'+nr,
    			'directories=0,location=1,menubar=0,toolbar=0,resizable=1,scrollbars=1,status=1,left=0,top=0,width='+screen.availWidth+',height='+screen.availHeight);
    	showwin.opener=window;
    }
    </script>
    <a href="/galerie/pic537.html" onClick="GShow(537); return false;"><img src="galerie/natura/miniIMG_1775.jpg" alt="Piorun (3)" align="top" width="100" height="65"><br>Piorun (3)</a>
    Czego tu nie rozumiesz? W momencie onclick wywoływana jest funkcja, a dalsze operacje przerywane (return false). href jest określony tylko dla możliwości skopiowania linku oraz dla przeglądarek nie obsługujących JS.
    Wywołanie funkcji polega na przekazaniu jednego parametru - liczby całkowitej, która w funkcji zostaje wkomponowana w adres, który ma być załadowany w nowootartym oknie PopUp.

    Znalazłeś już konsolę błędów?
  • #5 6720712
    Rolnik95
    Poziom 18  
    Posty: 339
    Pomógł: 6
    Ocena: 9
    JA będę musiał przerobić ten kod na swoje potrzeby. Wyjdzie mi chyba to samo ale miejsza o to. Bo muszę wstawić adres jako $adres i wymiary jako $zdj[1] $zdj[0]. Czyli ten adres w href="" to jest adres strony ktora ma się otworzyć tak? <a href="/galerie/pic537.html" onClick="GShow(537); return false;"> To jest dla mnie troche dziwne. Ten w href="" to jest dla przegladarek ktore sa bez js?

    Dodano po 6 [minuty]:

    Jak zamiast tego numeru dać zmienna?

    Dodano po 4 [minuty]:

    Sprawdzałem ten skrypt odpowiednio go przerabiając i on przeniósł mnie do tego zdjęcia. Nie otworzył okna.

    Dodano po 1 [godziny] 17 [minuty]:

    IE daje Błąd: Brak definicji 'grafika'
  • #6 6722814
    Dżyszla
    Poziom 42  
    Posty: 7074
    Pomógł: 1095
    Ocena: 224
  • #8 6723204
    Dżyszla
    Poziom 42  
    Posty: 7074
    Pomógł: 1095
    Ocena: 224
    Może przeczytasz raz jeszcze, co napisałeś, bo wobec takiego stanowiska to ja zupełnie nie wiem, co odpowiedzieć. Skoro nie chcesz się uczyć, to dlaczego chcesz stosować? No i korzystasz czy nie korzystasz, umiesz, czy nie umiesz, a jak nie umiesz i nie chcesz się naumieć, to... Sorry, ale chyba wymiękam i nie jestem w stanie pomóc - to dla mnie zbyt skomplikowane :( Niech ktoś inny odpowie.
  • #9 6723212
    Rolnik95
    Poziom 18  
    Posty: 339
    Pomógł: 6
    Ocena: 9
    Nie ja chciałbym pomocy przy moim kodzie. Bo o niego tu chodzi. W nim jest problem. Mi nie chodzi o nowości po teraz wogole mi nie działa. Na początku działał ale z podanym wyraźnie adresem. A jak ten adres jest w $adres to on głupieje.

    Dodano po 57 [sekundy]:

    Zobacz co jest na dole w pasku www.panelwebmastera.yoyo.pl/proba.php

    Dodano po 16 [sekundy]:

    Teoretycznie wszystko gra
  • REKLAMA
  • #10 6723250
    Dżyszla
    Poziom 42  
    Posty: 7074
    Pomógł: 1095
    Ocena: 224
    No ja niestety też zgłupiałem... Umiesz odróżnić choć parametr liczbowy od tekstowego w JS? A w ogóle wiesz, czym jest funkcja i czym są parametry? Wiesz, jak rozróżnia się tekst od obiektów, zmiennych, słów kluczowych itp?
    Jednym słowem przeglądarki wyraźnie Ci mówią, że coś nie jest obiektem, a to coś jest traktowane jako obiekt, bo nie traktujesz jako parametru tekstowego, jakim ma być właśnie ten pierwszy parametr funkcji.
    (Olaboga, co by było, gdyby JS miała jawne typy zmiennych)
  • #11 6723320
    Rolnik95
    Poziom 18  
    Posty: 339
    Pomógł: 6
    Ocena: 9
    Parametru tekstowego od liczbowego odróżnić nie umiem i dlatego załozyłem ten temat a to forum chyab jest żeby się o takie rzeczy pytać. Nikt nie jest alfą i obegą. Czy w końcu mi pomożesz z tym moim kodem albo chociaż naprowadzisz?
  • #12 6723414
    Dżyszla
    Poziom 42  
    Posty: 7074
    Pomógł: 1095
    Ocena: 224
    Przecież już to zrobiłem. nie twierdzę, że każdy ma wiedzieć wszystko, ale to tak, jakbyś brał się za prowadzenie samochodu nie chcąc nawet się dowiedzieć, jak operuje się kierownicą.
  • #14 6723470
    Dżyszla
    Poziom 42  
    Posty: 7074
    Pomógł: 1095
    Ocena: 224
    Dokąd nie przerobisz kursu, co zajmie Ci 2-3 dni, to nawet nie będziesz rozumiał, o czym się pisze.
    
    <?
    	include ("include/them.php");
    //******************************************************************************
            $lang = $_GET['lang'];
    	$kat = $_GET['kat'];
    
            if ($lang == "eng") {	
    		$banner_url = "grafika/gallery.gif";
    		$tytul = "Our City";
    	
            }else{
    		$banner_url = "grafika/galeria.gif";
    		$tytul = "Nasze Miasto";
    	}
    //******************************************************************************
    ?>
    <html>
    <head>
      <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2" />
      <meta name="Description" content="[ Opis dokumentu ]" />
      <meta name="Author" content="[ Autor dokumentu ]" />
      <meta name="Generator" content="EdHTML" />
      <title>Galeria - Gallery</title>
    </head>
    <SCRIPT>
    <!--
    function displayWindow(url, width, height) {
            var Win = window.open(url,"displayWindow",'width=' + width + ',height=' + height + ',toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no' );
    }
    //-->
    </SCRIPT>
    <body style="margin-left: 15%; margin-top: 3%;  background:url(grafika/89.jpg);">
    
    <div class="calosc" style="width: 725;">
         <div class="banner" style="float: left; width: 725; height: auto; text-align: center;">
              <img src="<? echo $banner_url; ?>" alt="IMGallery" align="center" hspace="0" vspace="0"  />
         </div>
         <div class="head" style="float: left; width: 725; margin-top: 20; background-color: #343434;">
              <div class="menu" style="float: left;  height: 37; width: 725; background-color: #262626; color: #858585;">
                   <center><big><big><? echo $tytul; ?></big></big></center>
              </div>
              <div class="zawartosc" style="float: left; min-height: 200; width: 725; margin-bottom: 40; margin-top: 30;">
                   <?
                   //***************************************************************
    
                      if (empty($kat)){
                          $zapytanie = "SELECT * FROM galeria";    // Jeśli $kat jest puste pobiera wszystkie obrazy w tabeli galeria
                      } else {
                          $zapytanie = "SELECT * FROM galeria WHERE kategoria = '$kat'";
                      }
                      polacz();
                      $zapytanie = mysql_query($zapytanie);
                      if (!zapytanie) { echo 'Error. Sorry; '; }
    
                      $ile = mysql_num_rows($zapytanie);
                      if ($ile == 0 ){
                          if ($lang == "eng"){
                              echo 'Gallery is Empty.'; exit;
                          }else{
                              echo 'Brak zdjęć w Galerii'; exit;
                          }
                      }
                          while ($row = mysql_fetch_row($zapytanie)) {
    	
    	              $adres = $row[2];
    
                          $zdj=getimagesize($adres);
    
    
    
                          echo '<div style="width: 175; height: 185; float: left;">';
                          echo '<div class="igaleria" style="float: right; width: 150; height: 160; text-align: center; background-color: #555555; " >';
                          echo '<div class="iamge" style="width: 100%; float: left; height: auto; text-align: center; margin-top: 20;">';
                          echo '<A HREF="javascript:displayWindow(\'img_0261.jpg\',480,360)">';
                          echo '<img src="'.$adres.'" width="120" height="90" border="0"></a>';
    
                          echo '<hr width="80%" align="center">';
                          echo '</div>';
                          echo '<div class="opis_image" style="margin-top: 2; margin-bottom: 8; margin-left: 9; margin-right: 9;">';
                          echo ''.$row[3].'';
                          echo '</div>';
                          echo $zdj[0] ;
                          echo '<br>';
                          echo  $zdj[1];
                          echo '</div>';
                          echo '</div>';
    
                          }
    
                   //***************************************************************
                   ?>
    
    
    
    
    
              </div>
              <div class="stopka" style="float: left; text-align: center; width: 725; height: 27; vertical-align: text-bottom; ; color: #858585; background-color: #262626;">
                   Copyright &copy; 2009 <b>pa<big>B</big>las<big>NET</big></b> Wszelkie prawa zastrzeżone.
              </div>
         </div>
    </div>
    
    </body>
    </html>
  • REKLAMA
  • #16 6723566
    Dżyszla
    Poziom 42  
    Posty: 7074
    Pomógł: 1095
    Ocena: 224
    Poprawiłem. niestety przy Twoim zasobie wiedzy, nawet nie widzisz tego, o czym od kilku postów piszę i co w końcu sam zmieniłem :( Dalej uważasz, że nie chcesz się uczyć?
  • #17 6723581
    Rolnik95
    Poziom 18  
    Posty: 339
    Pomógł: 6
    Ocena: 9
    No dobra dzieki ale ja chcę adres ze zmiennej mieć. ($adres) Tak to wiem że działa ale ja muszę to mieć ze zmiennek.

    Dodano po 2 [minuty]:

    Ten kod nie działa jest błąd Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /var/www/sites/yoyo.pl/p/a/panelwebmastera/proba.php on line 82
  • #18 6723647
    Dżyszla
    Poziom 42  
    Posty: 7074
    Pomógł: 1095
    Ocena: 224
    Weź teraz - już nie zauważyłem, że to przez PHP jest wyświetlane.

    A to, że musisz mieć ze zmiennej to już możesz sam sobie zmienić. Nie będę tutaj od Hello Word zaczynał, bo chyba to się mija już z celem Forum, a staje się celem kursu PHP.
  • Pomocny post
    #20 6723719
    Dżyszla
    Poziom 42  
    Posty: 7074
    Pomógł: 1095
    Ocena: 224
    Napisałem - "weź teraz", ang.: "take now", co znaczy skopiuj kod jeszcze raz, gdyż dokonałem w nim poprawki. A swoją drogą takie błędy sam powinieneś wychwytywać...

    Dodano po 9 [sekundy]:

    Aha... Zapomniałem... PHP też się nie chcesz uczyć zapewne.
  • #22 6723822
    Dżyszla
    Poziom 42  
    Posty: 7074
    Pomógł: 1095
    Ocena: 224
    Po prostu wstaw w miejsce tekstu tą zmienną, wcześniej oczywiście wyłączając nieprzetwarzalny ciąg tekstowy (przerywając znakiem ' i konkatując znakiem . ) Tak, jak wstawiasz w każdym innym miejscu wartość zmiennej.

    A przy okazji - łatwiej by było używac ciągów parsowanych, gdzie można wprost zrobić echo "Moja zmienna ma wartość: $zmienna : )"; bez potrzeby przerywania ciągu tekstowego (czyli zamiast echo 'Moja zmienna ma wartosc '.$zmienna.' : )';

Podsumowanie tematu

✨ Dyskusja dotyczy problemu z otwieraniem zdjęć w nowym oknie za pomocą JavaScript w skrypcie galerii zdjęć napisanym w PHP i JS. Autor próbuje użyć funkcji window.open, przekazując adres zdjęcia jako zmienną PHP ($adres), jednak okno się nie otwiera, a w konsoli pojawiają się błędy, m.in. w Internet Explorerze "Brak definicji 'grafika'". Wskazano, że problemem jest nieprawidłowe przekazywanie parametrów do funkcji JS, zwłaszcza rozróżnienie między typem tekstowym a liczbowym. Zaproponowano przykład funkcji GShow(nr), która otwiera nowe okno z adresem generowanym na podstawie numeru zdjęcia, z obsługą zdarzenia onclick i zwróceniem false, aby zapobiec domyślnemu działaniu linku. Podkreślono konieczność poprawnego wstawiania zmiennych PHP do kodu JS, np. przez odpowiednie łączenie ciągów znaków i zmiennych w echo PHP. Autor otrzymał sugestie, aby nauczyć się podstaw JavaScript i PHP, by lepiej rozumieć mechanizmy działania skryptu. Wskazano także narzędzia do debugowania, takie jak konsola błędów w przeglądarkach Firefox i IE8. Ostatecznie autor uzyskał poprawiony kod, który działa lepiej, ale nadal wymaga dopracowania w kwestii dynamicznego wstawiania adresów zdjęć ze zmiennych PHP.
Wygenerowane przez model językowy.
REKLAMA