Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]aktywny link spisu treści
Forum PHP.pl > Forum > Przedszkole
xoro
Witam to mój pierwszy post na forum więc proszę o wyrozumiałośc.

Poskładałem sobie pewien skrypt, który można nazwać domową bazą filmów.

Polega to na tym,że wklepuję sobie przez formularz dane dotyczące filmu i są one zapisywane do bazy danych.

Aplikacja jest oparta na ramkach <frameset> (dlaczego? tak po prostu chciałem).

I wszystko działa dane są dodawane do bazy, a linki do poszczególnych filmów są wyświetlane w lewej ramce (spis treści).

Po kliknięciu w link (który jest tytułem) w prawej ramce wyświetla sie opis danego filmu.

W czym polega mój mały problem?

Chciałbym aby po kliknieciu w link do filmu (lewa ramka) i wyświetleniu jego opisu (prawa ramka), ten własnie link (w lewej ramce) był podświetlony (zaznaczony że wyświetla się konkretny opis konkretnego linku).

Przyznam, że znalazłem na forum ten temat http://forum.php.pl/index.php?showtopic=121148&hl= ale coś mi nie działa, szczerze zgłupiałem i nie wiem w czym problem.

Skrypt mam postawiony na localu na kompie, jednak wrzuciłem na hosting aby mozna było zerknąc o co mi chodzi.

adres: http://xoro.linuxpl.info
user: test
hasło: test

rejestracja jest wyłączona, ale po kliknieciu buttona Logowanie można spokojnie się zalogować.


Wyświetlanie spisu treści leci po petli:

  1. //wyswietlanie listy filmow
  2. if(mysql_num_rows($q)<1){
  3. echo 'BRAK FILMÓW W BAZIE DANYCH';
  4. }
  5. $numeracja = 0;
  6. while($rekord = mysql_fetch_array($q)){
  7. echo '<p>'.++$numeracja.'.  '.'<a target="strona" href="dvd_pokaz_film.php?id='.urlencode($rekord['id']).'">'.stripslashes($rekord['tytul_pl']).' ..... ('.$rekord['rok_prod'].')</a></p>';}
nospor
Problem nie ma zwiazku ani z php ani z mysql.
To co chcesz zrobic to js oraz css.

Daj dla linkow zdarzenie onclick a w nim kod js, ktory dla tego linku doda klase ACTIVE, a dla wszyskich innych linkow zdejmie klase ACTIVE. Zas w css ustaw kolor dla klasy ACTIVE jaki chcesz miec. Ot i wsio.

ps: dawanie do tego ramek to raczej przestarzaly pomysl. Lepsze bylby tutaj ajax lub normalne przeladowanie strony, a calosc bez ramek.

ps2: poczytaj o SQLInjection bo teraz twoje zapytania są na nie podatne
http://xoro.linuxpl.info/dvd_pokaz_film.ph...1200%20or%201=1
xoro
Czułem, że to może być związane z JS (niestety jest jeszcze moja pieta achillesowa - mam już sporo lat na karku i wymysliłem sobie hobby pt. kodowanie).

Może jakaś podpowiedź? smile.gif

Co do zabezpieczeń, skrypt nie będzie publikowany w sieci (tylko uzytek własny na kompie XAMPP).
nospor
Doładuj bibllioteke js jquery a nastepnie:
  1. echo '<p>'.++$numeracja.'. '.'<a onclick="jQuery(this).addClass(\'ACTIVE\'); return true;" target="strona" href="dvd_pokaz_film.php?id='.urlencode($rekord['id']).'">'.stripslashes($rekord['tytul_pl']).' ..... ('.$rekord['rok_prod'].')</a></p>';

Oraz w css zdefiniuj klase ACTIVE i kolory jakie dla niej chcesz miec.

Gdy to ci zadziala, pozostanie dopisanie ci kasowanie ACTIVE z pozostalych linkow smile.gif
xoro
Dzięki za wskazanie kierunku.

Będe próbował.

W razie problemów pozwolę sobie Poprosić o pomoc.

------------------------------------

Rozwiązałem mój problem dzięki wskazówkom nospor.
Poczytałem trochę w sieci i rozwiązanie jest faktycznie proste.

Zrezygnowałem z <a onclick=.....>

Dodałem bibliotekę JQuery oczywiście.

Dodałem klasę dla <a> czyli:

  1. echo '<p><a class="linki" target="strona" href="dvd_pokaz_film.php?id='.urlencode($rekord['id']).'">'.++$numeracja.'. '.''.stripslashes($rekord['tytul_pl']).' ..... ('.$rekord['rok_prod'].')</a></p>';


a pod spodem mały skrypt js:

  1. <script type="text/javascript">
  2. $('a.linki').click(function(){
  3. $('a.linki').removeClass("active");
  4. $(this).addClass("active");
  5. });
  6. </script>


i smiga jak chciałem.

Bardzo Dziękuję nospor za danie wędki, a nie ryby smile.gif

Pozdrawiam.
Pyton_000
Aż miło patrzeć na takich ludzi który są w stanie sami wykombinować rozwiązanie a nie tylko daj daj ...
Gratuluję i życzę owocnego kodowania
nospor
Zgadza się. W pelni podpisuje się pod słowami Pytona smile.gif
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.