kamilw
21.03.2007, 15:46:20
Witam. Drodzy koledzy mam taki problem:
Chcem żeby adres strony wyglądał tak: www.twojadomena.pl/?type=nazwa folderu&nazwa pliku
ale także żeby działała tylko pierwsza zmienna /?type=nazwa pliku z katalogu głównego
Narazie wykonałem samą pierwszą funkcję czyli działa tylko /?type=nazwa pliku
<?php
$id = $_GET['type'];
if ($id=='')
$id = 'main';
echo "bład, brak takiej strony"; } else {
require("".$id.".html");
}
?>
Jak ktoś by mógł pomóc w zrobieniu drugiej części kodu, to z góry dzięki.
Łukasz O.
21.03.2007, 16:06:00
adres: www.twojadomena.pl/?type=nazwa_folderu+nazwa_pliku
<?php
list
($folder,$plik)=explode($_GET['type'],'+');
//otrzymujesz
$folder=nazwa_folderu
$plik=nazwa_pliku
?>
na szybko nie sprawdzałem, ale powinno być OK
kamilw
21.03.2007, 16:18:46
Taki o błąd wyskoczył:
Parse error: syntax error, unexpected T_VARIABLE
Zastosowanie dla przykładu takiej funkcji zobaczycie na
http://rignroll.com/.
Łukasz O.
21.03.2007, 16:25:26
Boże... postaraj się chociaż sprawdzić co jest nie tak:/
<?php
//www.twojadomena.pl/?type=jakis_folder;nazwa_pliku2
list
($folder,$plik)=explode(';',$_GET['type']);//otrzymujesz
print $folder; //jakis_folder print $plik; //nazwa_pliku2 ?>
kamilw
21.03.2007, 16:34:34
działa, jest jedno ale.
jak wejde na ?type=publ_id;publ_id=2
to wyskakuje publ_idpubl_id=2 . A chciałbym zeby wyskoczył plik z folderu publ_id o nazwie publ_id=2.html
Kamson
21.03.2007, 18:47:08
<?php
//www.twojadomena.pl/?type=jakis_folder;nazwa_pliku2
list
($folder,$plik)=explode(';',$_GET['type']);
// sprawdz czy podales folder , jeśli nie to ustawia folder na 'main'
if(!$plik) {
$plik = $folder;
$folder = 'main';
}
print 'bład, brak takiej strony'; } else {
include($folder.'/'.$plik.'.html');
}
?>
z tym że jeśli nie podajesz nazwy folderu i jest tylko plik na końcu musi być ' ; '
kamilw
22.03.2007, 15:32:10
Dzięki, jeszcze taka sprawa żeby zamiast ; było & . Coś źle robię bo jak zmieniam znaki to wyświetla błąd.
Kamson
22.03.2007, 16:39:12
nie wiem czy tak da ... bo & jest znakiem końca zmiennej i początku następnej

jeśli zrobisz xx.php?type=xxx&yyy&zzz
to zmiena $_GET['type'] ma wartość tylko 'xxx' zato w tablicy $_GET ?chyba pojawią sie indexy 'yyy' i 'zzz'
kamilw
22.03.2007, 19:05:02
Dać się da jakoś. Widziałem takie zastosowanie na dodatek z kilkoma zmiennymi. Kurcze żebym wiedział jak to zrobić...
Kamson
23.03.2007, 08:55:56
sprawdzałem i powinno działać

<?
if($_GET) {
if(count($klucze) == 1
) { $folder = 'main';
$plik = $_GET['type'];
} elseif(count($klucze) == 2
) { $folder = $_GET['type'];
$plik = $klucze[1];
} else {
exit('błędne zapytanie'); }
// ładuje plik
print 'bład, brak takiej strony'; } else {
include($folder.'/'.$plik.'.html');
}
}
?>
kamilw
23.03.2007, 15:08:36
Dzięki, a jak zrobić żeby działało samo ?type tz ?type=news przekierowywało na index.html w folderze news?
Kamson
23.03.2007, 17:16:52
powiedziałeś ze chcesz zeby jak jest samo type to przekierowywało na katalog main ... to w koncu jak chcesz?
<?
if($_GET) {
if(count($klucze) == 1
) { $folder = $_GET['type'];
$plik = 'index';
} elseif(count($klucze) == 2
) { $folder = $_GET['type'];
$plik = $klucze[1];
} else {
exit('błędne zapytanie'); }
// ładuje plik
print 'bład, brak takiej strony'; } else {
include($folder.'/'.$plik.'.html');
}
}
?>
kamilw
23.03.2007, 18:00:05
żeby po wpisaniu ?type=costam to wyświetlało plik costam.html nie koniecznie z folderu costam.
Kamson
23.03.2007, 19:11:23
ręce mi opadają ....
najpierw chciałeś ze jak jest samo type to ładuje plik z katalogu maim
potem żeby ładować index z katalogu który podajesz w type
a teraz jeszcze co innego... jak sie zdecydujesz to daj znać
kamilw
23.03.2007, 19:15:32
Sorry, pokręciło mi się. Już sobie z tym poradziłem. Teraz mam inny problem.
/?type=publ_id&publ_id=2 Folder publ_id a nazwa pliku publ_id=2 i wyświetla że nie ma takiej strony. Chyba trzeba dodać zmienną jeszcze.
Ociu
23.03.2007, 19:15:58
Dane się, why not. Jest tylko jedno ale. Nazwy plików, nie mogą się powtarzać. Tak to tworzysz mapę plików, pakujesz ją do tablicy, potem tylko array_key_exists, jeśli istnieje to iclude jak nie to error i świat jest lepszy.
-- Edit
Spóźniłem się.
kamilw
23.03.2007, 19:25:44
Hmm a możesz to wytłumaczyć na przykładzie czy coś. Bo tak to ja nic nie rozumiem
Kamson
23.03.2007, 19:26:59
Cytat(kamilw @ 23.03.2007, 19:15:32 )

Sorry, pokręciło mi się. Już sobie z tym poradziłem. Teraz mam inny problem.
/?type=publ_id&publ_id=2 Folder publ_id a nazwa pliku publ_id=2 i wyświetla że nie ma takiej strony. Chyba trzeba dodać zmienną jeszcze.
bo skrypt szuka pliku ' publ_id.html ' tak jak wcześniej prosiłeś żeby robił.... wklej kod może coś poradzimy
kamilw
23.03.2007, 19:30:45
kod czego? Index.php to ten co mi podałeś ostatnio. Ja myślę że trzeba dodać zmienną publ_id a nazwę pliku jako 2. Tak mi się zdaje.
http://rignroll.com/ Popatrz na linki różnych podstron. Ja muszę zrobić identycznie
Kamson
23.03.2007, 19:37:35
<?
if($_GET) {
if(count($klucze) == 1
) { $folder = $_GET['type'];
$plik = 'index';
} elseif(count($klucze) == 2
) { $folder = $_GET['type'];
if($_GET[$klucze[1]]) {
$plik = $klucze[1].'='.$_GET[$klucze[1]];
} else {
$plik = $klucze[1];
}
} else {
exit('błędne zapytanie'); }
// ładuje plik
print 'bład, brak takiej strony'; } else {
include($folder.'/'.$plik.'.html');
}
}
?>
i teraz chwila objaśnienia :
gdy wpiszesz :
- index.php?type=news ( załaduje plik :
news/index.html )
- index.php?type=publ_id&publ_id ( załaduje plik
publ_id/publ_id.html )
- index.php?type=publ_id&publ_id=2 ( załaduje plik
publ_id/publ_id=2.html )
kamilw
23.03.2007, 19:47:31
Dzięki, jeszcze ostatnia sprawa. Żeby po wejściu na stronę index.php przekierowywało na ?type=news
kwiateusz
23.03.2007, 20:22:31
kamilw
23.03.2007, 21:24:27
Dzięki,
a teraz następny problem
http://rignroll.com/index.php?type=image&image_id=329index.php?type=image&image_id=329 image folder image_id=329 plik. z koncówką .jpg ,
Czy nie dało by się zmodyfikować skrypt. Żeby odnajdywał dany plik w folderze tylko bez podawania końcówki? Nigdy nie zdarzy się żeby były dwa takie same pliki w folderze (costam.jpg i costam.html)
Ociu
24.03.2007, 09:07:04
Jeśli masz stały folder to tak:
<?php
$strDirName = 'nazwaFolderu/';
$strFile = $strDirName . $_GET['plik'] . '.jpg';
print "<img src='".$strFile."' alt='plik'>"; ?>
kamilw
24.03.2007, 14:59:33
no ale gdzie to wpisać? do index.php? I to musi współgrać z poprzednim skryptem
Kamson
24.03.2007, 17:31:54
Powinno działać nie sprawdzałem ...
skrypt nie wykrywa typów plików ale sprawdza po kolei każdą końcówkę jaką ma w tablicy $typyPlikow
<?
if($_GET) {
if(count($klucze) == 1
) { $folder = $_GET['type'];
$plik = 'index';
} elseif(count($klucze) == 2
) { $folder = $_GET['type'];
if($_GET[$klucze[1]]) {
$plik = $klucze[1].'='.$_GET[$klucze[1]];
} else {
$plik = $klucze[1];
}
} else {
exit('błędne zapytanie'); }
$typyPlikow = array('jpg', 'gif', 'png', 'html'); $graficzne = array('jpg', 'gif', 'png'); foreach ($typyPlikow as $koncowka) {
// ładuje plik
$blad = TRUE;
} else {
print '<img src="'.$folder.'/'.$plik.'.'.$koncowka.'" alt="'.$plik.'" />'; } else {
include($folder.'/'.$plik.'.'.$koncowka);
}
$blad = FALSE;
break;
}
if($blad) {
print 'bład, brak takiej strony'; }
}
}
?>
-- EDIT
Poprawiłem
kamilw
24.03.2007, 17:42:12
Parse error: syntax error, unexpected '{' in index.php on line 27 Bym sam to poprawił, ale nie wiem który za co odpowiada.
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.