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
Bu faso fiso çıktı herhalde
"Bildiğim kadarıyla birleştirdiğin anahtarı sorgularında kullanamıyorsun." :)
SQL
Attığım sql'i indir,
Yeni bir veritabanı oluşutur,
Oluşan veritabanına tıkla,
İçeri aktar'a tıkla,
Dosya seç'e tıkla,
Aşağıdaki git'e tıkla
Aşağıdaki sorguyu çalıştırırsan
SELECT u.u_id, u.ad 'Müşteri Adı', ie.miktar 'İşlem Tutarı', ie.tarih 'İşlem Tarihi', a.ad 'Banka Adı' FROM `users` u JOIN income_expense ie ON u.u_id = ie.u_id JOIN accounts a ON a.a_id = ie.a_id WHERE u.u_id = 1
Çıktısı:
Sorgusuz çalışan hali:
Biraz kayıt eklersen üzerinde her türlü işlemi yapabilirsin, umarım doğru anlamışımdır.
Evet birleştirmemelisiniz, birleştiriyorsanız dahi onlarla ilgili sorgu yazamazsınız. Tablo yapını gösterebilirsen daha çok yardımcı olabilirim.
Selamlar Hocam,
Bildiğim kadarıyla birleştirdiğin anahtarı sorgularında kullanamıyorsun.
Senin sorgundaki kullanici_id gibi örnek olarak
SELECT * FROM
gelir gl JOIN gider gd
ON gl.kullanici_id = gd.kullanici_id // Birleştirilen anahtarlar
WHERE gl.kullanici_id = 3 veya gd.kullanici_id = 3 veya kullanici_id = 3
bu şekilde dahi kullanımı mevcut değil. Demem o ki veritabanını yeniden düzenlemen gerekicek.
Dediklerime ek olarak, uzun olan tablo isimlerini
SELECT * FROM tablo_adi AS ta WHERE ta.sutun_adi = 'deger';
/*--------- veya ------*/
SELECT * FROM tablo_adi ta WHERE ta.sutun_adi = 'deger';
şeklinde kısaltıpta kullanabilirsin.
Selamlar Hocam,
tasarımsal olarak hatan var onu bulana kadar bu kod işini görücektir.
body{
overflow-x: hidden!important;
}