Url Filtreleme
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
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (5)
Şö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;
});
});
Javascript ile redirect yapmak için window.location = "?href=123";
şeklinde yönlendirme yapabilirsin.
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 :)
Ö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ış
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
?>