PHP GET METODU İLE URL YARDIM
Merhaba Sorum şu GET ile işlem çağırdığımda
?ornek=1 linke tıkladığımda .com/deneme-sayfası?ornek=1 oluyor
?ornek=2 linke tıkladığımda .com/deme-sayfası?ornek=2 oluyor
şimdi urlde soru işareti yoksa ilk önce örnek 1 ve ya 2 hangisine tıklarsa urlde ilk önce soru işareti çıkartsın istiyorum.
bana acil yardımcı olurmusunuz ? günlerdir araştırıyorum takıldım.
örnek olarak https://www.lescon.com.tr/erkek-spor-performans/ sitesinde listeleme ve sayfalamayı test edebilirsiniz.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (17)
tayfun hocam dediğiniz mantığı normalde yapıyorum istediğim gibi sorunsuz çalışıyor lakin kullanıcı ilk önce sayfalamada ikinci sayfaya gittiğinde listelemeyi çalıştırırsa sayfa iki iptal oluyor sayfa bir oluyor
ben size belirttiğim sitedeki gibi olsun istiyorum ilk önce listelemeyi kullanırsa daha sonra sayfalamayı kullanırsa ?pagination=2&listeleme=tarih olsun istiyorum veya ilk önce listelemeyi kullanırsa
?listeleme=tarih&pagination=2 olsun istiyorum sorunum bu ilk önce hangi GET i çalıştırırsa o GET methodunun başında soru işareti ? olsun istiyorum.
<a href="Category/<?php echo seo($sayfa_sonuc["id"]).'-'.seo($sayfa_sonuc["adi"]); ?>?sort=new_by_date" <?php if($_GET['sort'] == "new_by_date") {?> selected="selected" <?php }?>>TARİHE GÖRE YENİ</a>
<a href="Category/<?php echo seo($sayfa_sonuc["id"]).'-'.seo($sayfa_sonuc["adi"]); ?>?sort=old_by_date" <?php if($_GET['sort'] == "old_by_date") {?> selected="selected" <?php }?>>TARİHE GÖRE ESKİ</a>
<a href="Category/<?php echo seo($sayfa_sonuc["id"]).'-'.seo($sayfa_sonuc["adi"]); ?>?sort=popular_products" <?php if($_GET['sort'] == "popular_products") {?> selected="selected" <?php }?>>POPÜLER ÜRÜNLER</a>
<a href="Category/<?php echo seo($sayfa_sonuc["id"]).'-'.seo($sayfa_sonuc["adi"]); ?>?sort=by_name_az" <?php if($_GET['sort'] == "by_name_az") {?> selected="selected" <?php }?>>İSME GÖRE A>Z</a>
<a href="Category/<?php echo seo($sayfa_sonuc["id"]).'-'.seo($sayfa_sonuc["adi"]); ?>?sort=by_name_za" <?php if($_GET['sort'] == "by_name_za") {?> selected="selected" <?php }?>>İSME GÖRE Z>A</a>
<!-- Sayfalama -->
<?php if($toplam_icerik > 6){ ?>
<ul class="pagination">
<?php if ($previous = $page -1){?>
<li class="page-item">
<a class="page-link" href="Category/<?php echo seo($sayfa_sonuc["id"]).'-'.seo($sayfa_sonuc["adi"]); ?>?pagination=<?php echo $previous;?>">
<i class="fas fa-angle-left"></i>
</a>
</li>
<?php } else {?>
<li class="page-item">
<a class="page-link">
<i class="fas fa-angle-left"></i>
</a>
</li>
<?php }?>
<li class="page-item active"><a class="page-link"><?php echo $page; ?></a></li>
<?php if ($oncekisayfa = $page +1){?>
<li class="page-item">
<a class="page-link" href="Category/<?php echo seo($sayfa_sonuc["id"]).'-'.seo($sayfa_sonuc["adi"]); ?>?pagination=<?php echo $oncekisayfa;?>">
<i class="fas fa-angle-right"></i>
</a>
</li>
<?php } else {?>
<li class="page-item">
<a class="page-link">
<i class="fas fa-angle-right"></i>
</a>
</li>
<?php }?>
</ul>
<?php }?>
<!-- Sayfalama -->
sorunum bu sanırım anlamadınız sorunumu
bak şöyle düşün linki oluştururken tüm olasılıklarına göre oluşturabilirsin örneğin;
<a href="xxx.com/linkblabla?sayfa=<?=$_GET['sayfa']?>&listeleme=<?=$_GET['listeleme']&abc=<?=$_GET['abc']?>?>">Link</a>
bu mantıkta başta olmuş sonda olmuş fark etmez değeri varsa listelenir, sayfalama içinde bu parametrelerini koy, oluşturduğun link yapısı içinde, formun içinde, takıldığın nokta olman gereken nokta değil sorun orada başlıyor :)
hocam kurumsal firmamaa websitesinde ürünler bölümünde lisyelemeyi ziyaretco yapabilsin istiyorum lakin sayfalamayi kullaninca ?sayfalama=122&listeleme=tarih yapamiyorim ilk once hangi sistemi kullanirsa ilk basta ?listeleme veya ?sayfalama yapamiyorum
sorunum bu form ile get istegimde sorun yok icerik listelemedede sorun yok tek sorunum ? - & isaretlerini getirmekte
en basiti form içinde get isteği atmakla olur
<form action="" method="get">
<input type="hidden" name="ornek" value="1" />
<button type="submit">Ekle</button>
</form>
<form action="" method="get">
<input type="hidden" name="ornek" value="2" />
<button type="submit">Ekle</button>
</form>
bu zaten gerekli eklemeyi otomatik yapacak ancak neden böyle bir şeye ihtiyacın oldu onu anlayamadım :)
Bu şekilde neden yapmak isteyesinki onun yerine direk https://site_ismi.com/ornek/1
şeklinde yap daha mantıklı değil mi?
if(isset($_GET) && !empty($_GET)){ // GET ile gelen değer varsa
$query = [];
if(isset($_GET['page']) && !empty($_GET['page'])){ // GET ile key i page olan bir değer varsa
$query['page'] = $_GET['page'];
}
if(isset($_GET['question']) && !empty($_GET['question'])){ // GET ile key i question olan bir değer varsa
$query['question'] = $_GET['question'];
}
if(isset($_GET['category']) && !empty($_GET['category'])){ // GET ile key i category olan bir değer varsa
$query['category'] = $_GET['category'];
}
if(!empty($query)){
echo '?' . http_build_query($query);
}
}
link verdiğin kısma http_build_query
den gelen parametreyi eklersin.
örnek olarak ?id=1
olan bir link vereceksen.
<a href="http://example.com/search?id=1&<?=http_build_query($query);?>">Link</a>
bunu bi fonsiyonda halledersin ben örnek olması açısından yazdım.
Senin aradığın fonksiyon bu https://www.php.net/manual/tr/function.http-build-query.php
$query = [
'page' => 2,
'question' => 'abc',
'category' => 'cloth'
];
echo '?' . http_build_query($query);
// Output: ?page=2&question=abc&category=cloth