Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] przekazywanie prze GET nie działa
Forum PHP.pl > Forum > Przedszkole
bialko0019
Witam.

Mamtaki skrypt :

  1. <?
  2.  
  3. /*****************************************************************************
  4. *  Skrypt galerii v1.0                                                       *
  5. *  Autor: Błażej Gruszka "Sn!pe"                                             *
  6. *  Date: 2006-01-04                                                          *
  7. *  www.snipe.ekipa.be                                                        *
  8. *  www.ekipa.be                                                              *
  9. *                                                                            *
  10. *  Skrypt potrzebuje biblioteki GD aby dzialal poprawnie                     *
  11. *  Opisy powinny znajdowac sie w pliku images.txt w danym katalogu,          *
  12. *  w osobnych linijkach w formacie: obrazek1.jpg|Jakis opis do obrazka       *
  13. *                                                                            *
  14. *  Jesli chcesz uzywac tego skryptu zostaw maly buttonik na stronie          *
  15. *  z adresem do strony domowej autora                                        *
  16. ******************************************************************************/
  17.  
  18. ob_start(gz_handler);
  19.  
  20. // funkcja pokazuje katalogi
  21. function show_img_folders()
  22. {
  23.    $dp = opendir('./');
  24.    while(false !== ($img_dir = readdir($dp)))
  25.    {
  26.        if($img_dir!='.' && $img_dir!='..')
  27.            if(is_dir($img_dir)) echo '<a href="?dir='.$img_dir.'">'.$img_dir.'</a><br />';
  28.    }
  29. }
  30.  
  31. // funkcja pobiera obrazki z katalogu
  32. function get_images($dir)
  33. {
  34.    // tablica z roszerzeniami ktore bedzie obslugiwac nasza galeria
  35.    $extensions = array('jpg','jpeg');
  36.  
  37.    // ladujemy obrazki
  38.    $dp = opendir($dir);
  39.    while(false !== ($image = readdir($dp)))
  40.    {
  41.        if($image != '.' && $image != '..')
  42.        {
  43.            $ext = explode('.', $image);
  44.            if(in_array(strtolower($ext[1]), $extensions)) // sprawdzamy rozszerzenie
  45.                $images[] = $image;
  46.        }
  47.    }
  48.    return $images;
  49. }
  50.  
  51. // funkcja pobiera opisy
  52. function get_desc($dir)
  53. {
  54.    // otwieramy plik z opisami
  55.    $file = 'images.txt';
  56.    if(file_exists($dir.$file))
  57.    {
  58.        $dp = fopen($dir.$file, 'r');
  59.        while(!feof($dp))
  60.        {
  61.            $desc = fgets($dp); // zczytujemy linijke z opisem
  62.            $desc_exp[] = explode('|',$desc); // rozbijamy z formatu: obrazek.jpg|jakis opis
  63.        }
  64.        fclose($dp); // zamykamy plik
  65.        return $desc_exp; // zwracamy tablice
  66.    } else die('<font color="red">Stworz plik: "images.txt" w katalogu: <b>'.$dir.'</b></font>');
  67. }
  68.  
  69.  
  70.  
  71. if(isset($_GET['dir'])) // sprawdzamy czy ustawiono zmienna $_GET
  72. {
  73.    if(is_dir($_GET['dir'])) // sprawdzamy czy istnieje katalog
  74.    {
  75.        $dir = $_GET['dir'].'/'; // katalog z fotkami
  76.        $images = get_images($dir); // pobieramy do zmiennej nazwy obrazkow
  77.        $descriptions = get_desc($dir); // pobieramy do zmiennej opisy
  78.  
  79.        $col = 7; // ilosc kolumn obrazkow
  80.  
  81.        // sprawdzamy czy tablica zawiera jakies nazwy obrazkow
  82.        if(count($images) == 0) die('Brak zdjęć w tej kategorii !');
  83.  
  84.        // wyswietlamy wszystko
  85.        echo '<table align="center" style="margin-left : auto; margin-right : auto;"><tr><td colspan="'.$col.'"></td></tr><tr>';
  86.        foreach($images as $img)
  87.        {
  88.            echo '<td align="center"><table><tr><td valign="top" align="center"><a href="'.$dir.$img.'"><img src="graph.php?img_name='.$dir.$img.'" width="100" height="100" border="0"></a></td></td></tr><tr><td align="center">';
  89.            foreach($descriptions as $desc)
  90.            {
  91.            }
  92.            echo '</td></tr></table>';
  93.            $i++;
  94.            if($i==$col) // jesli $i = liczbie kolumn, tworzymy nowy wiersz
  95.            {
  96.                $i=0;
  97.                echo '</tr><tr>';
  98.            }
  99.        }
  100.        echo '</tr><tr><td colspan="'.$col.'"></td></tr></table>';
  101.    } else echo 'Katalog nie istnieje';
  102. } else show_img_folders(); // pokazujemy katalogi
  103. ?>


Wyświetla on między inny zdjęcia z danego katalogu. No dobra, mamy zdjęcie i jak klikam w miniaturke pojawia się nowe, w oryginalnym rozmiarze.

Chcę, by po kliknięciu na zdjęcie pokazywała się nowa strona z obrazkiem a nie obrazek jak jest teraz.

Pomyślałem tak, by zamiast <a href="'.$dir.$img.'"> przekazać te zmienne do pliku play.php metodą GET, czyli tak by wyglądało : <a href="play.php?go='.$dir.$img.'"> i w pliku play.php zrobic :

  1. <?php
  2. $zmienna = $_GET['go'];
  3.  
  4. echo "<img src='$zmienna'>;
  5. ?>


ale coś mi nie smiga, tak jakby te zmienne przekazane były puste... ma ktoś jakiś pomysł ? Chcę wyświetlić stronę z obrazkiem po kliknięciu, a nie obrazek, gdzie zadnego html`a nie wstawię.

Czekam

[/php]
piekloniebo
Hi,
Pierwsze co mi przyszło do głowy to czy używasz jakiegoś narzędzia do debuggowania.
Ja nie jestem jakoimś phpowym wymiataczem ale jak mi jakieś giną elementy z urla albo z zapytania SQL to najłatwiej ustawić sobie w tej okolicy skryptu tzw. breakpoint i zobaczyć krok po kroku jak napisany przez ciebie kod tworzy ten url z użyciem get.
Jeżli któraś ze zmiennych nie jest przkazana to wszystko ci wyjdzie właśnie w debugerze.
Ja np. używam eclipsa i xdebugg.

Trochę jest zabawy z ustawieniem ale później to oszczędza czas....

Nie wiem czy ci to pomoże... ale może
Kshyhoo
Użyj poniższego kodu, zobaczysz, czy masz puste:
  1. <?php
  2. print_r($_GET);
  3. ?>


Cały problem polega na tym, że wywołując obrazek, nie możesz wysłać żadnych danych przed nagłówkiem. Spróbuj tak:

  1. <?php
  2. <a href='graf.php?img_name="'.$dir.$img.'"'><img src="'.$dir.$img.'"   width="100" height="100" border="0" /></a>
  3. ?>
bialko0019
Po wywołaniu tej pierwszej funkcji pojawia się : Array ( [go] => Kinga/2.jpg )

Czyli dobrze, pokazuje się ścieżka do zdjęcia.

Teraz tą scieżkę jak wstawić do <img src.... ? Bo jak zapisuje do zmiennej to nie działa....

a ta druga funkcja to nie da rady bo plik graps.php zmienia na proporcjonalny oprazek czyli tworzy miniaturke, a ja chce do pliku play.php i w zmiennej przekazac zeby sie wyswietlilo...

Metodą prób i błędów - tak samo jak robiłem, ale coś nie wiem czemu ale poszło ;p własnie przekazałem zmienna i teraz się wyswietliło, a wczesniej nie ;p pewnie jakas literówka ;p dzięki za pomoc w temacie smile.gif
Kshyhoo
Cytat(bialko0019 @ 16.06.2009, 13:39:30 ) *
Metodą prób i błędów - tak samo jak robiłem, ale coś nie wiem czemu ale poszło ;p własnie przekazałem zmienna i teraz się wyswietliło, a wczesniej nie ;p pewnie jakas literówka ;p dzięki za pomoc w temacie smile.gif

Musisz uważać na wszelkie "ciapki", czyli znaki ' i ". Brak jakiegokolwiek lub użytego w nie takim miejscu jak powinno, niweczy całą pracę. Używaj edytora, który to potrafi kontrolować.
Pawel_W
Cytat(bialko0019 @ 16.06.2009, 12:42:47 ) *
  1. <?php
  2. $zmienna = $_GET['go'];
  3.  
  4. echo "<img src='$zmienna'>;
  5. ?>


może dlatego ci nie wyświetla, że nie zamknąłeś " ?
bialko0019
Tak, pewnie dlatego.

A tak na koniec tematu, powiecie - kiedy stosować 'cos' a kiedy "cos" ? Bo jednak odkrywa różnicę, a czasami miałem bprzez to błędy winksmiley.jpg
Kshyhoo
Piszą o tym w każdym kursie ;p

Generalnie:
między " " się wykona,
między ' ' się wyświetli.

Czytelniej jest z apostrofami, wtedy musisz łączyć ciągi za pomocą . (kropki).
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.