v2.5.2
Giriş yap

PHP arama ve yazıyı blog yazısı olarak kaydetme

burak001
967 defa görüntülendi

iki sorum var...

bir website oluşturyorum ve main tagleri içinde php yardımıyla site içi arama yaptırmak istiyorum
fakat listeletemiyorum arama butonu ve kodları şöyle

<form action="pages/ara.php?islem=arama" method="GET">
<input name="ara" placeholder="Kartları ve yazarları aratın..." class="arama_inp" type="text"></input>
</form>

ve bunu index içinde yapıyorum sayfalarımıda index içinde görüntülüyorum benim yapmak istediğim
arama textinden gelen veriyi swicth e gönderip indexin main kısmında listeletmek

$sayfa = @$_GET['islem'];
switch($sayfa){
case 'arama':
include("pages/ara.php");
break;

bunu yaptığımda ben linkte arama sayfasına gönderdiğim veriyi görebiliyorum ama listelemiyor
swicth te default olarak ayarladığım kısım kalıyor yardım edersen çok sevinirim eğer sıkıntılı bir durumsa
arama ile ilgili tavsiyelerinide dinlerim

2.sorum ise veritabanına blog yazılarını nasıl kaydederim yani boşluk bıraksamda sadece bir boşluk bırakarak kaydediyor mysql

Cevap yaz
Cevaplar (7)
onlywhatchess
1377 gün önce

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 &nbsp; kullanarak boşluk bırabiliyoruz.
$text = 'Ben          PHP kodluyorum bugün';
$text = str_replace(' ', '&nbsp;', $text);
// text'in içinde artık  Ben&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PHP&nbsp;kodluyorum&nbsp;bugün 
// Yazar ki html ile gösterirken herbir &nbsp; boşluk olarak yorumlanır.
echo $text;
// Çıktı: Ben          PHP kodluyorum bugün
burak001
1373 gün önce

teşekkür ederim ajaxla yaptım kullanıcı listelenen verileri beğenmezse direk aratması için input hidden ı kullandım aşırı işe yaradı Aydın @ işaretini bundan sonra kullanmayacağım

aydinkeskin
1374 gün önce

@ işaretlerini kullanma derim

$gelendeger = isset($_GET["arama"] ? $_GET["arama"] : "" ;

bu şekilde kullanmanı öneririm.

onlywhatchess
1375 gün önce

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ı

burak001
1375 gün önce
  1. sıkıntım çözüldü bunun için teşekkür ederim fakat 1. de hala sıkıntı var sizin verdiğiniz kodlar benim arama php dosyamı
    index php nin içerisinde hala görüntülemiyor

sizin verdiğiniz link yapısı bu

http://localhost/blogger/pages/ara.php?ara=ara

benim istediğim ise şu

http://localhost/blogger/index.php?islem=arama&amp;aranan=3 islem swicth e gelen veri arama case bölümü

yani sizin verdiğiniz kodla ben index içierisinde görüntüleyemiyorum aranan öğelerimi

burak001
1377 gün önce

cevapladığın için teşekkür ederim ama bu sorunumu çözmüyor dinamik bir arama yaptrımıyorum buton görevinide form olduğu için
enter görüyor javascript olmadan form elemanıyla şöyle göndermeye çalışıyorum ama bir hata var

 <form action="index.php?islem=ara" method="GET"></form> bunu index sayfamda yapıyorum

gibi ve yanında get edeceğim bir değer göndermem gerekiyor ara.php ye

    $sayfa = @$_GET['islem'];
    switch($sayfa){
    case 'arama':
    include("pages/ara.php");   // burasıda index sayfamda arama motorundan aldığım veriyi buraya gönderip girilen değere göre
    break;                      //index.php de ara.php sayfasını çalıştırmak istiyorum

Umarım anlatabilmişimdir

2.sorum
blog yazılarımı kaydeden bir veritabanım var

(id(auto_pri) yazi_sira(long_text) blog_yazisi res1 res2) tar gibi alan adları var

ben sitemin kendi editörüyle yazıyı yazdırıp veritabanına kaydediyorum fakat yazıyı çekerken arada bıraktığım boşluklar felan
yok oluyor yazıyı düzenlediğim şekliyle yazımın bir alakası olmuyor yani

onlywhatchess
1378 gün önce

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