PHP HTTP Build Query Fonksiyonu

Merhaba arkadaşlar, bu yazımda sizlere birçoğunuzun karşılaşmış olduğu veya karşılaşacak olduğu bir sorunun çok basit bir çözümünü anlatacağım.

Bu derste biraz daha kendi sorunumu nasıl çözdüğümden bahsedeceğim için bazı arkadaşlar sıkılabilir veya bu fonksiyonu daha detaylı bir şekilde görmek isteyebilirler. Onlar için php.net’teki yazının linkini buraya koyuyorum. Şimdi sorunuma ve nasıl çözdüğüme gelelim. İnşaAllah düzgün anlatabilirim.

Bu sıralar üzerinde çalıştığım projede anasayfamda sayfalama sistemi yapmıştım. Kullandığım link yapısı da şöyleydi: “index.php?sayfa=1/2/3” her neyse. Daha sonra şöyle bir şey gerekti. Ben yine burada olduğu gibi bir de verilerimi özelliklerine göre ayırıyordum. Örnek olarak cevaplanmamış, çözülmemiş ve çözülmüş gibi. Onu da şöyle bir link yapısı ile yapıyordum: “index.php?durum=cozulmus/cozulmemis/cevaplanmamis”. Tam her şey çok güzel çalışıyor derken bir sorunla karşılaştım. Cevaplanmamış verilerin 2. sayfasına gitmek istediğimde bunu yapamayacağımı farkettim. Bunun için de şöyle bir linke sahip olmam gerekiyordu: “index.php?durum=cevaplanmamis&sayfa=2”. Bu linki yaparken birçoğumuzun kullanacağı yol büyük ihtimalle bir koşullu ifade yazıp buna göre linkler hazırlamaktır. Ben de bunu yaparken düşündüm ve bence bunun bir yolu vardır deyip Google’da bununla ilgili birkaç kelime arattım ve http_build_query fonksiyonuyla karşılaştım. Şimdi kısaca fonksiyonun kullanımından bahsedeyim ve daha sonra bu sorunu nasıl çözdüğümü anlatayım.

Fonksiyonun Kullanımı

http_build_query fonksiyonu içerisine girdiğimiz değerleri bir query şeklinde bize geri döndürüyor. Buna bir örnek vereyim. İçerisine girdiğiniz [“sayfa” => 2, “durum” => “cozulmemis”] verisini bize “sayfa=2&durum=cozulmemis” halinde veriyor. Böylece bu verdiği linki direkt olarak kullanabiliyoruz. Fonksiyonumuz dizi halinde sadece 3 parametre alabiliyor. Bize sadece 1 parametresi şimdilik yeterli. Bu parametre bir dizi ve key => value şeklinde olmak zorunda. Bir örnek daha vereyim ve daha iyi anlaşılsın.

<?php

$data = array(
"sayfa" => 1,
"renk" => "kirmizi",
"boy" => 135
);

$query = http_build_query($data);
echo $query;

Kodumuzu çalıştırdığımızda bize şu sonucu verecektir: “sayfa=1&renk=kirmizi&boy=135”.

Şimdi benim sorunuma geri dönelim. Ben de bunu çözerken şöyle bir yol izledim. Sayfaya tıklarken eğer GET ile alabildiğim bir durum verisi varsa bunu ve sayfa değerimi kullanarak bir http query oluşturmak istiyordum. Ben de bunun için şöyle bir yöntem geliştirdim. array_merge fonksiyonunu kullanarak GET ile aldığım verileri ve sayfa verimi birleştirdim. Şu şekilde yaptım bu işlemi:

$url = http_build_query(array_merge($_GET, ['sayfa' => 2]));

Bu şekilde query oluşturduktan sonra sadece başına bir ? işareti koydum ve artık linklerim sorunsuz çalışmaya başladı. Bu da böyle bir anımdır.

Bu Da Böyle Bir Anımdır, PHP Mustafa Zahid Efe Yorum Yapılmamış