Aracım Ne Kadar Eder?

Bir kaç seçenek seçip araç fiyatınızı öğrenebilirsiniz. Araç fiyatları piyasada verilen ilanlara göre anlık olarak değişkenlik gösterebilir. Aklınıza geldikçe yeni piyasa fiyatını öğrenmeyi unutmayın.

Araç tipi, marka, model gibi seçenekleri seçerek en üst ve en alt verilen ilan fiyatlarını görebilir, model yılı girerek araç yaşına göre verilen en üst ve en alt fiyatları görebilirsiniz.

http://ulusanyazilim.com/works/araba

Kodları

<?php //arac.php içeriği
header("Content-Type: text/html; charset=UTF-8");
if(isset($_POST["vasita"])){//arac yukle
	$site = "http://www.sahibinden.com".$_POST["vasita"];
	$icerik = file_get_contents($site);
	preg_match_all('@categoryList(.*?)ul>@si',$icerik,$cikti);
	preg_match_all('@<a href="(.*?)">(.*?)</a>@si',$cikti[1][0],$c);
	$y=count($c[1]);
	echo '<select id="arac" class="form-control">';
	echo '<option>Araç Seçiniz</option>';
	for($x=0;$x<$y;$x++){
		echo '<option value="'.$c[1][$x].'">'.$c[2][$x].'</option>';
	}
	echo '</select>';
	echo '<script type="text/javascript">
	$(document).ready(function() {
		$("#sonuc").html("Seçmeye Devam Ediniz...");
		$("#arac").bind("change",function(){
			if($("#arac").val() != 0){
				var arac=$("#arac option:selected").val();
				var aractext=$("#arac option:selected").text();
				$.ajax({
					type: "POST",
					url: "arac.php",
					data: "arac="+arac,
					dataType: "html",
					beforeSend: function() {
						$("#arac").after("<label id=\"arac\" class=\"bg-secondary text-white form-control\">"+aractext+"</label>");
						$("#arac").remove();
					},
					success: function(data) {
						$("#arac").after(data);
					}
				});
			}
		});
	});
	</script>';
}elseif(isset($_POST["arac"])){//model yukle
	$site = "http://www.sahibinden.com".$_POST["arac"];
	$icerik = file_get_contents($site);
	preg_match_all('@categoryList(.*?)ul>@si',$icerik,$cikti);
	if(isset($cikti[1][0])){
		preg_match_all('@<a href="(.*?)">(.*?)</a>@si',$cikti[1][0],$c);
		$y=count($c[1]);
		echo '<select id="model" class="form-control">';
		echo '<option>Araç Seçiniz</option>';
		for($x=0;$x<$y;$x++){
			echo '<option value="'.$c[1][$x].'">'.$c[2][$x].'</option>';
		}
		echo '</select>';
	}else{
		preg_match_all('@searchResultsCat(.*?)searchResultLeft-query@si',$icerik,$arama);
		preg_match_all('@<a href="(.*?)">(.*?)</a>@si',$arama[1][0],$c);
		$y=count($c[1]);
		echo '<select id="model" class="form-control">';
		echo '<option>Araç Seçiniz</option>';
		for($x=3;$x<$y;$x++){
			echo '<option value="'.$c[1][$x].'">'.$c[2][$x].'</option>';
		}
		echo '</select>';
	}
	echo '<script type="text/javascript">
	$(document).ready(function() {
		$("#model").bind("change",function(){
			if($("#model").val() != 0){
				var model=$("#model option:selected").val();
				var modeltext=$("#model option:selected").text();
				$.ajax({
					type: "POST",
					url: "arac.php",
					data: "model="+model,
					dataType: "html",
					beforeSend: function() {
						$("#model").after("<label id=\"model\" class=\"bg-secondary text-white form-control\">"+modeltext+"</label>");
						$("#model").remove();
					},
					success: function(data) {
						$("#model").after(data);
					}
				});
			}
		});
	});
	</script>';
}elseif(isset($_POST["model"])){//seri yukle
	$site = "http://www.sahibinden.com".$_POST["model"];
	$icerik = file_get_contents($site);
	preg_match_all('@categoryList(.*?)ul>@si',$icerik,$cikti);
	if(isset($cikti[1][0])){
		preg_match_all('@<a href="(.*?)">(.*?)</a>@si',$cikti[1][0],$c);
		$y=count($c[1]);
		echo '<select id="seri" class="form-control">';
		echo '<option>Araç Seçiniz</option>';
		for($x=0;$x<$y;$x++){
			echo '<option value="'.$c[1][$x].'">'.$c[2][$x].'</option>';
		}
		echo '</select>';
	}else{
		preg_match_all('@searchResultsCat(.*?)searchResultLeft-query@si',$icerik,$arama);
		preg_match_all('@<a href="(.*?)">(.*?)</a>@si',$arama[1][0],$c);
		$y=count($c[1]);
		echo '<select id="seri" class="form-control">';
		echo '<option>Araç Seçiniz</option>';
		for($x=4;$x<$y;$x++){
			echo '<option value="'.$c[1][$x].'">'.$c[2][$x].'</option>';
		}
		echo '</select>';
	}
	echo '<script type="text/javascript">
	$(document).ready(function() {
		$("#seri").bind("change",function(){
			if($("#seri").val() != 0){
				var seri=$("#seri option:selected").val();
				var seritext=$("#seri option:selected").text();
				$.ajax({
					type: "POST",
					url: "arac.php",
					data: "seri="+seri,
					dataType: "html",
					beforeSend: function() {
						$("#seri").after("<label id=\"seri\" class=\"bg-secondary text-white form-control\">"+seritext+"</label>");
						$("#seri").remove();
					},
					success: function(data) {
						$("#seri").after(data);
					}
				});
			}
		});
	});
	</script>';
}elseif(isset($_POST["seri"])){//tur yukle
	$site = "http://www.sahibinden.com".$_POST["seri"];
	$icerik = file_get_contents($site);
	preg_match_all('@categoryList(.*?)ul>@si',$icerik,$cikti);
	if(isset($cikti[1][0])){
		preg_match_all('@<a href="(.*?)">(.*?)</a>@si',$cikti[1][0],$c);
		$y=count($c[1]);
		echo '<select id="tur" class="form-control">';
		echo '<option>Araç Seçiniz</option>';
		for($x=0;$x<$y;$x++){
			echo '<option value="'.$c[1][$x].'">'.$c[2][$x].'</option>';
		}
		echo '</select>';
	}else{
		preg_match_all('@searchResultsCat(.*?)searchResultLeft-query@si',$icerik,$arama);
		preg_match_all('@<a href="(.*?)">(.*?)</a>@si',$arama[1][0],$c);
		$y=count($c[1]);
		if($y != 5){
			echo '<select id="tur" class="form-control">';
			echo '<option>Araç Seçiniz</option>';
			for($x=5;$x<$y;$x++){
				echo '<option value="'.$c[1][$x].'">'.$c[2][$x].'</option>';
			}
			echo '</select>';
		}else{
			yil($_POST["seri"]);
		}
	}
	echo '<script type="text/javascript">
	$(document).ready(function() {
		$("#tur").bind("change",function(){
			if($("#tur").val() != 0){
				var tur=$("#tur option:selected").val();
				var turtext=$("#tur option:selected").text();
				$.ajax({
					type: "POST",
					url: "arac.php",
					data: "tur="+tur,
					dataType: "html",
					beforeSend: function() {
						$("#tur").after("<label id=\"tur\" class=\"bg-secondary text-white form-control\">"+turtext+"</label>");
						$("#tur").remove();
					},
					success: function(data) {
						$("#tur").after(data);
					}
				});
			}
		});
	});
	</script>';
}elseif(isset($_POST["tur"])){//yil yukle
	yil($_POST["tur"]);
}elseif(isset($_POST["yil"])){//fiyat yukle
	tablo($_POST["link"],$_POST["yil"]);
}elseif(isset($_POST["cek"])){//fiyat yukle
	tablo($_POST["cek"]);
}else{
	$site = "http://www.sahibinden.com/kategori/vasita";
	$icerik = file_get_contents($site);
	//echo $icerik;
	preg_match_all('@categoryList(.*?)ul>@si',$icerik,$cikti);
	preg_match_all('@<a href="(.*?)">(.*?)</a>@si',$cikti[1][0],$c);
	$y=count($c[1]);
	for($x=0;$x<$y;$x++){
		echo '<option value="'.$c[1][$x].'">'.$c[2][$x].'</option>';
	}
}

function yil($link){
	echo '<input type="number" min="1900" max="2100" id="yil" class="form-control" placeholder="Model Yılı">';
	echo '<script type="text/javascript">
	$(document).ready(function() {
		$.ajax({
			type: "POST",
			url: "arac.php",
			data: "cek='.$link.'",
			dataType: "html",
			beforeSend: function() {
				$("#sonuc").html("Yükleniyor...");
			},
			success: function(data) {
				$("#sonuc").html(data);
			}
		});
		$("#yil").on("input", function() {
			var yil=$("#yil").val();
			if(yil > 1900 && yil < 2100){
				$.ajax({
					type: "POST",
					url: "arac.php",
					data: "yil="+yil+"&link='.$link.'",
					dataType: "html",
					beforeSend: function() {
						$("#sonuc").html("Yükleniyor...");
					},
					success: function(data) {
						$("#sonuc").html(data);
					}
				});
			}
		});
	});
	</script>';
}	
function tablo($link,$yil=null){
	echo '<script type="text/javascript">
	$(document).ready(function() {
		$("#img").remove();
	});
	</script>';
	$data=null;	
	if($yil != null){
		$data["a5_min"]=$yil;
		$data["a5_max"]=$yil;
	}
	$data["sorting"]="price_asc";
	$site = "http://www.sahibinden.com".$link."?".http_build_query($data); 
	$icerik = file_get_contents($site);
	preg_match_all('@searchResultsRowClass(.*?)tbody>@si',$icerik,$arama);
	if(isset($arama[1][0])){
		preg_match('@<tr(.*?)tr>@si',$arama[1][0],$tr);
		preg_match_all('@<td class="searchResultsAttributeValue">(.*?)</td>@si',$tr[1],$td);
		preg_match('@searchResultsPriceValue">(.*?)</td>@si',$tr[1],$tl);
		$data["sorting"]="price_desc";
		$site = "http://www.sahibinden.com".$link."?".http_build_query($data); 
		$icerik = file_get_contents($site);
		preg_match_all('@searchResultsRowClass(.*?)tbody>@si',$icerik,$arama);
		preg_match('@<tr(.*?)tr>@si',$arama[1][0],$tr);
		preg_match_all('@<td class="searchResultsAttributeValue">(.*?)</td>@si',$tr[1],$td2);
		preg_match('@searchResultsPriceValue">(.*?)</td>@si',$tr[1],$tl2);
		echo '<table class="table">
			<tbody>
				<tr>
					<td><b>Renk</b> : '.$td[1][2].'<br>
					<b>KM</b> : '.$td[1][1].'<br>
					<b>Yıl</b> : '.$td[1][0].'
					</td>
					<td><b>En Ölü Fiyat</b><br>'.strip_tags($tl[1]).'</td>
				</tr>
				<tr>
					<td><b>Renk</b> : '.$td2[1][2].'<br>
					<b>KM</b> : '.$td2[1][1].'<br>
					<b>Yıl</b> : '.$td2[1][0].'
					<td><b>En Temiz Fiyat</b><br>'.strip_tags($tl2[1]).'</td>
				</tr>
			</tbody>
		</table>';
	}else{
		echo '<table class="table">
			<thead class="thead-light">
				<tr>
					<th scope="col">Sonuc Bulunamadi</th>
				</tr>
			</thead>
		</table>';
	}
}

Kümeye Eleman Ekleme ve Alfabetik Sıralama

<?php 
class SimpleHeapSort extends SplHeap {
    public function compare($a, $b) {
        return strcmp($b,$a);
        //return strcmp($a,$b); yaparsanız tersten sıralar
    }
}	

$heap = new SimpleHeapSort();
$heap->insert("aa");
$heap->insert("cb");
$heap->insert("bb");

echo implode(PHP_EOL, iterator_to_array($heap));
?>

Çıktısı

aa bb cb

 

Hata Mesajı Açma ve Kapatma

Hata Mesajı Açma

Hata mesajlarını görmek ve çözmek her zaman daha iyidir. Onun için bu şekilde açabilirsiniz.

<?php 
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
?>

Hata Mesajı Kapatma

Bazen yeterli test yapamadığımız zaman kullanıcıların hatalarla karşılaşmasını istemeyiz. Bunun için hataları kapatmamız gerekir.

<?php 
ini_set('display_errors', 0);
ini_set('display_startup_errors', 0);
error_reporting(0);
?>

 

Json API oluşturma ve kullanımı

JSON (“Javascript Object Notation”), php ilen okunabilen bir veri biçimidir. Php’de bir diziden

<?php 
$dizi=array(1=>"elma",2=>"armut");
echo json_encode($dizi);
?>

örneğindeki gibi json_encode ile dönüştürülerek oluşturulur.

Çıktısı aşağıdaki gibidir.

{
  1: "elma",
  2: "armut"
}

Genelde API (“Application Programming Interface = Uygulama Programlama Arayüzü”)ler tarafından kullanılır.

Curl ile bağlanılan adreslerde alınan bu veriler json_decode ile geri dizi haline çevrilir.

<?php //Daha önceki verimiz
$dizi=array(1=>"elma",2=>"armut");
$API= json_encode($dizi);

//Nesne ve Çıktısı
$cikti=json_decode($API);
print_r($cikti);
//stdClass Object ( [1] => elma [2] => armut ) 


//Dizi ve Çıktısı
$cikti=json_decode($API,true);
print_r($cikti);
//Array ( [1] => elma [2] => armut )
?>

Mesela İstatistik API ile ilgili bir örnek verelim

<?php 
header('Content-Type: text/html; charset=utf-8');
function PhpStatistics(){
  $list=array("HTTP_HOST","REQUEST_URI","HTTP_CLIENT_IP","REMOTE_ADDR","HTTP_USER_AGENT","HTTP_ACCEPT_LANGUAGE");
  foreach($list as $l){$data[$l]=$_SERVER[$l];}
  $data=json_encode($data);
  $ch = curl_init();
  curl_setopt($ch,CURLOPT_HEADER,false);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
  curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/4.0 (compatible;)");
  curl_setopt($ch,CURLOPT_URL,"http://phpstate.ulusanyazilim.com/developer/userinfo/api.php?".http_build_query(array('data'=>$data)));
  return curl_exec($ch);
}
$json=PhpStatistics();
$dizi=json_decode($json);

print_r($dizi);

echo $tarayici=$dizi["agent_name"]."<br>";
echo $ip_adresi=$dizi["http_client_ip"];

?>

Diziyi İstenilen Parçaya Bölmek

Dizileri belirlenen sayıda bölümlere ayırır.

<?php
$dizi = array("bir","iki","üç","dört","beş");
$bolunme=array_chunk($dizi, 2);
$anahtar_korumali_bolunme=array_chunk($dizi, 2, true);
?>

<?php print_r($bolunme); ?>
Çıktısı:
Array
(
[0] => Array
(
[0] => bir
[1] => iki
)

[1] => Array
(
[0] => üç
[1] => dört
)

[2] => Array
(
[0] => beş
)

)
<?php print_r($anahtar_korumali_bolunme); ?>
Çıktısı:
Array
(
[0] => Array
(
[0] => bir
[1] => iki
)

[1] => Array
(
[2] => üç
[3] => dört
)

[2] => Array
(
[4] => beş
)

)

 

Dizilerde Anahtar ve Veri Oluşturma

array_fill Kullanımı
Dizi oluşturarak içeriğini belirtilen değer olarak girer.
array_fill($indis_baslangici, $kac_elemanli, $girilecek_deger);

<?php
$a = array_fill(2, 5, 'elma');
print_r($a);
?>
Çıktısı
Array
(
[2] => elma
[3] => elma
[4] => elma
[5] => elma
[6] => elma
)

array_fill_keys Kullanımı
Belirtilen anahtarları oluşturup belirlenen verileri girer.
array_fill_keys($anahtarlar_dizisi, $deger);

<?php
$anahtarlar = array('mevye', 3, 8, 'bitki');
$a = array_fill_keys($anahtarlar, 'elma');
print_r($a);
?>
Çıktısı
Array
(
[mevye] => elma
[3] => elma
[8] => elma
[bitki] => elma
)

 

Karmaşık Dizilerin Elemanlarını Sıralama

array_multisort Kullanımı
Karmaşık veya çoklu dizileri sıralamakta kullanılır.
1-Basit Kullanım
array_multisort($dizi);
2-Gelişmiş Kullanım
array_multisort($dizi1, $siralama_baslangici1, $siralama_tipi1,
$dizi2, $siralama_baslangici2, $siralama_tipi2);

Sıralama başlangıcı değerleri olarak aşağıdakiler kullanılabilir:
SORT_ASC (artan sıralama), SORT_DESC (azalan sıralama),
Sıralama tipi değerleri olarak aşağıdakiler kullanılabilir:
SORT_REGULAR (normal), SORT_NUMERIC (sayısal), SORT_STRING (dizgesel).

<?php
//Basit Kullanım Örnek
$dizi = array(1,4,2,3);
array_multisort($dizi);

print_r($dizi);
?>
Çıktısı
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)
<?php
//Gelişmiş Kullanım
$dizi1=array("a",2,"z","3",8);
$dizi2=array(4,"k","2",3,1);
array_multisort($dizi1, SORT_ASC, SORT_STRING,
                $dizi2, SORT_NUMERIC, SORT_DESC);
?>

<?php print_r($dizi1); ?>
Çıktısı
Array
(
    [0] => 2
    [1] => 3
    [2] => 8
    [3] => a
    [4] => z
)
<?php print_r($dizi2); ?>
Çıktısı
Array
(
    [0] => k
    [1] => 3
    [2] => 1
    [3] => 4
    [4] => 2
)