• 02-03-2009, 23:59:01
    #1
    Yine güzel bir PHP sorum var bugün. Gerçi dünkü soruma halen cevap bulamadım ama bugünkü sorum da güzel.
    Problem şu: Sitemdeki yazarlarimin köşe yazılarının tarihlerine göre sıralanmasını istiyorum. Köşe Yazılarının veri tabanı şöyle:
    -- 
    -- Table structure for table `yazar_yazi`
    -- 
    CREATE TABLE `yazar_yazi` (
      `id` bigint(20) unsigned NOT NULL auto_increment,
      `sira` int(11) NOT NULL default '0',
      `kimlik_no` tinyint(4) unsigned zerofill NOT NULL default '0000',
      `tarih` varchar(24) default NULL,
      `baslik` varchar(50) NOT NULL default '',
      `yazi` text NOT NULL,
      `menu` varchar(255) NOT NULL default '',
      `hit` int(11) NOT NULL default '0',
      PRIMARY KEY  (`id`)
    ) TYPE=MyISAM AUTO_INCREMENT=1 ;
    -- 
    -- Dumping data for table `yazar_yazi`
    --
    Köşe Yazarlarının veri tabanı ise şöyle:
    -- 
    -- Table structure for table `yazarlar`
    -- 
    CREATE TABLE `yazarlar` (
      `id` tinyint(4) NOT NULL auto_increment,
      `kullanici` varchar(24) NOT NULL default '',
      `sifre` varchar(16) NOT NULL default '',
      `adsoyad` varchar(36) NOT NULL default '',
      `email` varchar(72) NOT NULL default '',
      `resim` bigint(20) NOT NULL default '0',
      `fotograf` bigint(20) NOT NULL default '0',
      `foto` bigint(20) NOT NULL default '0',
      `sira` tinyint(4) NOT NULL default '0',
      `menu` varchar(255) NOT NULL default '',
      `durum` varchar(10) NOT NULL default 'aktif',
      PRIMARY KEY  (`id`)
    ) TYPE=MyISAM AUTO_INCREMENT=1 ;
    -- 
    -- Dumping data for table `yazarlar`
    --
    Şu haliyle çalışıyor ama tarihe göre çağırmıyor, SIRA'ya göre çağırıyor.
     <div style="border:solid 1px #b3b3b3;">
    <?
    						$reklam=2;
    						$i=0;
    						$sorgu=mysql_query( "SELECT * FROM yazarlar WHERE durum='aktif' ORDER BY sira ASC " , $link);
    						while($datayazar = mysql_fetch_array($sorgu))
    					{
    						$data=mysql_fetch_array( mysql_query( "SELECT yazar_yazi.id , yazar_yazi.baslik , yazarlar.fotograf , yazarlar.adsoyad FROM yazarlar , yazar_yazi WHERE kimlik_no=$datayazar[id] ORDER BY id DESC LIMIT 0,1" , $link));
    ?>
                <div>
                <table width="276" border="0" cellspacing="0" cellpadding="0" bgcolor="#f5f5f5">
                    <tr>
                      <td colspan="2" height="10"><img width="1" height="10" alt="" src="resim/i3/sp.gif"></td>
                    </tr>
                    <tr>
                      <td width="60" class="puan_tablosu_row kalin ver11" style="text-align:left;">&nbsp;
                                            <a href="koseyazarlari.php?<?echo"id=$data[0]"?>"><img src="resim.php?id=<?=$datayazar[6]?>" width="40" height="40" alt="<?echo$data[3]?>"></a>
                                          </td>
                      <td width="216" style="text-align:left;">
    				  <div class="puan_tablosu_row kalin ver11" style="text-align:left">
                          <?echo$data[3]?>
                          </div>
                        <div class="ver11"><a href="koseyazarlari.php?<?echo"id=$data[0]"?>">
                          <?echo stripslashes($data[1])?></a>
                        </div>
    				</td>
                    </tr>
                    <tr>
                      <td colspan="2" height="5"><img width="1" height="5" alt="" src="resim/i3/sp.gif"></td>
                    </tr>
                </table>
                </div>
              </div><? } ?>
    Bu haliyle kimin işine yarıyorsa yanına kopyalasın. Veri tabanını atsın yerine, yukarıdaki kodları da kose_yazarlari.php diye kaydetsin, tamamdır.
    Ama bana bu şekilde olmuyor. Yazıların tarihe göre çağrılmasını istiyorum.
    Anlayan biri cevaplarsa sevinirim. Saygılar.
  • 03-03-2009, 00:06:46
    #2
    yazar_yazi tablosunda yazinin hangi yazar tarafindan yazildigi sutünu tahmin edemedim. farz edelimki bu yazari olsun
    mantik olarak.
    siralamayi yazar_yazi tablosundan yazari sütununu distinct yada group yaparak siralayip. alacagin yazari sütununa göre yazarlar tablosundan o yazarin bilgilerini ekrana basabilirsin
  • 03-03-2009, 00:21:47
    #3
    <?
    $reklam=2;
    $i=0;
    $sorgu=mysql_query( "SELECT * FROM yazarlar WHERE durum='aktif' ORDER BY sira ASC " , $link);
    while($datayazar = mysql_fetch_array($sorgu))
    {
    $data=mysql_fetch_array( mysql_query( "SELECT yazar_yazi.id , yazar_yazi.baslik , yazarlar.fotograf , yazarlar.adsoyad FROM yazarlar , yazar_yazi WHERE kimlik_no=$datayazar[id] ORDER BY id DESC LIMIT 0,1" , $link));
    ?>
    Yukarıdaki şekilde çağırmış. Bu mantık yanlış değil mi? Yukarıdaki çağırma usülü bana göre yazarı esas almış, oysa yazıyı esas alıp yazının sahibini de çağırarak yazdırması daha mantıklı geliyor.

    Lakin yukarıdaki kodu nasıl düzelteceğimi bilmiyorum.

    Cevabınız için size REP ama maalesef ben o kadar anlayamadım, emekleme dönemindeyim.
  • 03-03-2009, 10:19:03
    #4
    ORDER BY id kısmını ORDER BY tarih olarak değiştirirsen tarihe göre sıralanacaktır
  • 03-03-2009, 12:56:43
    #5
    Misafir adlı üyeden alıntı: mesajı görüntüle
    ORDER BY id kısmını ORDER BY tarih olarak değiştirirsen tarihe göre sıralanacaktır
    arkadasin sorusunu tekrar okuyunca fark ettim. ben yazarlarin yazilarina göre siralanmasi olarak anlamisim ( nasil becerdiysem )
  • 05-03-2009, 22:09:48
    #6
    andyou hocamız da sorumu anlamadı galiba.

    Dikkat ederseniz ORDER BY tarih şeklinde yapsam bile birşey değişmeyecek, çünkü tarih bilgisi yazar_yazi veritabanında kaydediliyor. Ben ise yazarın yazılarını tarihine göre sıralamak istemiyorum, yazarları son yazısına göre tarih sırasına dizmek istiyorum.

    Misal Ahmet önceki gün, Mehmet dün, Mustafa da bugün yazılarını göndermişse, sitemde üstten aşağıya doğru önce Mustafa, sonra Mehmet, ardından da Ahmet'i sıralamasını istiyorum.

    Profesyonel tüm sitelerde bu böyledir. Oysa bende bu böyle olmuyor. Yazarı yaratırken sırası ne ise, ana sayfada yazarlarım o sıraya göre diziliyor ve yeni yazı eklediğim zaman dolayısıyla sıra değişmiyor.

    Gerekli tüm kodlar da aşağıdadır. İşin püf noktasını bilen bir arkadaş nasıl yapabileceğimi mutlaka söyleyebilir.
  • 05-03-2009, 22:49:28
    #7
    O zaman ben dogru anlamişim. biraz php/mysql bilgin varsa dedigim yollari izleyerek yapabilirsin.
  • 05-03-2009, 23:49:40
    #8
    Söylediklerinizi anladım. Sorunu o şekilde çözün bir scriptin kodlarına da ulaştım, inceledim. Aynen dediğiniz gibi yapmış.

    Lakin ben o şeyleri aşağıda verdiğim kodlara uygulayamadım, hatalı yapıyorum. Mesele orda.
  • 08-03-2009, 12:12:05
    #9
    Anlaşıldı, iş başa düştü. Deneye deneye bir yıl sonra bitiririz inşallah.