2016-03-23 15 views
-1

Sitemdeki bir üyeye ait sayılmadığı için "Free" adlı bir dosya hazırlarken küçük bir sorun yaşıyorum. Veritabanındaki satır "ücretsiz" olarak adlandırılır. Temel olarak, bir dosyanın ücretsiz olup olmadığını görmek için veritabanını kontrol etmek için bu kodu istiyorum. Eğer ISNT'in özgür olduğu bir şeyden biraz farklı bir sonuç vermek gerekirse (temelde dosya bunun yerine ücretsiz değildir).PHP Sorun (ücretsiz bir şey yapmak)

Nerede yanlış gideceğimi bilmiyorum, ancak şu anda diğer ifadeyi atlıyor ve yalnızca kodu kullanıyor.

SQL Yapısı: bu dizeleri karşılaştıran sorunlar olabilir gibi

 CREATE TABLE IF NOT EXISTS `torrents` (
     `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
     `info_hash` varchar(20) CHARACTER SET latin1 COLLATE latin1_bin NOT  NULL DEFAULT '', 
     `name` varchar(255) NOT NULL DEFAULT '', 
     `filename` varchar(255) NOT NULL DEFAULT '', 
     `save_as` varchar(255) NOT NULL DEFAULT '', 
     `search_text` text NOT NULL, 
     `descr` text NOT NULL, 
     `ori_descr` text NOT NULL, 
     `category` int(10) unsigned NOT NULL DEFAULT '0', 
     `hits` int(10) unsigned NOT NULL DEFAULT '0', 
     `times_completed` int(10) unsigned NOT NULL DEFAULT '0', 
     `leechers` int(10) unsigned NOT NULL DEFAULT '0', 
     `seeders` int(10) unsigned NOT NULL DEFAULT '0', 
     `last_action` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', 
     `visible` enum('yes','no') NOT NULL DEFAULT 'yes', 
     `banned` enum('yes','no') NOT NULL DEFAULT 'no', 
     `owner` int(10) unsigned NOT NULL DEFAULT '0', 
     `countstats` enum('yes','no') NOT NULL DEFAULT 'yes', 
     `free` enum('yes','no') DEFAULT 'no', 
     `req` tinyint(1) NOT NULL DEFAULT '0', 
     `reseed` enum('yes','no') DEFAULT 'no', 
     `last_reseed` int(11) NOT NULL DEFAULT '0', 
     `picone` varchar(255) NOT NULL DEFAULT '', 
     `pictwo` varchar(255) NOT NULL DEFAULT '', 
     `picthree` varchar(255) NOT NULL DEFAULT '', 
     `anonymous` enum('yes','no') NOT NULL DEFAULT 'no', 
     PRIMARY KEY (`id`), 
     UNIQUE KEY `info_hash` (`info_hash`), 
     KEY `owner` (`owner`), 
     KEY `visible` (`visible`), 
     KEY `category_visible` (`category`,`visible`), 
     KEY `leechers` (`leechers`,`seeders`), 
     KEY `leechers_2` (`leechers`,`seeders`), 
     KEY `completed_by` (`completed_by`), 
     FULLTEXT KEY `ft_search` (`search_text`,`ori_descr`) 
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=144427 ; 










    $downl = ($CURUSER["downloaded"] + $row["size"]); 
     $sr = $CURUSER["uploaded"]/$downl; 
    switch (true) 
    { 
case ($sr >= 4): 
    $s = "w00t"; 
    break; 
case ($sr >= 2): 
    $s = "grin"; 
    break; 
case ($sr >= 1): 
    $s = "smile1"; 
    break; 
case ($sr >= 0.5): 
    $s = "noexpression"; 
    break; 
case ($sr >= 0.25): 
    $s = "sad"; 
    break; 
    case ($sr > 0.00): 
    $s = "cry"; 
    break; 
default; 
    $s = "w00t"; 
    break; 
    } 

     $sr = floor($sr * 1000)/1000; 
     $sr = "<font color='".get_ratio_color($sr)."'>".number_format($sr, 3). 
    "</font>&nbsp;&nbsp;<img src=\"pic/smilies/{$s}.gif\" alt='' />"; 

    if ($row['free'] == 'yes') 
     { 
    ?> 
    <tr><td align='right' class='heading'>Ratio After Download</td><td><del><?php echo $sr;?>  

    Your new ratio if you download this torrent.</del> <b><font size="" color="#FF0000">[FREE]</font></b> 
    (only upload stats are recorded)</td></tr> 
    <?php 
    } 
    else 
    { 
    ?> 
    <tr><td align='right' class='heading'></td><td> 
    <b><font color="#FFFF00">Your ratio if you download this torrent wil be: </font></b><?php echo $sr;?> <?=$uped?></td></tr> 
+0

Can ayrıca sql ve benzerlerini de gönderirsiniz. Bir fikir edinmek için bütün kodu görmemiz gerekiyor. Ayrıca, tüm tablonuzu ileri geri geçiş yapmak yerine if/else içinde yankılanmayı deneyin. Bir hataya benzemiyor, ancak bunu anlayana kadar mümkün olduğunca basit hale getirebilirsiniz. –

+0

Özgün yazı güncellendi :) – ZenoX

+0

Kod çalışır, sadece doğru olsa bile orijinal ifadeyi tanımıyor ve doğrudan doğruya atlar. – ZenoX

cevap

1

görünüyor. If ifadenizde çift tırnak kullanmayı deneyin:

if ($row['free'] == "yes") 

PHP, muhtemelen yardımcı olabilecek çift tırnak işareti ile daha az katıdır.

o olurdu böylece bir dize daha bir boolean test etmek çok daha kolaydır olarak yerine bir dize bir boolean (doğru, yanlış) depolayan bir sütun kullanmayı deneyin işe yaramazsa

if ($row['free'] == true) 
+0

Cevabınız için teşekkürler, her ikisini de denedim ve dosya, evet olarak (veritabanında) (ilk ifadeyi vermeli) olarak ayarlanmış olsa bile, ikinci ifadeye geçiyor. – ZenoX

+0

, "select" sql/php'nizi ekleyebilir, tabloyu nerede oluşturduğunuzu görüyorum ama php'ye hiçbir şey çekmediğiniz yeri göremiyorum. Varsayılanınız "ücretsiz" için "hayır" dır, sadece 'evet' geri döndüğünden emin olmak için satırı tekrarlayabilir misiniz? Dilbilgisi için düzenlenmiş –

+0

Doğruydu, "ücretsiz" için veritabanına bir çağrı sorgusu eksikti. Teşekkür ederim! Doğru cevap. Aferin! :) – ZenoX

İlgili konular