• 20-12-2009, 02:27:16
    #1
    Aşağıdaki kodta GOUP BY gibi birşey eksik.
    En alttan ikinci satır uygun şekilde yazılırsa sitemdeki yazarların yazıları üst üste yayınlanmayacak, yeni yazısı geldiğinde eski yazıcı artık görenmeyecek.

    GROUP BY a.catid yazdım mesela, öyle yapınca da artık tarihe göre seçmiyor.
    GROUP BY a.catid AND a.created yazdım, o zaman da hangi yazarın son yazısı eklenmişse, sadece o yazarı yayınlayıp diğer yazarları yayınlamıyor, yani categori ve yazı sayılarını tek'e düşürüyor.

    Ustaların fikirleri çerçevesinde yapabilirsem sevinirim. selamlar

    $query = "SELECT a.*, u.name, u.username, cc.image AS image,"
    ." CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(\":\", a.id, a.alias) ELSE a.id END as slug,"
    ." CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(\":\", cc.id, cc.alias) ELSE cc.id END as catslug,'link' as link"
    . "\n FROM #__content AS a"
    . "\n LEFT JOIN #__content_frontpage AS f ON f.content_id = a.id"
    . "\n LEFT JOIN #__users AS u ON u.id = a.created_by"
    . "\n INNER JOIN #__categories AS cc ON cc.id = a.catid"
    . "\n INNER JOIN #__sections AS s ON s.id = a.sectionid"
    . "\n WHERE ( a.state = 1 AND a.sectionid > 0 )"
    . "\n AND ( a.publish_up = " .$database->Quote($nullDate) 
    . " OR a.publish_up <= " . $database->Quote($now) . ")"
    . "\n AND ( a.publish_down = " . $database->Quote($nullDate)
    . " OR a.publish_down >= " . $database->Quote($now) . " )"
    . ( $access ? "\n AND a.access <= " . (int) $user->get('aid') . " AND cc.access <= " 
    . (int) $user->get('aid') . " AND s.access <= " . (int) $user->get('aid') : '' )
    . $whereCatid
    . $whereSecid
    . "\n AND ((TO_DAYS('" . date( 'Y-m-d', time()+$tzoffset*60*60 ) 
    . "') - TO_DAYS(a.created)) <= '" . $period . "')"
    . ( $show_front == '0' ? "\n AND f.content_id IS NULL" : '' )
    . "\n AND s.published = 1"
    . "\n AND cc.published = 1"
    . "\n ORDER BY $orderby"
    . "\n limit $skip," . $count;
  • 22-12-2009, 12:21:57
    #2
    Arkadaşlar bu o kadar da zor değil, biliyorum. Burada bunu yapabilecek 40 usta vardır en az. Yardımınızı bekliyorum. Saygılar
  • 22-12-2009, 12:41:58
    #3
    Evet derler hocam, çünkü işte bu kadar basit:

    <?
    $y = 0;
    $x = 0;
    $numbers[0] = 0;
    while ($y < 10)
    {
            $yazar= mysql_fetch_array( mysql_query("SELECT jos_content.id, jos_content.title, jos_categories.image, jos_categories.name,"
            . "\n jos_content.catid, jos_content.sectionid, jos_content.created"
            . "\n FROM jos_content"
            . "\n LEFT JOIN jos_categories ON jos_content.catid = jos_categories.id"
            . "\n LEFT JOIN jos_sections ON jos_content.sectionid = jos_sections.id"
            . "\n WHERE jos_content.sectionid='4'"
            . "\n ORDER BY jos_content.created"
            . "\n DESC LIMIT $x,1"));
    	$ranvar = $yazar['catid'];
    	if ($nuser == NULL) { $y = 11; }
    	elseif (in_array($ranvar, $numbers)) $x++;
            else
    	{
    		$numbers[$x] = $ranvar;
    ?>
    Bunda kendini sıkacak ne var anlamadım, yapamıyorsak yapamıyoruz deriz.
  • 22-12-2009, 12:57:47
    #4
    Hayır onu kendim için söyledim, o diğer şekilde yapamıyorum diyorum yani. Bunda küçük düşek birşey yok, yapamıyorum, soruyorum diğer yolu.
  • 22-12-2009, 21:45:46
    #5
    where uye="$uye" order by tarih limit ...

    $r = mysql_query("SELECT * FROM tablo where uye='$nick' order by tarih desc limit 5");

    gibi bir sorgu işini görür tabi tarih ve üye adı dbde saklı ise
  • 22-12-2009, 23:48:27
    #6
    Aslında ilk soruyu sorduğum gün kodları da yazdım.
    Çok rica ediyorum, o kadların en alttan ikinci satırında değişiklik yapmak istiyorum. Oradaki
    . "\n ORDER BY $orderby"
    satırı
    . "\n GROUP BY a.catid"
    şeklinde değişince %50 amacıma ulaşıyorum. Yani artık Yaşar Kemal adlı yazarın bugün 10 tane makalesi de yayınlanmış olsa, sadece sonuncusu yayınlanmış oluyor. Ammma işte 10 tane yazarı da Categori ID'lerine göre, yani ID 1 olanı birinci sıraya, AD 10 olanı onuncu sıraya koyuyor ve yerleri artık değişmiyor. İşte burayı da düzelttik mi kalan %50 tamamlanmış oluyor.

    Takdir edersiniz ki Yaşar Kemal'in bugün 10 tane makalesi yayınlanmışsa sadece sonucusu ekrana gelsin ama günün son makalesi Yahya Kemal'in makalesi ise yazarlar stununun en üstüne Yahya Kemal gelsin.

    Buradaki kod öbeği biraz karmaşık olduğu için bir yer ile oynadım mi başka yeri bozuluyor, bozmadan yapamadım
  • 23-12-2009, 13:10:42
    #7
    Son hali bu, artık AB adlı yazarın bugün 2 tane yazısı yayınlasa dahi, sadece yeni yazısı anasayfada görünüyor. Ama Anasayfadaki yazarları üst üste dizilişleri tarihe göre değil, categori ID'sinin büyüklüğüne göre oluyor. İstiyorum ki tarihe göre 10 tane yazar sıralansın.

    $query = "SELECT a.*, u.name, u.username, cc.image AS image,"
    ." CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(\":\", a.id, a.alias) ELSE a.id END as slug,"
    ." CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(\":\", cc.id, cc.alias) ELSE cc.id END as catslug,'link' as link"
    . "\n FROM #__content AS a"
    . "\n LEFT JOIN #__content_frontpage AS f ON f.content_id = a.id"
    . "\n LEFT JOIN #__users AS u ON u.id = a.created_by"
    . "\n INNER JOIN #__categories AS cc ON cc.id = a.catid"
    . "\n INNER JOIN #__sections AS s ON s.id = a.sectionid"
    . "\n WHERE ( a.state = 1 AND a.sectionid > 0 )"
    . "\n AND ( a.publish_up = " .$database->Quote($nullDate) 
    . " OR a.publish_up <= " . $database->Quote($now) . ")"
    . "\n AND ( a.publish_down = " . $database->Quote($nullDate)
    . " OR a.publish_down >= " . $database->Quote($now) . " )"
    . ( $access ? "\n AND a.access <= " . (int) $user->get('aid') . " AND cc.access <= " 
    . (int) $user->get('aid') . " AND s.access <= " . (int) $user->get('aid') : '' )
    . $whereCatid
    . $whereSecid
    . "\n AND ((TO_DAYS('" . date( 'Y-m-d', time()+$tzoffset*60*60 ) 
    . "') - TO_DAYS(a.created)) <= '" . $period . "')"
    . ( $show_front == '0' ? "\n AND f.content_id IS NULL" : '' )
    . "\n AND s.published = 1"
    . "\n AND cc.published = 1"
    . "\n GROUP BY a.catid"
    . "\n limit $skip," . $count;