Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kameleon
Forum PHP.pl > Forum > Gotowe rozwiązania
uczen
Witajcie smile.gif
Czy ktos z Was wie jak wykonac scrypt, ktory bedzie obslugiwal kilka skinow na stronie?
Dla przykladu korzystam ze scryptu :

[php:1:64f48eb279]<?php
$default = "glowna";
$dir = "include/";
$file = $_GET['id'] != '' ? $_GET['id'] : $default;
if(file_exists($dir.$file.".php")) {
require($dir.$file.".php");
} else {
echo"Nie kombinuj smile.gif Nie ma takiego pliku: ".$file;
}
?>[/php:1:64f48eb279]
Ten scrypt daje mozliwosc wprowadzenia zmiennej $id i dzieki temu linki maja postac
<a href="index.php?id=costam">

Spoko no i luzik ale ja chce zrobic dodatkowo kilka skinow dla strony. Jak mam to zrobic by do linku <a href="index.php?id=costam"> zostala dodana zmienna $skin i link miał postac nastepujaca

<a href="index.php?id=costam&skin=skin1">

Dla przykladu mam juz strone glowna ze zdefinoiowanymi linkami ze zmienna $id co dalej? Jak w dowolnym momencie zmienic tylko wyglad strony tak zeby do linkow automatycznie zostala dodana informacja &skin=skin1 itd.
Pod adresem http://80.51.181.173/php/ jest to dokladniej opisane jest to przyklad. By obrazowo pokazac Wam o co mi chodzi.
HELP ME !!
wassago
sciagnij sobie dowolny skrypt "template" i zobacz jak jest zbudowany, odpowiedz "jak to zrobic" powinna ci sie sama nasunac. jezeli taka odp cie nie wystarczy to napisz jeszcze jednego posta to pokaze ci jak sie obsloguje "skiny".
uczen
Cytat
sciagnij sobie dowolny skrypt "template" i zobacz jak jest zbudowany, odpowiedz "jak to zrobic" powinna ci sie sama nasunac. jezeli taka odp cie nie wystarczy to napisz jeszcze jednego posta to pokaze ci jak sie obsloguje "skiny".


A skad moge taki scrypt sciagnac?
Ive
najlepiej to zrób na sesjach
na starcie strony daj do sesji podstawowy skin (np.skin1 - jeśli nie był jush ustawiony wcześniej inny skin!) a potem jak ktoś chce sobie zmienić skina to rób tak żeby najpierw usunął poprzednią wartość dla skin i dodawał potem nową (session_unregister() i session_register() ) no i nie musisz w linkach przekazywać

[EDIT]
w tagu <form> zrób opcje <select> i pod tym (lub nad/przed/po ;] ) w polu typu hidden podawaj wartość aktualnego $id i potem ją pobieraj zmień skin i zrób automatyczne przekierowanie do strony www.stron.pl/?id=$id
Cod
Na początku strony index.php zrób takie coś:

[php:1:d1ae83526a]<?php
if(isset($HTTP_GET_VARS["skin"])) $skin=$HTTP_GET_VARS["skin"];
else $skin=1;
?>[/php:1:d1ae83526a]

A później niech każdy link na stronie wygląda tak:

[php:1:d1ae83526a]<?php
echo "<a href='index.php?roznezmienne&skin=$skin'>Link</a>";
?>[/php:1:d1ae83526a]
uczen
Cytat
Na początku strony index.php zrób takie coś:

[php:1:708aac4001]<?php
if(isset($HTTP_GET_VARS["skin"])) $skin=$HTTP_GET_VARS["skin"];
else $skin=1;
?>[/php:1:708aac4001]

A później niech każdy link na stronie wygląda tak:

[php:1:708aac4001]<?php
echo "<a href='index.php?roznezmienne&skin=$skin'>Link</a>";
?>[/php:1:708aac4001]


Niestety to nie dziala sad.gif
Moze cos robie zle? Ale zrobilem tak jak kazales i lipa...
Cod
Nie zrobiłeś tego dokładnie, jak napisałem. Zjadłeś $ przy skin, czyli w Twoim linku jest skin=skin (co oczywiście nic nie da), a w moim skin=wartość_zmiennej_skin.

Jak już to naprawisz, to jeszcze jedna sprawa. Linki do zmiany stylu mogą wyglądać na przykład tak:

[php:1:8379aac063]<?php
echo "<a href='index.php?skin=1'>Skin 1</a><br>";
echo "<a href='index.php?skin=2'>Skin 2</a><br>";
echo "<a href='index.php?skin=3'>Skin 3</a>";
?>[/php:1:8379aac063]

Jeśli nie masz pomysłu, co z tym zrobić dalej, to pisz.
uczen
Cytat
Jeśli nie masz pomysłu, co z tym zrobić dalej, to pisz.


Zrobilem tak jak kazales i niestety nic sie nie dzieje zmienna skin nie zostaje zaladowana. Sam zobacz.
Mnie sie wydaje ze trzeba przebudowac glowny scrypt obslugujacy zmienna $id bo teraz po prostu nei laduje skinow sad.gif
Cod
Jeszcze przed chwilą w lewym "dupnym" linku miałeś "skin=skin". Skasowałeś to? Wystarczyło dodać "$".
uczen
Cytat
Jeszcze przed chwilą w lewym "dupnym" linku miałeś "skin=skin". Skasowałeś to? Wystarczyło dodać "$".


Tak skasowalem smile.gif Teraz po prawej sa linki ze skinami .
Ps
Grasz w zoske?
Cod
Widzę, że znów zrobiłeś nie tak, jak trzeba tongue.gif. Ten "dupowy" link, żeby działać, musi być w php, w echo - w czystym htmlu nie weźmie Ci zmiennej. Dlatego zrób jeszcze trochę inaczej. Niech link "dupowy" prowadzi do:

Kod
href='index.php?jakieszmienne&skin=<?php echo $skin; ?>'


PS. Tak gram, nawet można powiedzieć, że profesjonalnie, ale o tym możemy pogadać na PW smile.gif.
uczen
Cytat
Widzę, że znów zrobiłeś nie tak, jak trzeba tongue.gif. Ten "dupowy" link, żeby działać, musi być w php, w echo - w czystym htmlu nie weźmie Ci zmiennej. Dlatego zrób jeszcze trochę inaczej. Niech link "dupowy" prowadzi do:

Kod
href='index.php?jakieszmienne&skin=<?php echo $skin; ?>'


PS. Tak gram, nawet można powiedzieć, że profesjonalnie, ale o tym możemy pogadać na PW smile.gif.


Jest dokladnie tak jak zaleciles. Tyle ze wyswietla sie tak samo sad.gif jak podejrzysz zrodlo to wyswitli ze jest :
Kod
href='index.php?id=dupa&skin=1'
Cod
Z tego, co ja widzę, to wszystko już jest ok. Klikasz np w "Skin 2" i wtedy "dupowy" link zmienia się automatycznie na "skin=2". Teraz wystarczy napisać skrypt, który wyświetla inne kolorki w zależności od wybranego skinu. Jeśli nie wiesz, jak sobie z tym poradzić, pisz smile.gif.
uczen
Cytat
Jeśli nie wiesz, jak sobie z tym poradzić, pisz smile.gif.


No niestey nie wiem jak napisac taki scrypt. Mam juz gotowy skin o nazwie 1.php. Jesli potrafisz mi pomoc to bede bardzo wdzieczny.
Cod
Taki skrypt może działać w następujący sposób:

:arrow: Robisz różne klasy css dla różnych kolorków (text, tableki, itp), ale każda klasa ma odpowiednie dla różnych styli, np. dla stylu 1 klasy mogą się nazywać: tekst1, tabelka1, a dla trzeciego: tekst3, tableka3.
:arrow: Różne obrazki, które się zmieniają w zależności od skinu, np. logo, nazywaj podobnie, jak css'y, czyli dla stylu 1 np: logo1.jpg, przycisk1.gif, a dla stylu 3: logo3.jpg, przycisk3.gif.
:arrow: Teraz niech każdy obrazek na stronie index.php ma w urlu takie coś:

Kod
url='nazwaobrazka<?php echo $skin; ?>.gif'

:arrow: A każdy element, do którego przypisujesz jakąś klasę css, niech ma:

Kod
class='nazwaklasy<?php echo $skin; ?>'

Mam nadzieję, że zrozumiałeś. Miłej pracy smile.gif.

Oczywiście jest dużo innych możliwości wykonania tego, ale ten jest łatwy do zrozumienia i wykonania przez początkującego.
uczen
Ok to jak to sprawdze to dam Ci znac czy dziala smile.gif THX
uczen
Niestety nie laduja sie style gdy wpisze
Kod
class='nazwa_ramki<?php echo $skin; ?>'
sad.gif Zmiana ' na " tez nic nie daje ...
Cod
No pewnie, że nie działa, bo nie powinno smile.gif.

Musisz w pliku style.css porobić to, co napisałem, czyli każdy styl zdefiniować kilka razy z innymi numerkami, np:

Kod
.ramka_kreska1 {BACKGROUND: #ff96ff;}

.ramka_kreska2 {BACKGROUND: #abcdef;}

.ramka_kreska3 {BACKGROUND: #012345;}
uczen
mam tak zrobine. Nic to nie daje. Zajrzyj do zrodla jak nie wierzysz smile.gif Ale na razie cos musze poprawic w stylach smile.gif
Cod
Właśnie jestem w Twoim pliku style.css i jest on taki, jak wcześniej, nie widzę zmian. Coś skaszaniłeś smile.gif.
uczen
Cytat
Właśnie jestem w Twoim pliku style.css i jest on taki, jak wcześniej, nie widzę zmian. Coś skaszaniłeś smile.gif.


Witaj juz zrobilem i dziala smile.gif THX. Mam jeszcze do Ciebie jedna prozbe: wiesz jak uniknac sytuacji takiej ze jesli ktos wpisze zamiast skin=1 np skin=22 to zeby automatycznie zaladowala mu sie skorka domyslna?
Cod
Cytat
Witaj juz zrobilem i dziala smile.gif

Cieszę się, że pomogłem winksmiley.jpg.

Cytat
Mam jeszcze do Ciebie jedna prozbe: wiesz jak uniknac sytuacji takiej ze jesli ktos wpisze zamiast skin=1 np skin=22 to zeby automatycznie zaladowala mu sie skorka domyslna?

Na początku, tam gdzie masz te linijki ode mnie do pobierania zmiennej skin z url'a, dopisz:

[php:1:07c0a7f5cf]<?php
if(isset($HTTP_GET_VARS["skin"])) $skin=$HTTP_GET_VARS["skin"];
else $skin=1;
if($skin!=1&&$skin!=2) $skin=1;
?>[/php:1:07c0a7f5cf]
Jeśli dorobisz więcej skinów, dopiszesz analogicznie "&&$skin!=3" itd. Jeżeli, domyślnym stylem zostanie jakiś inny niż jedynka, zmienisz w obu miejscach "$skin=1" na taki, jaki chcesz.
uczen
Dzieki smile.gif
Rzeczywiscie dziala. Jest jeszcze maly bug z tym ze zawsze po wyborze skina laduje sie w czesci centralnej to co przy starcie da sie jakos to wyeliminowac zeby przy zmianie skina w dowolnym momencie czesc centralna strony pozostala taka jak przy porzednim skinie?
Cod
Wszystko się da winksmiley.jpg. Niech link do zmiany skinu wygląda tak:

Kod
<a href='index.php?id=<?php echo $id; ?>&skin=1'>Skin 1</a>

I analogicznie dla reszty skinów. Dodatkowo, na początku strony dopisz:

[php:1:22ad98b38d]<?php
if(isset($HTTP_GET_VARS["id"])) $id=$HTTP_GET_VARS["id"];
?>[/php:1:22ad98b38d]

Chyba czas spać, zieeeew winksmiley.jpg.
uczen
No i zostal 1 maly blad sad.gif
Jelsi przy wyborze skina wpiszesz skin=6 to automatycznie zaladuje sie skin 3 i spox.
Jesli jednal zamiast skin=1 wpiszesz skin=1a, 1x , 2a, 2x ... 5a, 5x to niestety pojawia sie przykra niespodzianka. Sam zobacz. Da sie to jakos wyeliminowac??
Cod
Twoja stronka chwilowo się nie ładuje, ale wiem, o co Ci chodzi. Dodaj po:

[php:1:a1ea1cfbb5]<?php
if(isset($HTTP_GET_VARS["skin"])) $skin=$HTTP_GET_VARS["skin"];
else $skin=1;
?>[/php:1:a1ea1cfbb5]
taką linijkę:

[php:1:a1ea1cfbb5]<?php
if(!is_int($skin)) $skin=1;
?>[/php:1:a1ea1cfbb5]
Powinno to działać tak, że jak ktoś sobie jakiekolwiek gówienko wpisze, strona wyświetli się na skinie 1.
uczen
Cytat
Powinno to działać tak, że jak ktoś sobie jakiekolwiek gówienko wpisze, strona wyświetli się na skinie 1.


Niestety jak wpisze kod :

[php:1:54e32d12fc]<?php
if(!is_int($skin)) $skin=1;
?>[/php:1:54e32d12fc]

to nie moge zmienic skina na zadnego innego sad.gif
Cod
Rzeczywiście. Mój błąd. Zmienna url'a nie będzie integerem, tylko zawsze tekstem. Spróbuj takie coś, zamiast tego, co ostatnio dodawaliśmy:

[php:1:b96e9ed11b]<?php
$ok=0;
$x=3; // tu wpisz numer ostatniego skinu, nie wiem już, ile ich tam masz hehe
for($i=1;$<=$x;$i++)
{
if($skin==$i) ok=1;
}
if($ok==0) $skin=1;
?>[/php:1:b96e9ed11b]
Powinno zadziałać...
uczen
jest jeszcze cos nie tak sad.gif
pojawia sie komunikat :

Kod
Parse error: parse error, unexpected T_IS_SMALLER_OR_EQUAL, expecting T_VARIABLE or '$' in C:FoxServwwwphpindex.php on line 11

dotyczy on linijki

Kod
for($i=1;$<=$x;$i++)


wiesz co jest nie tak??
Paul
[php:1:8fd58e16b6]
for($i=1;$<=$x;$i++)[/php:1:8fd58e16b6]
Nie ma $i

tak ma byc:

[php:1:8fd58e16b6]
for($i=1;$i<=$x;$i++)
[/php:1:8fd58e16b6]
uczen
No niestety jesli tak zrobie to wyrzuca blad do lini:

[php:1:6e39c1d212]<?php
if($skin==$i) ok=1;
?>[/php:1:6e39c1d212]

Myslalem ze powinno byc

[php:1:6e39c1d212]<?php
if($skin==$i) $ok=1;
?>[/php:1:6e39c1d212]

ale wtedy nie moge zmienic skina sad.gif Informacji o bledzie juz nie ma ale co mi z tego?
itsme
Cytat
[php:1:9ff561110e]<?php
if($skin==$i) ok=1;  
?>[/php:1:9ff561110e]

Myslalem ze powinno byc

[php:1:9ff561110e]<?php
if($skin==$i) $ok=1;  
?>[/php:1:9ff561110e]

A jaka jest roznica pomidzy tymi kodami questionmark.gif?
uczen
Cytat
A jaka jest roznica pomidzy tymi kodami questionmark.gif?


w drugim kodzie jest $ok smile.gif
scanner
Ke?
uczen
Cytat
Ke?


Moze Ty scanner wiesz jak mi pomoc? Jesli tak to podziel sie swoja wiedza....
Cod
Eh... trochę dałem plamę z tym kodem laugh.gif.

Nie chce mi się już z tym dłużej bawić, więc zrób po prostu takie coś:

[php:1:360369ad38]<?php
if($skin!=1&&$skin!=2&&$skin!=3) $skin=1; // i dopisz tego tyle, ile masz skinów
?>[/php:1:360369ad38]
Niech to wreszcie zadziała winksmiley.jpg.
uczen
tak tez mam smile.gif

w sumie to nie jest wielki blad i zamykam temat smile.gif

Jesli ktos mialby dobre rozwiazanie to prosze napisac 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-2024 Invision Power Services, Inc.