Skocz do zawartości
PelzaK

[javascript]wyswietlanie Ukrytej Czesci Strony

Rekomendowane odpowiedzi

witam..

 

Przerabiam właśnie swoją stronkę na PHP i chcę mieć możliwosć wyświetlania bądź też ukrywania fragmentu stronki (np komantarze) za pomocą przycisku bez konieczności przeładowywania strony... Coś takeigo jest zrobione na tweaku po nacisnieciu np SZYBKA ODPOWIEDŹ...

 

Wiem, że mogę sobie obejrzeć źródła strony.. ale że tak powiem... są troche ciężkie :D... Nie wiem nawet pod jakim hasłem tego szukać... A na PHP i javascript to znam się tyle ile mi jest potrzebne na bierząco.. więc proszę do mnie mówić po polsku :), jakieś podpowiedzi, gdzie i jak tgo szukać, ewentualnie przykładowy kod...

 

Edit:

 

PROBLEM #2

Wszytko działa ok.. ale teraz chciałbym jeszcze taki bajer zrobić... Mianowicie... załóżmy że mam jakiś artykuł na stronce... pod nim znajduje sie przycisk pokazujący komentarze... i teraz chciałbym żeby te komentarze były segregowane, np po 10 na danej stronie, i żeby pojawiały się przyciski [<][1][2][3][>]. Oczywiście z poziomu php jest to łatwo zrobić.. ale mi chodzi o to, żeby to wszystko odbywało się w przeglądarce użytkownika, tj, żeby strona się nie przeładowywała podczas zmiany komentarzy...

 

Czy ktoś ma jakiś pomysł na to?

Edytowane przez PelzaK

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tak to wygląda na Tweaku: :D

 

W sekcji <head>

<script language="JavaScript" type="text/javascript"><!--	function openClose(id)	{		var obj = "";			// Check browser compatibility		if(document.getElementById)			obj = document.getElementById(id).style;		else if(document.all)			obj = document.all[id];		else if(document.layers)			obj = document.layers[id];		else			return 1;					// Do the magic :)		if(obj.display == "")			obj.display = "none";		else if(obj.display != "none")			obj.display = "none";		else			obj.display = "block";	}//--></script>
W sekcji <body> przy tekście oznaczonym jako spoiler:

<!--SPOILER BEGIN--><div onClick="openClose('576848c6af85cb580d2316348a2775ec')" style="font-weight: bold"><u>» Naciśnij, żeby pokazać/ukryć tekst oznaczony jako spoiler... «</u></div><div id="576848c6af85cb580d2316348a2775ec" style="display:none">Ukryty tekst <!--SPOILER DIV--></div><!--SPOILER DIV-->
Nie było trudno znależć...

Pzdr

Edytowane przez shaqal

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

no może i nie trudno... tylko...

1. cały dzień siedze w języku którego praktycznie nei znam i cos w nim pisze :D (moja kochana uczelnia nauczyla mnie pisać programy w językach, których nie znam...)

2. kradnę kod z IPB :).. jeszzce mnie ktoś do sondu poda :wink:

 

w każdym bądź razie dziekuje, zobacze co z tego da się zrobić... i jeszze pytanie... czy to id 576848c6af85cb580d2316348a2775ec moge sobie chyba dowolnie wybrać... nie?

 

no i jeszze muszę pomyśleć jak to podstawić pod przycisk jakiś... ale myślę, że sobie poradzę :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Po prostu wyszukałem w kodzie strony to, czego ty nie mogłeś znależć. :) Nie musisz oczywiście stosować kodu z IPB, ale może on zainspiruje cię do napisania własnego skryptu...

 

'id' to identyfikator ukrytego tekstu i oczywiście możesz go wybrać dowolnie, w zależności od swoich potrzeb.

 

Pzdr i powodzenia

Edytowane przez shaqal

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

nie powiedziałem ze nie mogełm znaleźć... tylko po 10h spedzonych nad php po prostu nie miałem siły analizować kodu tweka icon_smile3.gif. W każdym bądź razie dziekuje że mi pomogłeś.. icon_smile3.gif

 

Edit:

 

Wszystko działa, ale mam kolejny problem.. opisany w pierwszym poście...

 

Edit:

 

Oki... ten problem tez rozwiązałem... Zmodyfikowałem trochę powyższą funkcję javascriptu, tak aby ukrywała wszystkie obiekty z danego zbioru a pokazywała tylko wybrany, do tego podczas tworzenia tabelek z kolejnymi wpisami w księdze gości PHP wstawia znaczniki <div id="kolejneID"> </div>

 

W ten sposób uzyskałem zmianę wyświetlanych stron z postami bez koneiczności przeładowywania strony.... efekt można zobaczyć tutaj.. (jeszcze niedopracowane do końca...)

http://217.98.242.200/users/pel/index.php?site=wpisy.php

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

tak.. ale będzie to niewidoczne gdy zwiększę ilość postów/stronę... chwilowo dałem 3 tak dla testów... I tu pojawił się problem.. jak teraz wyróżnić pogrubieniem lub czymkolwiek innym, stronę która akurat jest wyświetlana :)...

 

Edit:

 

ok udało mi się to zrobić... dziękuje wszystkim za pomoc :)

 

 

Edit:

 

no to pytanie z kolejnej... beczki... :)

 

jeśli dodam na stronie komentarz... to chciałbym żeby po przeładowaniu strona przewinęła mi się w to miejsce, czyli w praktyce na sam dół... jak to zrobić?

Edytowane przez PelzaK

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Aaaaaa to o to Ci chodziło :]

 

<a href="#test1"><br /><!--tutaj dużo br, żeby komentarz schował się pod ekranem--><div id="test1">tekst komentarza</div>
Zamiast diva możesz wstawić pusty (i niewidoczny) link, tak jak jest zrobione np. na Tweaku (<a name="numer posta"></a>). Jak wjedziesz w kod, to zobaczysz że każdy post ma coś takiego na samym prawie początku :]

 

Teraz tylko pytanie jak chcesz przesyłać adres?

możesz linkiem (jak w kodzie wyżej)

możesz JS (document.location.href='tutajURL')

wreszcie możesz w php po wysłaniu komentarza (wtedy sam serwer zmusi stronę do odświeżenia i wyświetlenia już w odpowiednim miejscu).

Np. przez funkcję header("Location: tutajAdres");

 

Edit:

zauważyłem że robisz coś takiego w php:

index.php?site=nazwa_pliku.php

Nie rób tak. No chyba że chcesz żeby było widać coś takiego

Najlepiej zrób sobie jakiegoś switcha, gdzie przyporządkujesz zmiennej pobieranej z adresu odpowiedni plik. Do tego akcja defaultowa, wyświetlająca stronę główną i spokój święty.

Np:

<?if(isset($_GET['go'] && !empty($_GET['go'])){	//me nie pamieta czy to dokladnie tak lecialo...;)	switch($_GET['go']){		default : $plik = "glowna.php";		case '1': $plik = "cośtam1.php";		case '2': $plik = "cośtam2.php";  	}}else $plik = "glowna.php"; include $plik;?>
W adresie nie będzie nikt mógł podać nazwy pliku "z palca" i zrobć przez to bałaganu.

 

Edit2:

strona główna ładowana do ramki nazywa się main.php i wiem to bez grzebania w kodzie głównej ramki ;)

 

PZDR,

(\|/)

Edytowane przez MareCeK

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

dzięki...

 

na to przesuwanie srony już wpadłem chwile wczesniej zanim napsiałeś, po wielu nieudanych próbach...

 

Jak się okazało system komentarzy w ogólnie nie działał pod IE, bo się okazało :) .. że w FORMach nie może być obrazka jako button. Na szczescie znalazłem rozwiazanie... i jakoś poszło :).

Niestety, z tego co słyszałem to w OPERZE nie działa link do anchorów. Nie wiem czemu. Ma to miejsce po wywołąniu linka <a href="#forum_start" onClick=jakas_funkcja> i wyglada na to że OPERA nie rozumie że trzeba zrobić 2 operacje z 1 linka... Niestety nie mam opery żeby to sprawedzić może ktoś chetny by sie zgłosił, bo chcę żeby moja strona chodziła pod FF, IE i OPERĄ

 

post - to be continued.. (bo muszę leciec na pociąg :D)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Z tą operą i onclick to takie dziwne akcje mam, że jedno działa, a drugie nie (np. document.write działa jak trzeba, ale już innerHtml jakieś tricki odstawia). Może moja wina, bo dawno skryptów nie pisałem i wyszedłem z wprawy. Nie wiem.

 

Poza tym jeszcze maj mistejk, że w tym kodzie, co podałem wcześniej, nie ma zamkniętego taga z linkiem.

Poprawnie jest tak:

<a href="#test1">nazwa linku</a><br /><!--tutaj dużo br, żeby komentarz schował się pod ekranem--><br /><div id="test1">tekst komentarza</div>

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

więc tak.. tez mam pododawane na każdej stronie puste linki do których mozna ta stronę przesuwać... mam tez funkcję przesuwającą w JS (document.location.href). Jendak niektóre linki zrobiłem właśnie z uzyciem <a href="" onClick=""> i wtedy opera nie działa. Bede musiał jeszcze spróbować zamiast linka <a> zapodac mu funkcję przesuwającą w onClick, z tego co obczaiłem to można wywołać kilka funkcji na 1 zdarzeniu.

 

Tu przy okazji chciałbym zapytać jak zrobić aby po najechaniu na dany link obrazkowy kursor zmienić na łapkę.. bo tam gdzie jest to zwykły link <a><img></a> to łapka się pojawia. Ale w niektórych miejscach przyciski (obrazki) mają reagować tylko na zdarzenie onClick.

 

Co do zmiennej site przekazywanej przez adres... Chciałem mieć mozliwosć podania linka do prawie każdego elementu / strony, stąd takie rozwiazanie. A gdybym wprowadził switcha to w ten sposób ograniczam się. Za każdym razem gdy dodam nową podstronkę, musiałbym zmieniać kod indexa. A jak ktoś se wpisze dziwne rzeczy do zmiennej site to już jego problem.. Zastanawiałem się ewentualnie nad wprowadzeniem pewnych restrykcji. dostępu co do niektóych katalogów bądź plików.

Z resztą, wychodz ciekawy efekt jak mu kilka razy podam linka do indexa :).. coś podobengo jakby skierowac kamere na telewizor :)

 

I skąd wiesz, że jest to main.php? :)

Edytowane przez PelzaK

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tu przy okazji chciałbym zapytać jak zrobić aby po najechaniu na dany link obrazkowy kursor zmienić na łapkę.. bo tam gdzie jest to zwykły link <a><img></a> to łapka się pojawia. Ale w niektórych miejscach przyciski (obrazki) mają reagować tylko na zdarzenie onClick.

<img [blablabla] onmouseover="this.style.cursor='pointer'">

Co do zmiennej site przekazywanej przez adres... Chciałem mieć mozliwosć podania linka do prawie każdego elementu / strony, stąd takie rozwiazanie. A gdybym wprowadził switcha to w ten sposób ograniczam się. Za każdym razem gdy dodam nową podstronkę, musiałbym zmieniać kod indexa. A jak ktoś se wpisze dziwne rzeczy do zmiennej site to już jego problem.. Zastanawiałem się ewentualnie nad wprowadzeniem pewnych restrykcji. dostępu co do niektóych katalogów bądź plików.

Z resztą, wychodz ciekawy efekt jak mu kilka razy podam linka do indexa :).. coś podobengo jakby skierowac kamere na telewizor :)

 

I skąd wiesz, że jest to main.php? :)

bo sobie z palca wpisałem w przeglądarce właśnie w "site=". Większość webmasterów myśli podobnie ;)

I dlatego to jest mocno niebezpieczne. Jak ktoś jest wytrwały i lubi zgadywanki , to prędzej czy później dorwie się do jakichś plików których normalny człowiek nie ma prawa widzieć (Np. hasła do panelu admina zapisane gdzieś w plikach .inc czy .txt, albo jakieś konfigi).

Btw. Sprawdź sobie czy masz możliwość wyświetlenia przez tą zmienną w adresie plików, w których normalnie apache wyświetliłby "forbidden", czy coś podobnego.

Styl css można np. wyświetlić, ale on jest ogólno dostępny.

btw... możesz tą zmienną jeszcze takie akcje zrobić:

site=http://forum.purepc.pl

site=http://google.pl

możesz sobie nawet ściągnąć javę ze strony suna.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

hehe wiem :D

 

być może ograniczę to tylko do plików php, i tylko do mojej strony (jeszcze nie wiem jak).

A moze faktycznie rozwiązanie z indexami było by lepsze.. w końcu ile to dodac kolejny adres do pliku jakiegoś z indexami stron.. pomyśle nad tym

 

thX

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Mozesz zrobic tak ze parametr będzie nazwą pliku bez rozszerzenia.

Jezeli wszystkie 'podstrony' były by w jednym katalogu to wystarczy ze dołączysz przez include. W skrypcie tylko trzeba połączyc nazwe katalogu(wpisaną do skryptu na stałe) z nazwą strony pobraną z parametru i rozszerzeniem, ktore tez było by wpisane w skrypcie na stałe. Do tego tylko warunek na istnienie pliku, zeby nie było błędów przy wpisaniu losowego ciągu znaków.

Cos takiego się dobrze sprawdza przy ograniczeniu do jednego typu pliku i jezeli niema w katalogu jakis przypadkowych plików tego samego typu.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

no właśnie grunt w tym że mam ze 3 poziomy katalogów.. każdy nowy art to oddzielny folder w któryms z folderów pod rootem.. więc chyba odpada...

 

zrobię chyba po prostu plik z listą dostępnych plików przez adres... i tak nie za często z niej korzystam, ewentualnie żeby komuś wskazać dany artykuł. Jako że stronka działa na ramkach to w pasku adresu i tak zawsze jest widoczny jeden i ten sam adres główny (lub wpisany z parametrami) zatem kopiowanie adresu danego artykułu i tak nie wyjdzie...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

no wąłsnie cos w tym stylu... tylko zrobię chyba osobny plik textowy o strukturze np takiej:

index;link;

 

i będe wczytywał z pliku, potem metodą explode rozszepię to na tablice i będzie... :)

 

uu sporo pracy przede mną... może mielibyście jeszcze jakieś ciekawe pomysły jakby usprawnić korzystanie ze stronki, bo narazie testuje wszystko (komentarze etc) na jednej przykładowej stronce, a potem będę musiał edytowac każdy plik html ze starej stronki... wiec chciałbym od początku zrobić szablon stronki porządnie, żebym potem nie musiał znów wprowadzać modyfikacji jakichś :)

 

tu adres stronki testowej... co powinno się jeszzce znaleźć waszym zdaniem w środkowej ramce... (narazie jest przycisk KOMENTUJ, SKOCZ DO GÓRY etc...)

 

http://217.98.242.200/users/pel/index.php?...angel/angel.php

 

musze dorobić jeszcze wyświetlanei ilosci postów i stron z postami.. ale póki co nie wiem jak... bo ilość jest wiadoma dopiero po sparsowaniu całego pliku z danymi o postach.. czyli na końcu geenerowanej strony w PHP , a chciałbym żeby te dane były na samym początku forum wyświetlone...

Edytowane przez PelzaK

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

no wąłsnie cos w tym stylu... tylko zrobię chyba osobny plik textowy o strukturze np takiej:

index;link;

 

i będe wczytywał z pliku, potem metodą explode rozszepię to na tablice i będzie... :)

 

uu sporo pracy przede mną... może mielibyście jeszcze jakieś ciekawe pomysły jakby usprawnić korzystanie ze stronki, bo narazie testuje wszystko (komentarze etc) na jednej przykładowej stronce, a potem będę musiał edytowac każdy plik html ze starej stronki... wiec chciałbym od początku zrobić szablon stronki porządnie, żebym potem nie musiał znów wprowadzać modyfikacji jakichś :)

 

tu adres stronki testowej... co powinno się jeszzce znaleźć waszym zdaniem w środkowej ramce... (narazie jest przycisk KOMENTUJ, SKOCZ DO GÓRY etc...)

 

http://217.98.242.200/users/pel/index.php?...angel/angel.php

 

musze dorobić jeszcze wyświetlanei ilosci postów i stron z postami.. ale póki co nie wiem jak... bo ilość jest wiadoma dopiero po sparsowaniu całego pliku z danymi o postach.. czyli na końcu geenerowanej strony w PHP , a chciałbym żeby te dane były na samym początku forum wyświetlone...

Ja bym w sumie wykorzystał mysql. Nie miałem takich problemów. Z bazy danych możesz odczytać wszystko jak chcesz. włącznie z komentarzami lub postami na forum. Możesz wtedy ustawić wszystkie parametry włącznie z ilością stron zanim wogóle wyświetlisz stronę. poza tym baza jest o wiele bezpieczniejsza niż pliki

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

to żeby nie zakładać nowego tematu napiszę tutaj...

 

problem dotyczy wczytywania zawartości strony do szablonu.

mamy taką oto strukturę katalogów na serverze:

 

<dir1>	+--- obrazek1.jpg	+--- obrazek2.jpg	+--- stronka1.php<dir2><dir3>- main.php- main_template.php

teraz, uruchamiam stronkę main.php, która pokazuje mi np zbiór wszystkich podstronke znajdujących się w katalogach dir1,2,3... Teraz klikam na wybrany link i odpala mi się szablon podstronek main_template.php, który wczytuje np plik dir1/stronka1.php. Wszystko jest ok, do czasu aż w pliku stronka1.php trafi się obrazek. Chodzi o to, że ma on lokalizacje wzgledną od pliku stronka1.php, a ja go wyświetlam z lokalizacji o 1 katalog wyżej... (main_template.php).

Jak zatem najprościej dodać do scieżki każdego obrazka ten brakujący katalog? Czy da sie to zrobić za pomocą manipulacji jakimiś katalogami wykonywania skryptu czy czegoś takiego, czy muszę parsować cała stronę i zamieniać stare lokalizacje obrazków na nowe... tj.

src="obrazek1.jpg" na src="dir1/obrazek1.jpg"

Edytowane przez PelzaK

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...