neden json kullanıyoruz burada? kullanmadan yaparsak ne gibi bir sorun olur?
m100 mantığını anlatmış burada inceleyebilirsin.
https://prototurk.com/soru/1662-dinamik-arama-bolumu
Tek yapman gereken css kodunu sayfana eklemek
Resim veya kodlar falan olsaydı iyiydi.
JS ile uğraşmadan CSS koduna bu satırı eklersen yavaşça aşağı inicektir.
html,body{
scroll-behavior: smooth;
}
Kısa bir örnek
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
html,body{
scroll-behavior: smooth;
}
</style>
</head>
<body>
<a href="#down">Aşağı İn</a>
<div class="container" style="height: 200vh"></div>
<div id="down">Aşağıda havalar soğuk</div>
<!--
JS ile yapmakta ısrarcıysan buda işini görür.
<button>Aşağı İn</button>
<div class="container" style="height: 200vh"></div>
<div id="down" style="height: 300px;background-color: aqua;">Aşağıda havalar soğuk</div>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script>
$(document).ready(function() {
$('button').click(function() {
$('html, body').animate({
scrollTop: $('#down').position().top
});
});
});
</script>
-->
</body>
</html>
w3schools behavior
Ek olarakta kayıtlarının uzamasına izin verirsen, sayfalamazsan kayıtlar çoğaldıkça takılma, geç yükleme gibi sorunlar çıkartıcaktır.
Eğer ajax kullanmıyorsan formu göndermek, kullanıcıyı action kısmındaki linke yönelticektir.
İstediğin link yapısı ancak form tekrar index sayfasına gönderilirse oluşur.
<!-- index.php -->
<form action="#" method="GET">
<input type="hidden" name="islem" value="arama">
<input type="text" name="aranan" value="3">
</form>
// index.php
if($_GET):
if($_GET['islem'] == "arama"):
echo "Burası index sayfası"; // inputtan gelen veriyle ara.php sayfasında ne yapıcaksan burada yap
endif;
endif;
Form gönderildikten sonrası
Bu dille istediğin her şeyi yapabilirsin :)
Sorunun şu;
formun action kısmında sen kendin değer göndermeye çalışmıssın buna gerek yok method kısmına get tanımladıysan içerisindeki her bir elemanı linkte name ve value değeri ile birlikte göndericektir zaten.
Örn.
<form action="deneme.php" method="get">
<input type="text" name="ara" value="prototurk">
</form>
<!-- Oluşacak Olan Link
deneme.php?ara=prototurk
Birden fazla input var ise
-->
<form action="deneme.php" method="get">
<input type="text" name="ara" value="prototurk">
<input type="text" name="ara1" value="tayfun">
</form>
<!-- Oluşacak Olan Link
deneme.php?ara=prototurk&?ara1=tayfun
-->
kendi formunda ara.php?islem=arama diye gönderdiğini sanarken sen aslında ara.php?ara=[input value] değeri gönderiyorsun.
<form action="pages/ara.php?islem=arama" method="GET">
Sonrasında burada $_GET['islem'] diyerek çekmeye çalışıyorsun oysaki $_GET['ara'] diyerek çekmen lazım
$sayfa = @$_GET['islem']; // Yerine $_GET['ara'] yazman lazım
Kısaca olması gereken kodların
<form action="pages/ara.php" method="GET">
<input name="ara" placeholder="Kartları ve yazarları aratın..." class="arama_inp" type="text">
</form>
<!-- input kapanış etiketi olmaz -->
<?php
$sayfa = @$_GET['ara'];
switch($sayfa){
case 'arama':
include("pages/ara.php");
break;
}
?>
2 . Soruna gelicek olursak str_replace fonksiyonuyla yapabilirsin. Veritabanına kayderken buna benzer bir işlemden geçir.
// html 1 den fazla boşluk bırakmayı kabul etmiyor onun yerine kullanarak boşluk bırabiliyoruz.
$text = 'Ben PHP kodluyorum bugün';
$text = str_replace(' ', ' ', $text);
// text'in içinde artık Ben PHP kodluyorum bugün
// Yazar ki html ile gösterirken herbir boşluk olarak yorumlanır.
echo $text;
// Çıktı: Ben PHP kodluyorum bugün
Selamlar,
Kodların arasında formun gönderme butonu olmadığından bunu arama kutusuna bir şeyler yazıldıkça çalıştırmaya yönelik farz ediyorum
<!-- test.php -->
<input type="text" name="ara" placeholder="Kartları ve yazarları aratın.." class="arama_inp">
<div id="yazbuna"></div>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script>
$(document).ready(function() {
$('.arama_inp').keydown(function (){ // keydown veya keyup
$.post('arama.php',{
arama: $('.arama_inp').val()
}, function(response) {
$('#yazbuna').html(response);
})
});
});
</script>
// arama.php
if(isset($_POST['arama'])):
// Yapılacak işlemler
echo 'Çalışıyorum';
endif;
Bu işini görücektir ama 2. Sorunu anlamadım
Selamlar,
Buradan başlayabilirsin Başlangıç SEO rehberi