Skocz do zawartości

Zaawansowana wyszukiwarka


Strefamocy

Rekomendowane odpowiedzi

Witam ponownie,

szukajka działa prawidłowo ale muszę poprawić pewną rzecz i nie za bardzi wiem jak się do tego zabrać.

Otóż w formularzu generuję automatycznie z bazy kategorię następującym kodem:

Kategoria: <br/>
	   	<?
		   $i=1;			
			  while($a=mysql_fetch_array($wynik_zapytania))
	{
				 $id=$a["ID_Kategorii"];
				 $kategorie=$a["Nazwa_Kategorii"];
		  ?>
		<input type='checkbox' name='kategoria<?echo $i++;?>' value='<?echo $id;?>' checked='checked'/><?echo $kategorie; echo "<br/> ";
			 } 
?>

I przechwytuje te dane w pliku gdzie pokazuje rezultat szukania w następujący sposób:

$i=1;
	if(isset($_GET["kategoria1"])) $tabpom[$i]=1; else $tabpom[$i]=0;$i++;
	if(isset($_GET["kategoria2"])) $tabpom[$i]=1; else $tabpom[$i]=0;$i++;
	if(isset($_GET["kategoria3"])) $tabpom[$i]=1; else $tabpom[$i]=0;$i++;
	if(isset($_GET["kategoria4"])) $tabpom[$i]=1; else $tabpom[$i]=0;$i++;
	if(isset($_GET["kategoria5"])) $tabpom[$i]=1; else $tabpom[$i]=0;$i++;

	//pobranie z bazy ilości kategorii
	unset($_GET["kategoria1"]);
	unset($_GET["kategoria2"]);
	unset($_GET["kategoria3"]);
	unset($_GET["kategoria4"]);
	unset($_GET["kategoria5"]);

	$pytpom="SELECT COUNT(ID_Kategorii) as ILE FROM `Kategorie`";
	$wynikpom=mysql_query($pytpom);
	while($ttmp=mysql_fetch_array($wynikpom)) $ile=$ttmp["ILE"];

	//licznik kategorii
	$ilekat=0; for($i=1;$i<=$ile;$i++) {if($tabpom[$i]==1) $ilekat++;}

	//przypadek kiedy wybrano jedna kategorie
	if($ilekat==1) { $i=1; while($tabpom[$i]==0 && $i<=$ile) $i++; 
		$temp=$i;$DODATKOWO.=" AND `kategoria`=$temp";}


	//przypadek 2 i wiecejj kategorii
	else {$i=1; while($tabpom[$i]==0 && $i<=$ile) $i++; 
		//echo $i;
		$temp=$i;$DODATKOWO.=" AND (`kategoria`=$temp"; $i++;
		while($i<=$ile) {if($tabpom[$i]==1) {$temp=$i; $DODATKOWO.=" OR `kategoria`=$temp";} $i++;}
		$DODATKOWO.=')';}

Jak zauważyliście jeśli dodam do bazy kategorię to muszę dopisać dwie linijki kodu.

Musze to tak przerobić aby również automatycznie się to robiło ale nie wiem jak się za to zabrać.

Prosze o pomoc.

Pozdrawiam

Strefamocy

Odnośnik do komentarza
Udostępnij na innych stronach

Jakieś bardzo toporne i zagmatwane masz te swoje rozwiązania w sumie z dosyć prostego zagadnienia jakim jest zrobienie wyszykiwarki. Może napisz jeszcze raz co ma być realizowane za zadanie?

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Możesz zrobić pola wyboru inaczej:

<INPUT TYPE="checkbox" value="<?echo $idkat;?>" NAME="kategorie[]">

następnie w foreach() odczytać zawartość $_POST[kategorie] i na podstawie tego przygotować odpowiednie zapytanie moze zamiast OR dac IN() itd... Prawdę powiedziawszy, patrząc na Twoj kod to raczej całość jest do przekodowania....

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Konieczna jest metoda GET więc post odpada.

Proszę w takim razie jeśli to nie problem przekodowanie mojego kodu (najlepiej jeden i drugi) na kod z tą tablicą.

Uczę się tego dopiero dlatego programuje jak umiem, wiem że nie są to rozwiązania optymalne ale nie muszą być a jedynie w miarę sprawnie działac.

Z góry dziękuje

Odnośnik do komentarza
Udostępnij na innych stronach

Czy mogę liczyć na Waszą pomoc?

Liczysz na pomoc, czy też na napisanie wyszukiarki od podstaw? Jeśli tak zapraszam na PRV lub do działu ogłoszenia...

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Czy mogę liczyć na Waszą pomoc?

Liczysz na pomoc, czy też na napisanie wyszukiarki od podstaw? Jeśli tak zapraszam na PRV lub do działu ogłoszenia...

Liczę na pomoc bo wyszukiwarka jest napisana i działa poprawnie tylko chę aby ktoś pomógł mi usprawnić to aby póniej użytkownik nie musiał dopisywać linii kodu, aby to się automatycznie robiło.

Dlatego chcę aby ktoś to napisał choćby na przykładzie, ponieważ tak jak już wczesniej pisałem zaczynam programować w php i nie znam wszystkich technik i sposobów rozwiązywania problemów.A tego akurat nie umiem rozwiązać poprawnie.

Odnośnik do komentarza
Udostępnij na innych stronach

Poniżej zamieszczam prototyp kodu. Jeśli o nadal nie wystarcza to cóż -> ucz się pilnie dalej...

<?
if(isset($_GET[kategoria]))
{
foreach($_GET[kategoria] AS $klucz => $wartosc)
{
	print 'wybrano->'.$wartosc.' ';
	$DODATKOWO.=$wartosc;
	if(count($_GET[kategoria])-1>$ii)$DODATKOWO.=",";
	$ii++;
}
}
echo '<br />IN('.$DODATKOWO.')';
?>

<form method="GET">
<input type="checkbox" name="kategoria[]" value="k1">k1<br />
<input type="checkbox" name="kategoria[]" value="k2">k2<br />
<input type="checkbox" name="kategoria[]" value="k3">k3<br />
<input type="checkbox" name="kategoria[]" value="k4">k4<br />
<input type="submit" value="go" />
</form>
<a href="<?=$PHP_SELF;?>">F5</a>

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności