Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php+css] Zagnieżdżenie skryptu w divach
Forum PHP.pl > Forum > Przedszkole
squeet
Witam. Na wstępie chciałbym przeprosić, jeśli nie zastosowałem się do jakiegoś punktu regulaminu bądź założyłem temat w złym miejscu. Nie jest to podyktowane złą wolą. Z góry przepraszam i jeśli takowe faux pas popełniłem, proszę o zwrócenie uwagi smile.gif

Ale do rzeczy.

Przy budowie strony zaniemogłem, gdy do kodu strony chciałem wcielić ściągnięty skrypt downloadu. Fragment kodu strony, który odpowiada za ładowanie elementu do odpowiedniego diva, wygląda następująco:

  1. <div class="tresc">
  2. <?php
  3.  if(empty($_GET['id']) or $_GET['id']=="main"){
  4.  include("pages/main.html");
  5.  }
  6.  if($_GET['id']=="math"){
  7.  include("pages/math.html");
  8.  }
  9.  if($_GET['id']=="download"){
  10.  include("get.php");
  11.  }
  12.  ?>
  13.  </div>


Zawartość pliku get.php:
  1. <html><head>
  2. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  3. <title>Download Asystent v1.0</title>
  4. <link rel="stylesheet" href="download/style.css">
  5. </head>
  6. <body>
  7. <? include "download/download.php" ?>
  8. </body>
  9. </html>


I o ile w dwóch pierwszych przypadkach przygotowane przeze mnie strony w html-u wczytują się ładnie, to odwołanie do skryptu już mi nie wychodzi. Oczywiście wczytuje mi stronę główną skryptu, ale po kliknięciu w link do kategorii zamiast otworzyć mi się ona w tym moim divie, otwiera się w osobnym okienku. Domyślam się, że to jest problem z ?id plików, jednak moja wiedza jest bardzo mała...

Czy mógłby ktoś pomóc, jaką składnię należy ułożyć, aby wszelkie odnośniki ze skryptu otwierały się w divie na stronie głównej index.php, a nie w osobnych okienkach? Ten skrypt to Download Asystent v1.0, a link do nowej kategorii wygląda tak:

http://adres_www/get.php?id=mdf1&action=display

Byłbym wdzięczny za pomoc. Lub ewentualne podanie linków, gdzie znajdę odpowiedź lub wskazówki. Pozdrawiam.
elektrrrus
Rozumiem, że w tym piwerwszym pliku, który zawiera tego diva masz już sekcje head, body? W takim razie ogołoć plik get.php do postaci:
  1. <?php
  2. include "download/download.php"
  3. ?>

A trochę z innej strony, nie wydaje mi sie potrzebne podwójne inkludowanie, nie możnaby od razu?:
  1. <div class="tresc">
  2. <?php
  3.  if(empty($_GET['id']) or $_GET['id']=="main"){
  4.  include("pages/main.html");
  5.  }
  6.  if($_GET['id']=="math"){
  7.  include("pages/math.html");
  8.  }
  9.  if($_GET['id']=="download"){
  10.  include("download/download.php");
  11.  }
  12.  ?>
  13. </div>
squeet
Dziękuję za odpowiedź. No to po kolei.

1. Plik index.php zawiera jeszcze masę innego kodu, bo to strona główna. Ale funkcji include używam tylko tu (reszta to html i css). Po wyczyszczeniu - dalej to samo. Z menu wywołuję skrypt i pierwsza strona otwiera mi się w divie, następna niestety już w osobnym oknie.

Link z menu (powoduje wyświetlenie w divie pierwszej strony skryptu):
http://nazwa_strony/index.php?id=download

Link z kategorii (w skrypcie - strona ładuje się w nowym oknie, a nie w divie, w miejsce poprzedniczki):
http://nazwa_strony/get.php?id=tst&action=display

Kod wygląda wówczas tak:
  1. <div class="tresc">
  2.  <?php
  3.  if(empty($_GET['id']) or $_GET['id']=="main"){
  4.  include("pages/main.html");
  5.  }
  6.  if($_GET['id']=="math"){
  7.  include("pages/math.html");
  8.  }
  9.  if($_GET['id']=="download"){
  10.  include("get.php");
  11.  }
  12.  ?>
  13. </div>


2. Próbowałem includować bezpośrednio. Lecz wyrzucało mi brak pliku (plik download.php zawiera wiele odnośników w kodzie typu download/..., więc jakby wymusza to otwarcie skryptu z pliku znajdującego się przed katalogiem... Czy nie? Oto urywek kodu do skryptu, który linkowałem wyżej:
  1. <?php
  2. case "main":
  3. if(!file_exists("download/data/sections.dat")){
  4. echo "Nie utworzono żadnej kategorii. Aby to zrobić skorzystaj z <a href=download/admin.php>Panelu Administracyjnego</a>.<br>";
  5. die();
  6. }
  7. if($display_head_msg==1){
  8. echo "$head_message";
  9. }
  10. if($enable_search==1){
  11. include "download/search_form.php";
  12. }
  13. ?>


Albo po kliknięciu na link kategorii div czyścił się całkowicie (było tylko tło, żadnego tekstu). Tak się działo, gdy w polu:
  1. <?php
  2. //Nazwa strony na której będzie używany skrypt, np. "download.php";
  3. $page_name="index.php";
  4. ?>

Wpisałem index.php (w 2 linijce wyżej) zamiast download.php czy get.php (były wcześniej)... Ale i tak link np. do administracji otwiera się w osobnym oknie.

Nie umiem znaleźć tutaj żadnej logicznej zależności, nie wiem, czemu nie mogę dojść do tego...
elektrrrus
Po pierwsze... Pokusiłem się zajżeć do tego skryptu, ładny śmietnik w nim... Wzór do pisania skryptów to to nie jest. Popraw w nim koniecznie krótkie tagi <? ?> na pełnoprawne <?php ?>. Jeżeli teraz nie powoduje to problemów, to prędzej czy później na innym serwerze może się zemścić. Co do tego otwierania, problem jest w tym, że adres http://nazwa_strony/index.php?id=download otwiera najpierw strone główną(index.php) a potem dopiero w niej inkluduje ten skrypt. A już link z tego skryptu http://nazwa_strony/get.php?id=tst&action=display nie otwiera najpierw pliku index.php tylko get.php, którego jedynym zadaniem jest inkludowanie samego skryptu... Mam pomysł na rozwiąznie, ale nie jest on ani elegancki, ani chyba satysfakcjonujący. Trzebaby przerobić dosyć gruntwonie struktóre strony i oprzeć ja o ramki, element który w tej chwili jest divem stałby się ramką, do której możnaby już wtedy bez problemów ładować ten skrypt. Innego rozwiązania nie widzę, może ktoś jeszcze na coś wpadnie. Proponowałbym się rozejżeć za innym, inaczej skonstrownym skryptem, albo, jeśli czujesz się na siłach napisanie tego samemu. Nie jest to wbrew pozorą trudne.
squeet
Ja sądziłem, że się wygłupię, bo nie potrafię tego zrobić.
Rozwiązanie tego problemu zastosowałem takie:
  1. <?php
  2.  if(empty($_GET['id']) or $_GET['id']=="main"){
  3.  include("pages/main.html");
  4.  }
  5.  if($_GET['id']=="math"){
  6.  include("pages/math.html");
  7.  }
  8.  if($_GET['id']=="download"){
  9.  echo '<iframe src="http://adres_strony/get.php" onload="resizeIframe(this)" frameborder="0" scrolling="no" width="550"></iframe>';
  10.  } 
  11.  ?>
  12. </div>

Iframe + skrypt resizujący wysokość iframe, który znalazłem na tym forum, konkretnie tu:
http://forum.php.pl/lofiversion/index.php/t36484.html

Mam nadzieję, że nie jest to rozwiązanie odbiegające bardzo od współczesnych standardów...
Dziękuję Ci za poświęcony czas.
elektrrrus
Ładnie i całkiem poprawine byłoby po prostu napisać taki skrypt samemu dostosowany do konkretnej strony, ale przy takiej adaptacji to ja tu lepszego wyjścia nie widzę...
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.