İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

php / mysql Soru

sempaty

1
İyinet Üyesi
Katılım
25 Şubat 2005
Mesajlar
3,824
Reaction score
19
Konum
hawaii. ama sanal tur.
elimde bi oyun scripti var. daha doğrusu yayında olan sitem de var.. ama bi kaç eksiği bulunuyor..

sormak istediğim,

1. anasayfadaki kategori başına oyun sayısını nasıl belirleyebilirm?
2. kategori sayfalarını nasıl oluşturabilirm? yani anasayfada link olcak. o sayfada sadece o kategori ile ilgili oyunlar olcak.. (bunu manuel php sayfaları ile de yapabiliriz)

şuan ki sistemde tüm oyunlar anasayfada, alt alta kategoriler halinde...



Herkese teşekkürler..
 
D

dejafu

Misafir
PHP:
$kategoriler = mysql_query("select * from kat"); 

while($rows = mysql_fetch_row($kategoriler)) { 

$sayi = mysql_query("select * from oyun where oyunkat='$rows[0]' "); 
$num_rows = mysql_num_rows($sayi); 
echo $rows[1]."(".$num_rows.")<br>"; 

}

gibi veya tek sorgu ile yapmak gerekirse

PHP:
SELECT (SELECT count(oyunid) FROM oyun WHERE oyunkat = katid) AS total, katid FROM kat WHERE 1
Kullandıgım Tablolar :

CREATE TABLE `kat` (
`katid` int(10) NOT lisanssız auto_increment,
`katadi` varchar(50) NOT lisanssız default ''
);

CREATE TABLE `oyun` (
`oyunid` int(10) NOT lisanssız auto_increment,
`oyunadi` varchar(255) NOT lisanssız default '',
`oyunkat` int(10) NOT lisanssız default '0'
);
 

sempaty

1
İyinet Üyesi
Katılım
25 Şubat 2005
Mesajlar
3,824
Reaction score
19
Konum
hawaii. ama sanal tur.
öncelikle verdiğin bilgilerim istediğim şeyler olmasa da işime yaradı başka bişey için gerçekten :) teşekkürler

sql bu

PHP:
CREATE TABLE `categories` (
  `cId` mediumint(9) NOT lisanssız auto_increment,
  `cName` varchar(200) NOT lisanssız default '',
  `cOrder` bigint(20) NOT lisanssız default '0',
  `cVisible` tinyint(1) NOT lisanssız default '1',
  UNIQUE KEY `cId` (`cId`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
 
 
CREATE TABLE `games` (
  `gId` bigint(20) NOT lisanssız auto_increment,
  `gInCategory` mediumint(9) NOT lisanssız default '0',
  `gSwfFile` varchar(200) NOT lisanssız default '',
  `gAdres` varchar(200) NOT lisanssız default '',
  `gName` varchar(100) NOT lisanssız default '',
  `gOrder` bigint(20) NOT lisanssız default '0',
  `gVisible` tinyint(1) NOT lisanssız default '1',
  `gThumb` varchar(200) NOT lisanssız default '',
  `gWidth` varchar(8) NOT lisanssız default '',
  `gHeight` varchar(8) NOT lisanssız default '',
  `gDescription` varchar(100) NOT lisanssız default '',
  UNIQUE KEY `gId` (`gId`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

ben şunu yapamadım, örneğin kat.php dosyasını oluşturduk, kat.php?cid=1 örneğin 1 nolu kategori spor kategorisi, spor kategorisinin oyunlarını listelemesi için ne yapmalıyım.

index.php dosyasındaki kod; (tüm kategorilerdeki oyunların tümünü listeliyor)
PHP:
   <?php 
    if(!isset($_GET['act']) || $_GET['act'] != 'play'){
            echo $sys->makeGamesList();
        } else {
            if(isset($_GET['id'])){
                echo $sys->makeGameHtml($_GET['id'], $_GET['cid']);
            } else {
                echo '<div>
                <strong>Hata: </strong> Geçersiz Giriş<br /><br />
                <a href="'.$_SERVER['PHP_SELF'].'">Anasayfaya dön</a>
                </div>';
            }
        }
 
        ?>

ve system dosyasındaki ilgili satırlar (sanırım bu kod tüm oyunları listeliyor)

PHP:
 function makeGamesList(){
  if(!$this->isLoaded()){
   $this->Load();
  }
  $output = "";
  foreach($this->gamedata as $category){
   $games = "";
   $gamedata = "";
   if(count($category['games']) > 0){
    $count = 0;
    foreach($category['games'] as $game){
     if(($count % 2) == 1 || count($category['games']) == 1){
      eval("\$games .= \"".$this->template['game']."\";");
      eval("\$gamedata .= \"".$this->template['gdoublewrapper']."\";");
      $games = "";
     } else {
      eval("\$games .= \"".$this->template['game']."\";");
     }
     $count++;
     if(count($category['games']) != 1 && (count($category['games']) % 2) == 1 && ($count == count($category['games']))){
      eval("\$gamedata .= \"".$this->template['gdoublewrapper']."\";");
     }
    }
    eval("\$output .= \"".$this->template['category']."\";");
   }
  }
  return $output;
 }



makeGameHtml kısmındaki $_GET['id'] falan dikkatimi çekti ama gene beceremedim

yardımcı olursanız sevinirim.
 
D

dejafu

Misafir
PHP:
$oyunlar = mysql_query("select * from games WHERE gInCategory='$_REQUEST[cid]' "); 

while($rows = mysql_fetch_row($oyunlar)) { 

echo "Oyun adı: ".$rows[4]."<br>";

}

şeklinde oyunları listeliyebilirsin. ama sanırım yukarıda template sistemi kullanılıyor.
 

sempaty

1
İyinet Üyesi
Katılım
25 Şubat 2005
Mesajlar
3,824
Reaction score
19
Konum
hawaii. ama sanal tur.
arkadaşım yardımların için çok teşekkürler.

seni yoruyoruz ama, bi kod daha alabilir miyim yani ne kadar uğraştıysam da bulamadım:

kategori sayfasında oyunları listeledim (bi önceki mesajından yararlanarak :) ). bunları
Kod:
<td><a href="adres.htm"><img src="imaj.gif">Oyun adı</a></td>
şeklinde yaptım ama, onlarca oyun olacağı için tümünü <td> yapmak iyi olmaz. benim istediğim mesela her 10 oyunda <tr> tagını kullansın. alt satırda devam etsin aynı işlemlere..
bu mysql ile mi alakalıdır acaba? (limit fonksiyonu yani). yoksa normal php kodu ile mi yapılabilir?

saygılar..
 
D

dejafu

Misafir
$td den yan yana kaç tane hücre olmasını istiyorsan o değeri verirsin.
PHP:
$oyunlar = mysql_query("select * from games WHERE gInCategory='$_REQUEST[cid]' "); 

echo "<table><tr>";

$td=10;
$tr=0;
while($rows = mysql_fetch_row($oyunlar)) { 

$tr = $tr +1;
echo "<td>Oyun adı: ".$rows[4]."</td>"; 

if ($tr % $td == 0)
{
echo "</tr><tr>";
}

} 
echo "</tr></table>";
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst