защо не ми разчита mysql_num_rows

aquafresh каза:
тъпия локален не ми чете mysql_num_rows.. как да го оправя? дали е от версията на xampp-a ?
ние сме гадатели да-
mysticman.jpg
 
Всъщност правилното е mysql_num_rows :)
А иначе грешката може да идва от самата заявка.
Дай кода да видим какво бъркъш.
 
не мисля ,че е от кода.. на локалния ми дава грешка ,а на хоста на който е сайта ми не ми дава тая грешка :shock:

Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
<style type="text/css">

</style>
</head>

<body>
<?php
include('config.php'); // Инклудваме конфиг файла
$ip= getenv("REMOTE_ADDR"); //Взимаме ИП адреса на потребителя
$sql="SELECT * FROM vaprosi ORDER BY v_id DESC LIMIT 0 , 1"; //Селектираме последния записан въпрос в БД
$rez=mysql_query($sql,$link);
$red=mysql_fetch_array($rez);
$vapros=$red['vapros'];//Това е променливата с въпроса
$v_id=$red['v_id']; //Това е променливата с ИД номера на въпроса

$sql1="SELECT * FROM ip WHERE `uip` LIKE '$ip' AND `v_id` LIKE '$v_id' ";//Селектираме от таблицата с ИП адреси дали има записан ИП адреса на потребителя и ИД на въпроса , т.е. дали е гласувал вече.
$rez1=mysql_query($sql1,$link);
$chekip=mysql_num_rows($rez1); //Ако даден потребител е гласувал ще върне резултат по голям от 0 в противен случаи ще върне 0

$sql1="SELECT * FROM ip WHERE `v_id` LIKE '$v_id'";
$rez1=mysql_query($sql1,$link);
$broiip=mysql_num_rows($rez1); //Взимаме броя на общо гласувалите в анкетата като селектираме ИП адресите които са записани за даден въпрос

echo $vapros."<br /><br />"; //Принтираме Въпроса


//Проверяваме дали потребителя е гласувал ако не е изписваме формата за гласуване
if($chekip==0){


$sql="SELECT * FROM otgovori WHERE v_id LIKE '$v_id'";//Селектираме всички отговори със ИД($v_id) на въпроса.
$rez=mysql_query($sql,$link);


echo"<form action=\"anketa/sendvote.php\" method=\"POST\" >";

//С цикала while принтираме отговорите
while($red=mysql_fetch_array($rez)){
//С радио бутона изпращаме $о_id ( ид на въпроса) към формата такаче да бъде променено точно това поле от БД.
echo $red['otgovor']."<input type=\"radio\" name=\"vote\" value=\"".$red['o_id']."\" /><br />";
}
echo"<input type=\"Submit\" value=\"Гласувай!\">";
}


//Тази част от кода се изпалнява ако потребителя вече е гласувал т.е. акo $chekip получи стоиност по голяма от 0
else{
//Селектираме отговорите от таблица отговори за съответния въпрос
$sql="SELECT * FROM otgovori WHERE v_id LIKE '$v_id'";
$rez=mysql_query($sql,$link);

//Отново с цикъл ги принтираме
while($red=mysql_fetch_array($rez)){

echo $red['otgovor']." (<strong>".$red['rezultat']."</strong>) <br>";
$procent=$red['rezultat']*(100/$broiip) ;//Пресмятаме ги в проценти

echo "<img src=\"anketa/bar_left.gif\" alt=\"\" border\"0\" /><img src=\"anketa/vote.gif\" style=\"width:$procent; height:9px\" alt=\"\" border\"0\" /><img src=\"anketa/bar_right.gif\" alt=\"\" border\"0\" /><br />";
}

}

mysql_close($link);
?> 
</body>
</html>
 
aquafresh каза:
еми защото и друг път ми я е давало при други кодове..
:shock:
тогава единственото нещо което ми идва на главата, като не съм гледал скрипта е да го качиш на безплатен хостинг и да кажеш дали работи
 
$sql1="SELECT * FROM ip WHERE `v_id` LIKE '$v_id'";

само v_id да не е число :)
Edit: A LIKE без % какво прави?
Дай ми ID /число/ което е като '1001' /в кавички, т.е. стринг/ :shock:
A COUNT(*) vs num_rows?
$sql1="SELECT * FROM ip WHERE `uip` LIKE '$ip' AND `v_id` LIKE '$v_id' ";//Селектираме от таблицата с ИП адреси дали има записан ИП адреса на потребителя и ИД на въпроса , т.е. дали е гласувал вече.
 
koko5 каза:
$sql1="SELECT * FROM ip WHERE `v_id` LIKE '$v_id'";

само v_id да не е число :)
Edit: A LIKE без % какво прави?
Дай ми ид което е като '1001' /b кавички/ :shock:

A COUNT(*) vs num_rows?
$sql1="SELECT * FROM ip WHERE `uip` LIKE '$ip' AND `v_id` LIKE '$v_id' ";//Селектираме от таблицата с ИП адреси дали има записан ИП адреса на потребителя и ИД на въпроса , т.е. дали е гласувал вече.

Дори резултата да е различен от очакванията ще има резултат. Не е от заявката

aquafresh каза:
не мисля ,че е от кода.. на локалния ми дава грешка ,а на хоста на който е сайта ми не ми дава тая грешка :shock:

Значи най-вероятния проблем е, че ни се си оправил БД както трябва на локалхост-а
 
StormBreaker каза:
Дори резултата да е различен от очакванията ще има резултат. Не е от заявката
Нищо подобно! И ако се сетиш защо на единия хост има резултат, а на другия не, ще е много добре :)
 
Добре де, сега има-няма резултат от заявката нека да я видим!Или ще изкара грешка ако добави:
$sql1="SELECT * FROM ip WHERE `v_id` LIKE '$v_id'";
$rez1=mysql_query($sql1,$link) or die(mysql_error());
или да даде едно:
print_r($rez1);
 
koko5 каза:
StormBreaker каза:
Дори резултата да е различен от очакванията ще има резултат. Не е от заявката
Нищо подобно! И ако се сетиш защо на единия хост има резултат, а на другия не, ще е много добре :)

Я прочети тук и тогава се изказвай http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html

In MySQL, LIKE is allowed on numeric expressions. Даже има пример как
SELECT 10 LIKE '1%';
Връща резултат.


На същата страница можеш да прочетеш и, че LIKE не е задължително да има % или _
 
% допуска каквото и да е на негово място, а _ до колкото си спомням допускаше на негово място само 1 символ
Демек ако сложиш % преди и след това което търсиш ще проверява дали се съдържа в полето, а ако го няма ще проверява дали съдържанието на полето е точно това, което си задал
 
като добавя or die(mysql_error()); дава грешка

Parse error: syntax error, unexpected T_LOGICAL_OR in C:\xampp\htdocs\DESIGN\anketa\index.php on line 27

ПС: 27 ред е реда на който е добавен or die(mysql_error());
 

Back
Горе