$_GET nie pobiera zmiennej w każdym przypadku.

Tutaj dyskutujemy o PHP oraz zgłaszamy i rozwiązujemy problemy dotyczące tego języka.
tymek
Początkujący
Początkujący
Posty: 21
Dołączył(a): poniedziałek, 14 kwietnia 2014, 10:19

$_GET nie pobiera zmiennej w każdym przypadku.

Post 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]
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

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

Post 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 :)
tymek
Początkujący
Początkujący
Posty: 21
Dołączył(a): poniedziałek, 14 kwietnia 2014, 10:19

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

Post 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ć.
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

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

Post 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 ;)
tymek
Początkujący
Początkujący
Posty: 21
Dołączył(a): poniedziałek, 14 kwietnia 2014, 10:19

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

Post 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ć?
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

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

Post 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ę.
tymek
Początkujący
Początkujący
Posty: 21
Dołączył(a): poniedziałek, 14 kwietnia 2014, 10:19

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

Post 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ć?
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

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

Post przez Morfidon »

Ciężko mi się czyta ten kod i analizuje, sformatuj go i prześlij na wklej.org
tymek
Początkujący
Początkujący
Posty: 21
Dołączył(a): poniedziałek, 14 kwietnia 2014, 10:19

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

Post przez tymek »

Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

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

Post 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.
Post Reply