Yıldızlı puanlama localhostta sorunsuz çalışıyor, webde çalışmıyor

yunusbbayram

Öğrenci
Katılım
5 Nisan 2012
Mesajlar
1
Reaksiyon puanı
0
Puanları
0
Her makalede gözüken bir puanlama sistemi yaptım bilgisayarımda localhostta calışıyor ineternette çalışmıyor. hata şu sekilde cıkıyor.

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/***/public_html/puanlama/oyal.php on line 50

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/***/public_html/puanlama/oyal.php on line 52

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/***/public_html/puanlama/oyal.php on line 68
gri.gif
gri.gif
gri.gif
gri.gif
gri.gif
gri.gif
gri.gif
gri.gif
gri.gif
gri.gif
Ortalama Puan : 0.00 | Katilan Kisi : | Toplam Puan : 0

makale.php dosyasının dışında oyal.php oyver.php adında ikidosya dan bir takım codlara ulaşılıyor. oyal.php nin içi şu sekilde.

PHP:
<?php require_once('../connections/connection.php'); ?>

<?php

if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}
//include ('connections/baglan.php');
mysql_select_db ($databese_connection, $connection);
/* mysql_select_db($database_connection, $connection);*/


$id = $_POST['MakaleID'];
$ip = getenv("REMOTE_ADDR");

$sql = "SELECT * FROM puanlar WHERE yazi = '" . $id . "'";
$sorgu = mysql_query($sql);
$say = mysql_num_rows($sorgu);
$puan = 0;
while($sonuc = mysql_fetch_array($sorgu)) {
    $puan += $sonuc['puan'];
}
$Puan= $puan;

$ort = @($puan / $say);
$ortalama1 = sprintf(".2f", $ort);
$ortalama2 = round($ort);
$bos2 = 10 - $ortalama2;




$sql_ = "SELECT * FROM puanlar ";
$sql_ .= "WHERE yazi = '" . $id . "' AND veren = '" . $ip . "'";
$sorgu_ = mysql_query($sql_);
$say_ = mysql_num_rows($sorgu_);






if($say_ == 1) {
    $puan_ = mysql_result($sorgu_, 0, "puan");
    $bos_ = 10 - $puan_;
    for($i = 1; $i <= $puan_; $i++) {
        echo "<img src=\"puanlama/resimler/yesil.gif\" />";
    }
    for($j = 1; $j <= $bos_; $j++) {
        echo "<img src=\"puanlama/resimler/gri.gif\" />";
    }
} else {
    for($i = 1; $i <= $ortalama2; $i++) {
        echo "<img class=\"yildiz\" id=\"r" . $i;
        echo "\" src=\"puanlama/resimler/sari.gif\" onmouseover=\"omo(" . $i;
        echo ");\" onmouseout=\"omout();\" onclick=\"oc(" . $i;
        echo ");\" />";
    }
    for($j = 1; $j <= $bos2; $j++) {
        echo "<img class=\"yildiz\" id=\"r" . ($ortalama2 + $j);
        echo "\" src=\"puanlama/resimler/gri.gif\" onmouseover=\"omo(";
        echo ($ortalama2 + $j) . ");\" onmouseout=\"omout();\" ";
        echo "onclick= \"oc(" . ($ortalama2 + $j) . ");\" />";
    }
}


echo "&nbsp;&nbsp;&nbsp; Ortalama Puan : <b>" . $ortalama1;
echo "</b> &nbsp;|&nbsp; Katilan Kisi : <b>" . $say . "</b>";
echo " &nbsp;|&nbsp; Toplam Puan : <b>" . $Puan.  "</b> &nbsp;";


?>

cok uğraştım bulamadım acaba hata nerede?
 

kizanlik

Asistan
Katılım
25 Mart 2012
Mesajlar
250
Reaksiyon puanı
0
Puanları
0
PHP bilmiyorum ancak hatanın şu bölümden kaynaklandığını düşünüyorum:

$id = $_POST['MakaleID'];
$ip = getenv("REMOTE_ADDR");

$sql = "SELECT * FROM puanlar WHERE yazi = '" . $id . "'";
$sorgu = mysql_query($sql);
$say = mysql_num_rows($sorgu);

Aldığın hataya bakılırsa SELECT statement içindeki PUANLAR tablosu web server üzerindeki databasede tanımlı değil, erişilemiyor veya ismi farklı.
 

aslanpayi

Doçent
Katılım
12 Ağustos 2009
Mesajlar
523
Reaksiyon puanı
1
Puanları
0
mysql_num_rows($sorgu);
mysql_fetch_array($sorgu)
mysql_num_rows($sorgu_);

PHP bilmiyorum açıkçası ama yukarıdaki kod bloklarında hata verdiğine göre bu metodların aldığı değişkenleri gözden geçirmende fayda vardır. Tablo veya alan isimlerinde ufak bir hata olabilir.

Ayrıca anlamadığım bir nokta var ve bilmediğimden soruyorum,


$sql_ = "SELECT * FROM puanlar ";
$sql_ .= "WHERE yazi = '" . $id . "' AND veren = '" . $ip . "'";
$sorgu_ = mysql_query($sql_);
$say_ = mysql_num_rows($sorgu_);


Gördüğümüz kod blokunda $sql_ kısmı iki satır şeklinde yazılmış. normalde

$sql_ = "SELECT * FROM puanlar WHERE yazi = '" . $id . "' AND veren = '" . $ip . "'";

şeklinde olması gerekmez mi? Yoksa PHP'ye özgü bir yazım şekli midir bu?
 

kizanlik

Asistan
Katılım
25 Mart 2012
Mesajlar
250
Reaksiyon puanı
0
Puanları
0
[MENTION=4189]aslan[/MENTION]payı

Dediğim gibi. PHP bilmiyorum.

$sql_ = "SELECT * FROM puanlar ";
$sql_ .= "WHERE yazi = '" . $id . "' AND veren = '" . $ip . "'";

ikinci satırda " .= " var. Sanıyorum " += " anlamında. Ben hatadan yola çıktım. Kısaca "veri kaynağı geçerli değil" diyor.

Sanırım, query çalışıyor ama hata dönüyor. Hata da row olmadığı için mysql_num_rows fonksiyonu hata veriyor.

Tabloya erişim problemi var sanki. Ayrıca, localhost çalıştırıyor demiş. Dediğin yerde hata olsa localhost da hata verir.
 

LeaveNhA

Doçent
Katılım
4 Aralık 2011
Mesajlar
598
Reaksiyon puanı
5
Puanları
18
@aslanpayı

Dediğim gibi. PHP bilmiyorum.

$sql_ = "SELECT * FROM puanlar ";
$sql_ .= "WHERE yazi = '" . $id . "' AND veren = '" . $ip . "'";

ikinci satırda " .= " var. Sanıyorum " += " anlamında. Ben hatadan yola çıktım. Kısaca "veri kaynağı geçerli değil" diyor.

Sanırım, query çalışıyor ama hata dönüyor. Hata da row olmadığı için mysql_num_rows fonksiyonu hata veriyor.

Tabloya erişim problemi var sanki. Ayrıca, localhost çalıştırıyor demiş. Dediğin yerde hata olsa localhost da hata verir.

"." operatörü burda karakter katarı birleştirme operatörü olarak kullanılıyor.

o ifadenin tam anlamı asında
$id = 5; // sallıyorum değerleri :D
$ip = 88.04.22.10 // bu da sallama, benim ip'im değil, bruteforce yapmayın ! :D
WHERE yazi = '5' AND veren = '88.04.22.10' // dur...

fakat sorunun nerde olduğu hakkında bi görüşüm yok, mysql ve php için orta ve ileri düzeye henüz geçicem inş...
 

seckyn

Profesör
Katılım
21 Nisan 2010
Mesajlar
2,945
Reaksiyon puanı
18
Puanları
38
Bende pek bilmiyorum php ama google dayının dediğine göre başlangıç değerinin boş olduğundan veriyor diyor :p Hata veren kodların başına @ koyarak onları kaldırabilirmişin öyle diyor :p
 

byyasin

Doçent
Katılım
24 Ağustos 2009
Mesajlar
532
Reaksiyon puanı
5
Puanları
18
Bence database bağlantı ayarları ile ilgili sorun olabilir veya sql yüklememiş olabilirsin
num_rows çalışmıyor buda demekki sql sorgusu yapılamıyor.

Genelde acele ile sunucuya atılan scriptlerde ya sql hiç oluşturulmaz yada oluşturulunca database yükleme unutulur.
Bunları bi incele
sonrasında syntaxa bakalım.
 

markette

Öğrenci
Katılım
12 Mart 2012
Mesajlar
98
Reaksiyon puanı
0
Puanları
0
mysql bağlantın düzgün çalışıyor mu? test ettin mi acaba?
 

SerdarGokcen

Asistan
Katılım
7 Nisan 2012
Mesajlar
400
Reaksiyon puanı
3
Puanları
0
şu kodu sunucunda ve localhostta çalıştırıp versiyonları yaz bakalım:

local: mysql 5.1
local php: 5.3.8

gibi:

<?php$link = mysql_connect('localhost', 'mysql_user', 'mysql_parolası');
if (!$link) {
die('Bağlanamadı: ' . mysql_error());
}
printf("MySQL sunucu sürümü: %s<p />", mysql_get_server_info());


printf("Çalışan PHP\'nin sürümü: %s", phpversion());
?>


sayısal sütunlara '' ile değer gönderme hiç bir zaman!

//sorunlu kod ama çalışır.
$sql_ = "SELECT * FROM puanlar WHERE yazi = '" . $id . "' AND veren = '" . $ip . "'";

//sorunsuz kod
$sql_ = "SELECT * FROM puanlar WHERE yazi = $id AND veren = '$ip'";


 

byyasin

Doçent
Katılım
24 Ağustos 2009
Mesajlar
532
Reaksiyon puanı
5
Puanları
18
Arkadaş sorunu çözmüş boşa kendinizi yormayın :)
ilk mesajdaki yıldız resiminin yolundan sitenin ismini buldum ordan denedim :)
 

byyasin

Doçent
Katılım
24 Ağustos 2009
Mesajlar
532
Reaksiyon puanı
5
Puanları
18
Mod arkadaşlar topic çöpe lütfen. Boşa çaba sarfediyon ya valla :)
 

Son mesajlar

Üst