• 06-05-2009, 20:43:08
    #1
    Alıntı
    <? $ip=0;
    $sayfa=$_GET['sayfa'];
    if (!is_numeric($sayfa) || $sayfa=="") { $sayfa=1; }
    $kaydet = mysql_num_rows(mysql_query("Select * from arama where kelime = '".$kelime."'"));
    if($kaydet==0) {
    @mysql_query("Insert Into arama (kelime,hit) values ('".$kelime."','1')");
    }else{
    @mysql_query("Update arama set hit = hit+1 where kelime = '".$kelime."'");
    }
    $kacar=40;
    $kayit_sayisi=mysql_fetch_array(mysql_query("SELEC T COUNT(*) FROM oyunlar WHERE title LIKE '%$kelime%'"));
    $sayfa_sayisi=$kayit_sayisi['0']/$kacar;
    if ($sayfa_sayisi%$kacar!=0) { $sayfa_sayisi++; }
    $nerden=($sayfa*$kacar)-$kacar;
    $sql=mysql_query("SELECT * FROM oyunlar WHERE title LIKE '%$kelime%' LIMIT $nerden, $kacar");
    while ($yaz=mysql_fetch_array($sql))
    {
    $title=$yaz[title];
    $resim=$yaz[resim];
    $hit=$yaz[hit];
    $kid=$yaz[kid];
    $sef=$yaz[sef];
    $sel=mysql_query("select * from kategoriler where id='".$kid."'");


    while ($aldik=mysql_fetch_array($sel)){$kat=trle($aldik['adi']);}
    $yazalim="<a href='/".$kat."/".$sef.".html'>".$title."</a>";
    $ressam="<a href='/".$kat."/".$sef.".html'><img src='".$resim."' alt='".$title."' width='170' border='0' height='135' /></a>";

    ?>
    Arama sayfamdaki Aramaların sonuçlarının verildiği php kodu....

    Soru 1: Aramalarda aranan kelimeleri mysqla yazdırıyorum. Ben Mesela "merhaba dünya" diye arama yaptığımda tekrar geri çağırdığımda "merhaba+dunya" şeklinde almak istiyorum. veriyi aşağıdaki gibi çekip yazdırıyorum...

    Alıntı
    <?php
    include("arabaglanti.php");
    mysql_query("SET NAMES 'latin5'");
    mysql_query("SET CHARACTER SET latin5");
    mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'");
    echo "<table width=\"30%\">
    <tr>
    <td width=\"70%\"><b><font color=\"red\">Kelime</font></b></td>
    <td width=\"30%\"><b><font color=\"red\">Hit</font></b></td>

    </tr>
    </table>";
    $sor = mysql_query("SELECT * FROM arama ORDER BY hit DESC limit 0,40");
    $bulunan=0;
    while($yaz=mysql_fetch_array($sor)){
    $bulunan++;
    $kelime = $yaz['kelime'];
    $hit = $yaz['hit'];
    $id = $yaz['id'];


    echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"white\" width=\"30%\" id=\"AutoNumber2\">
    <tr>
    <td width=\"70%\"><a href=\"ara.php?kelime=$kelime\">$kelime</a></td>
    <td width=\"30%\">$hit</a></td>
    </tr>
    </table>";
    }
    if ($bulunan==0){
    echo "<br><br> Şuanda kayıtlı kelime bulunmamaktadır."; }

    ?>
    Soru 2: ) Arama sonuçları eskideden yeniye göre listeliyor en yukarıda verdiğim kod: ben arama yapıldığında yeniden eskiye doğru listelenmesini istiyorum... Sanırım id'ye göre arama yapıyor... İlk eklenen ilk sırada çıkıyor. ben istiyorum ki son eklenen ilk sırada çıksun...

    Soru 3: ) Birde kişi arama yaptığında şayet sonuç yok ise ben rastgele içerik çekebileyim... Mesela sitemde rastgele içerik çektiğim kod aşağıdaki gibi... ben bunu buradada kullanayım.

    İlgili kod:

    Alıntı
    <?$i=0; $sql=mysql_query("select * from oyunlar order by Rand() limit 4");
    while ($yaz=mysql_fetch_array($sql))
    { $title=$yaz[title];$resim=$yaz[resim];$hit=$yaz[hit];$kid=$yaz[kid];$sef=$yaz[sef];
    $sel=mysql_query("select * from kategoriler where id='".$kid."'");
    while ($aldik=mysql_fetch_array($sel)){$kat=trle($aldik['adi']);}
    $yazalim="<a href='/".$kat."/".$sef.".html'>".$title."</a>";
    $ressam="<a href='/".$kat."/".$sef.".html'><img src='".$resim."' alt='".$title."' width='100' border='0' height='90' /></a>";
    ?>
    <div class="moa1">
    <div class="roa1" style="width: 100px; margin-bottom: 1px;">
    <?=$ressam;?>
    </div>
    <h3 class="hba1"><?=$yazalim;?></h3>
    </div>
    <?}?>
    4. Soruda Aklıma geldi: Arama yaparken arama işlemi sadece başlıklarda arıyor. ben mqsqldaki "oyunlar" tablosoundaki "title", "des" ve "keyw" alanlarındada aramasını istiyorum...

    Biraz fazla sordum bağışlayın. Arada sadece bildiğinizide cevaplarsanız sevinirim...
  • 06-05-2009, 20:48:20
    #2
    2.Soru'nu cevaplıyorum hocam..Eğer aranan verilerin sonucunu döndürdüğün sayfada son eklenen verileri en başta olarak göstermek istiyorsan

    order by id desc
    kullanman yeterlidir..
  • 06-05-2009, 20:57:53
    #3
    3.Soru'nun cevabıda aşağıda olabilir

    Arama sonuçlarını ekrana yazdıran sayfanın kodlarını aşağıdakiyle değiştirip bir dener misin ?

    <?php
    include("arabaglanti.php");
    mysql_query("SET NAMES 'latin5'");
    mysql_query("SET CHARACTER SET latin5");
    mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'");
    echo "<table width=\"30%\">
    <tr>
    <td width=\"70%\"><b><font color=\"red\">Kelime</font></b></td>
    <td width=\"30%\"><b><font color=\"red\">Hit</font></b></td>
    
    </tr>
    </table>";
    $sor = mysql_query("SELECT * FROM arama ORDER BY id DESC limit 0,40");
    $bulunan=0;
    while($yaz=mysql_fetch_array($sor)){
    $bulunan++;
    $kelime = $yaz['kelime'];
    $hit = $yaz['hit'];
    $id = $yaz['id'];
    
    
    echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"white\" width=\"30%\" id=\"AutoNumber2\">
    <tr>
    <td width=\"70%\"><a href=\"ara.php?kelime=$kelime\">$kelime</a></td>
    <td width=\"30%\">$hit</a></td>
    </tr>
    </table>";
    }
    if ($bulunan==0){
    echo "<br><br> Aradığınız kriterlerde bir kayıt bulunmamaktadır.Onun yerine biz size rastgele oyunları gösterelim"; 
    
    $i=0; $sql=mysql_query("select * from oyunlar order by Rand() limit 4");
    while ($yaz=mysql_fetch_array($sql))
    { $title=$yaz[title];$resim=$yaz[resim];$hit=$yaz[hit];$kid=$yaz[kid];$sef=$yaz[sef];
    $sel=mysql_query("select * from kategoriler where id='".$kid."'");
    while ($aldik=mysql_fetch_array($sel)){$kat=trle($aldik['adi']);}
    $yazalim="<a href='/".$kat."/".$sef.".html'>".$title."</a>";
    $ressam="<a href='/".$kat."/".$sef.".html'><img src='".$resim."' alt='".$title."' width='100' border='0' height='90' /></a>";
    ?>
    
    <div class="moa1">
    <div class="roa1" style="width: 100px; margin-bottom: 1px;">
    <?=$ressam;?>
    </div>
    <h3 class="hba1"><?=$yazalim;?></h3>
    </div>
    <?}?> 
    	<? } ?>
  • 06-05-2009, 21:15:23
    #4
    İlk cevap için teşekkürler...
    Sizin yaptığınız kod arama yapıp vertabanına kaydettiğim sonuçların ekrana basıldığı kod idi...

    3. sorunun cevabı için arama kodum bu... Arama yaptığımda şayet sonuç yok ise restgele oyunları listelesin...

    Alıntı
    <table width="940">
    <tr>
    <? $ip=0;
    $sayfa=$_GET['sayfa'];
    if (!is_numeric($sayfa) || $sayfa=="") { $sayfa=1; }
    $kaydet = mysql_num_rows(mysql_query("Select * from arama where kelime = '".$kelime."'"));
    if($kaydet==0) {
    @mysql_query("Insert Into arama (kelime,hit) values ('".$kelime."','1')");
    }else{
    @mysql_query("Update arama set hit = hit+1 where kelime = '".$kelime."'");
    }
    $kacar=40;
    $kayit_sayisi=mysql_fetch_array(mysql_query("SELEC T COUNT(*) FROM oyunlar WHERE title LIKE '%$kelime%'"));
    $sayfa_sayisi=$kayit_sayisi['0']/$kacar;
    if ($sayfa_sayisi%$kacar!=0) { $sayfa_sayisi++; }
    $nerden=($sayfa*$kacar)-$kacar;
    $sql=mysql_query("SELECT * FROM oyunlar WHERE title LIKE '%$kelime%' ORDER BY id DESC LIMIT $nerden, $kacar");
    while ($yaz=mysql_fetch_array($sql))
    {
    $title=$yaz[title];
    $resim=$yaz[resim];
    $hit=$yaz[hit];
    $kid=$yaz[kid];
    $sef=$yaz[sef];
    $sel=mysql_query("select * from kategoriler where id='".$kid."'");


    while ($aldik=mysql_fetch_array($sel)){$kat=trle($aldik['adi']);}
    $yazalim="<a href='/".$kat."/".$sef.".html'>".$title."</a>";
    $ressam="<a href='/".$kat."/".$sef.".html'><img src='".$resim."' alt='".$title."' width='170' border='0' height='135' /></a>";

    ?>

    <td onmouseover="bgColor='#82BFFF'" onmouseout="bgColor='#ffffff'" align="center" valign="top" style="cursor:hand">



    <div class="moa">
    <div class="roa" style="width: 175px; margin-bottom: 3px;">
    <?=$ressam;?>
    </div>
    <h2 class="hba"><?=$yazalim;?></h2>
    <div>oyun <?=$hit;?> oynandı</div>
    </div>





    </td>
    <?$i++; if ($i==5 or $i==10 or $i==15 or $i==20 or $i==25 or $i==30 or $i==35 or $i==40){?>
    </tr>
    </table>
    <table width="940" border="0">
    <tr><? }else{?> <?}}?>
    <td></td>
    </tr>
    </table>
  • 08-05-2009, 18:14:52
    #5
    Yardımcı olayım dedim ama soru çok uzun gözüm korktu

    Soru 1: Aramalarda aranan kelimeleri mysqla yazdırıyorum. Ben Mesela "merhaba dünya" diye arama yaptığımda tekrar geri çağırdığımda "merhaba+dunya" şeklinde almak istiyorum. veriyi aşağıdaki gibi çekip yazdırıyorum...

    merhaba bunun için veritabanından çekmiş olduğun değeri str_replace ile türkçe karakterleri iptal edeceksin. boşluk yerine de + koyacaksın. Misal.

    function replace_tr($text) {
    $text = trim($text);
    $search = array('Ç','ç','Ğ','ğ','ı','İ','Ö','ö','Ş','ş','Ü','ü',' ');
    $replace = array('C','c','G','g','i','I','O','o','S','s','U','u','+');
    $new_text = str_replace($search,$replace,$text);
    return $new_text;
    }
    senin yapacağın ise bu fonksiyona kelimeyi yollamak.

    $kelime = replace_tr($yaz['kelime']);
  • 08-05-2009, 18:18:34
    #6
    Soru 2
    Arama sonuçları eskideden yeniye göre listeliyor en yukarıda verdiğim kod: ben arama yapıldığında yeniden eskiye doğru listelenmesini istiyorum... Sanırım id'ye göre arama yapıyor... İlk eklenen ilk sırada çıkıyor. ben istiyorum ki son eklenen ilk sırada çıksun...

    @Jotuxi arkadaşımız söylemiş gerçi ama id'ye göre yapmış. order by id desc eğer tarih var ise oyunlar tablosunda taihe göre "order by tarih desc" yapabilirsin.
    Kodu ekleyeceğin yer sonuçları listelediğin sql satırı.

    $sql=mysql_query("SELECT * FROM oyunlar WHERE title LIKE '%$kelime%' LIMIT $nerden, $kacar");
  • 08-05-2009, 18:22:11
    #7
    Soru 3) Birde kişi arama yaptığında şayet sonuç yok ise ben rastgele içerik çekebileyim... Mesela sitemde rastgele içerik çektiğim kod aşağıdaki gibi... ben bunu buradada kullanayım.

    ilgili kodu amaların sonuçlarının verildiği php kodun içinde bulunan kayıt sayısını ilk başta bulursun. Eğer kayıt sayısı 0 ise kayıt bulunamadı rastgele içerikler dersin gösterirsin.

    yani
    while ($yaz=mysql_fetch_array($sql))
    {

    den önce num_rows ile kayıt sayısını bulursun.

    if(kayitsayisi>0)
    {
    // while...
    }else{
    //rastgele içerik gösterme kodları.
    }
  • 08-05-2009, 18:26:26
    #8
    Ve soru 4

    Soruda Aklıma geldi: Arama yaparken arama işlemi sadece başlıklarda arıyor. ben mqsqldaki "oyunlar" tablosoundaki "title", "des" ve "keyw" alanlarındada aramasını istiyorum...

    aşağıdaki sitede örnek verilmiş.
    MySQL :: Mysql query to search all fields.

    umarım yardımcı olabilirmişimdir

    Kolay gelsin.
  • 09-05-2009, 22:43:01
    #9
    Teşekkürler... Az işim var. Dediklerinizi hemen deniyorum.