Strona 1 z 2

$_GET nie pobiera zmiennej w każdym przypadku.

Napisane: środa, 15 października 2014, 00:11
przez tymek
Niby prosty problem a jednak nie mogę sobie z nim poradzić. Mam sobie np taki link
http://strona.pl/kategoria/?w=3
Kulturalnie więc chciałbym sobie pobrać zmienną $w, niestety zmiennej w ogóle nie pobiera. oczywiście sprawdziłem to również z echo czy print_r, wynik to pusta wartość lub gdy zmienną narzucę (int) to "0".
Problem więc nie leży po stronie poprawności kodu. Poświadcza to również fakt iż ta sama biblioteka bez problemu radzi sobie na stronie głównej. czyli np.
http://strona.pl/?w=3
Warto dodać że każda podstrona działa na pliku startowym, który pobiera link i na podstawie zawartości w porównaniu z tabelą w bazie sprawdza jaką stronę ma załadować(podobnie jak to jest tłumaczone w kursie;)
Myślę zatem że problem jest w pliku .htaccess, niestety nie znam się dobrze na tych regułkach.
A plik .htaccess wygląda tak:

Code: Zaznacz cały

RewriteEngine On
RewriteCond %{REQUEST_URI} \.html$
RewriteRule ^([a-zA-Z0-9-/.,]+)$ index.php?page=$1 [L]
RewriteCond %{REQUEST_URI} [^/]$
RewriteRule ^([^.]+)$ $1/ [R=301,L]
RewriteRule ^([^.]+)/$ index.php?page=$1 [L]

Re: $_GET nie pobiera zmiennej w każdym przypadku.

Napisane: środa, 15 października 2014, 00:47
przez Morfidon
Hej,

Podaj kod PHP. Nie masz ustawionego RewriteBase. Dlaczego korzystasz ze zmiennej którą nazwałeś "w", kiedy w .htaccess zmienna nazywa się "page"?

Pozdrawiam :)

Re: $_GET nie pobiera zmiennej w każdym przypadku.

Napisane: środa, 15 października 2014, 01:15
przez tymek
Mam ustawiony RewriteBase ale go nie pokazałem ;)
Co do zmiennej "w" to chcę mieć sobie np zmienną "w" bo takową pobieram w kodzie, zmienna page to inna bajka, która jest potrzebna do interpretacji w kodzie i sprawdzenia w bazie czy takowa strona istnieje. : )
Co do kodu nie wiem za bardzo co mam pokazać ; / przecież całego Cmsa nie pokażę ;D, a zmienną z pasku pobieram normalnie np.

Code: Zaznacz cały

$strona_nr=$_GET['w'];
Akurat ta zmienna jest mi potrzebna do pagenizatora.
Kod naprawdę skrupulatnie sprawdzałem przez ponad dwie godziny. I działa on dobrze, skopiowałem go całego i sprawdziłem w osobnym pliku i katalogu. Tam było wszystko ok. Zresztą jak już wspomniałem cały pagenizator działa bardzo dobrze, sprawdziłem kod i problem jest w miejscu z pobieraniem tej zmiennej, a nawet sądzę że pobiera ta zmienną tylko jakby w ogóle jej tam nie było w tym pasku. Wina ewidentnie stoi po stronie tego wyświetlania w pasku, ponieważ na tej samej stronie, ale na innej podstronie gdzie działa normalnie ten pagenizator, dodałem dodatkową kategorię na pasku czyli z np home.pl/?z=1 zrobiłem home.pl/jakas_kategoria/?z=1 to on już jej nie widział. Co do pliku startowego to działa on podobnie jak na lekcji z kursu o ładnych urlach. Nie ma tam żadnych kruczków, przez które mogłoby to nie działać.

Re: $_GET nie pobiera zmiennej w każdym przypadku.

Napisane: środa, 15 października 2014, 11:24
przez Morfidon
Dobra jedyna rzecz jaka mi przychodzi do głowy to fakt, że KATEGORIA, którą używasz nie jest stworzona ręcznie a jest stworzona z pomocą .htaccess z pomocą page, a Ty próbujesz w adresie mieć połowę adresu przepisanego z pomocą .htaccess, a połowę nie? Oczywiście .htaccess wpływa na to. Jaki to ma w ogóle sens? ;)

Po prostu skorzystaj z tego kodu co był w kursie SEO przedstawiony i możesz przetwarzać to co otrzymujesz z bazy w taki sposób aby otrzymać odpowiednią "podstronę" wybierając część z podstrony, która Cię interesuje z pomocą funkcji do przerabiania stringów. Zrób własny parser do prasowania URL przepisanego z samą zmienną $page.

Ewentualnie musisz całkowicie zmienić .htaccess pod tą sytuację.

A może pagenizator zrób tak jak ja mam tu?:
http://videokurs.pl/blog.php#2

Wszystko przez AJAX i w URL nie ma zmiennej poza #

Pozdrawiam ;)

Re: $_GET nie pobiera zmiennej w każdym przypadku.

Napisane: środa, 15 października 2014, 14:59
przez tymek
No dobra więc tak postanowiłem zrobić, a mianowicie napisałem w funkcji, którą pan udostępnił w tym kursie o pozycjonowaniu - ladne urle, żeby jak znajdzie kategorie która jest liczbą to żeby zwrócił sobie taka zmienną którą korzystam w tym pagenizatorze, tylko teraz nie zwraca mi tablicę poprzedniej kategorii czyli np strona.pl/kategoria/2/ powinnien na mój rozum zwrócić (cały czas mówię o kodzie zbliżonym do Pana lekcji o urlach) tablicę z tytułem, opisem strony itd. A tu nic ni ma; / jakby tylko zwracał tą ostatnią zmienną. Czemu więc tak się dzieje jak to zmienić?

Re: $_GET nie pobiera zmiennej w każdym przypadku.

Napisane: środa, 15 października 2014, 16:03
przez Morfidon
Niestety nie jestem w stanie stwierdzić dlaczego coś nie działa bez kodu.

Sugerują przy debugowaniu wypisywać wszystkie wartości, czasem usuwać kod "wstecz", aby znaleźć przyczynę.

Re: $_GET nie pobiera zmiennej w każdym przypadku.

Napisane: środa, 15 października 2014, 17:29
przez tymek
http://mojastrona.di8.pl/cc.php No wiec tutaj jest ten kod, tam gdzie gwiazdki zaznaczyłem miejsce gdzie wywołuje przykładowo wartość true. I teraz taka sprawa, kiedy mam wcześniejszą kategorię np w home.pl/kat1/12/ będzie to kat1, to funkcja powinna zwrócić przy pomocy tego

Code: Zaznacz cały

	if (count($categoriesAndPages) == ($i + 1))
	  	 			{
			  	 		$category = mysql_query("SELECT id, content, title, description, modul, keywords FROM categories WHERE category_name = '".$categoriesAndPages[$i]."' ") or die (mysql_error());

			  	 		
			  	 		if (mysql_num_rows($category)){
			  	  	$tabi = mysql_fetch_assoc($category);

			  	 	
			  	 return $tabi ;	}
tablicę z id, conetentem, modułem itd,.dla kat1-- jednak przez to że jest ta kolejna kategoria o nazwie '12' tak się nie dzieje.
Co mogę zrobić?

Re: $_GET nie pobiera zmiennej w każdym przypadku.

Napisane: środa, 15 października 2014, 17:37
przez Morfidon
Ciężko mi się czyta ten kod i analizuje, sformatuj go i prześlij na wklej.org

Re: $_GET nie pobiera zmiennej w każdym przypadku.

Napisane: środa, 15 października 2014, 17:57
przez tymek

Re: $_GET nie pobiera zmiennej w każdym przypadku.

Napisane: środa, 15 października 2014, 18:32
przez Morfidon
Sformatowanie to znaczy zmień to:

Code: Zaznacz cały

	
			  	 		if (mysql_num_rows($category)){
			  	  	$tabi = mysql_fetch_assoc($category);

			  	 	
			  	 return $tabi ;	}
na to:

Code: Zaznacz cały

	
if (mysql_num_rows($category))
{
  $tabi = mysql_fetch_assoc($category);
  return $tabi ;	
}
i tak do wszystkiego.
uwierz jak sformatujesz to może sam znajdziesz błąd. Nie jest to ani trochę złośliwe, naucz się ładnie formatować kod, a zobaczysz jak dużo szybciej znajdziesz problemy.