v2.5.2
Giriş yap

Url Filtreleme

uluturk
696 defa görüntülendi

Merhaba dostlar ufak bir sorun hakkında sizlerden biraz yardım almak istiyorum.
Sorunum filtreleme, filtreleme olayını tabikide yapabiliyorum fakat Url'de istediğim görüntüyü elde edemedim.
Örnek vermem gerekirse laravel projem'de urlde şu şekilde filtreleme yapmak istiyorum "siralama=fiyat:asc;isim:asc;marka:marka_adi"
gibi bir filtreleme yapmak istiyorum url kısmında urlencode urlendecode vs. vs. bişeyler buldum netten fakat nedense işe yaramadılar.
Şimdiden cevaplarınız için teşekkürler

Cevap yaz
Cevaplar (5)
uluturk
1480 gün önce

Şöyle bir kod bloğu yazarak sorunumu çözebildim php tarafındaki onlarca fonksiyon çözemedi tahmin ettiğim gibi
çözümü javascript verdi. değerli cevaplarınız için çok teşekkür ederim.

$(document).ready(function () {

$('#sorting-options-form').on('change', '[data-selector="sorting-option"]', function() {
    filterName = $('#name').find(":selected").val();
    filterShow = $('#show').find(":selected").val();

    var searchParams = [];
    if (filterName.length > 0) {
        searchParams.push('name:' + filterName);
    }
    if (filterShow.length > 0) {
        searchParams.push('show:' + filterShow);
    }
    var sortingParams = [];
    if (searchParams.length > 0) {
        sortingParams.push('filter=' + searchParams.join(';'));
    }

    var result = decodeURIComponent('?' + sortingParams.join('&'));

    window.location.href = result;
});

});

umutkorkmaz
1480 gün önce

Javascript ile redirect yapmak için window.location = "?href=123"; şeklinde yönlendirme yapabilirsin.

uluturk
1480 gün önce

değerli cevaplarınız için teşekkür ederim dostlar fakat bu fonsiyonlar tam olarak sorunumu çözemediler.
bu veya benzeri fonksiyonlarlar ile urlyi süzebiliyorum zaten hali hazırda fakat süzdüğüm çıktıyı redirect edince yine aldığım sonuç değişmiyor bunu javascript ile yapmak lazım sanırım ama stackowerde nasıl arama yapacağımı bilemedim birazda :)

webdevyusuf
1480 gün önce

Öncelikle merhaba tam olarak ne demek istediğini anlamadım ve normal bir url adresinden yola çıkarak
anlatacağım sonra zaten mantığı anlayıp farklı bir şey yapmak istiyorsan kendine uyarlıyacaksın...

<?php

## Örnek URL: http://localhost/test.php?siralama=a&isim=b&marka=c ##
$url = $_SERVER['REQUEST_URI'];
$url = explode("?",$url);
$url = end($url);
$url = explode("&",$url);

$arr = array();

for($i = 0; $i < count($url); $i++){
    $newArr = explode("=", $url[$i]);
    $arr[] = end($newArr);
}

?>
<pre>
<?php
print_r($arr);
?>
</pre>

Bu arada ben basitce anlattım ama anladığımca
yukarda Umut hocanın dediği detaylı ve sanırım ne demek istediğini daha
iyi anlamış

umutkorkmaz
1480 gün önce

Doğru mu anladım pek emin değilim, ancak şu tarz bir yapı sanırım size yardımcı olacaktır.

<?php 
function getFilters(){
	if(!isset($_GET['siralama'])) return null;

	$siralama = $_GET['siralama'];
	$params = explode(';',$siralama);

	foreach($params as $f){
		$ff = explode(':',$f);
		$filtreler[$ff[0]] = $ff[1];
	}
	return $filtreler;
}

function setFilters($args){

	$son = end($args);

	$filter_string = '';
	foreach($args as $arg => $value){
		$filter_string .= $arg.':'.$value;
		if($value != $son){
			$filter_string .= ';';
		}
	}
	return $filter_string;
}


function addFilters($args){
	$filtreler = getFilters();

	foreach(array_keys($args) as $arg){
		$filtreler[$arg] = $args[$arg];
	}

	echo setFilters($filtreler);
}

addFilters(array(
	'marka' => 'marka_adi',
	'deneme' => 'deniyorum'
));

//sonuç : fiyat:asc;isim:asc;marka:marka_adi;deneme:deniyorum
?>