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

StormBreaker каза:
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 не е задължително да има % или _
по въпроса за LIKE съм чел доста, а ти прочети за режимите на работа на MySQL: STRICT и т.н. и тогава се изказвай, защото такива заявки примерно на Oracle изобщо не ги виждам.
 
aquafresh каза:
като добавя 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());
Дай целия ред, не си го сложил където трябва
 
Код:
 <!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); or die(mysql_error()); 
$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); or die(mysql_error()); 
$chekip=mysql_num_rows($rez1); //Ако даден потребител е гласувал ще върне резултат по голям от 0 в противен случаи ще върне 0

$sql1="SELECT * FROM ip WHERE `v_id` LIKE '$v_id'";
$rez1=mysql_query($sql1,$link);  or die(mysql_error()); 
$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); or die(mysql_error()); 


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); or die(mysql_error()); 

//Отново с цикъл ги принтираме
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>
 
опитай:

Код:
include('config.php'); // Инклудваме конфиг файла
mysql_query("SET @@sql_mode=''");
...................................................
 
koko5 каза:
по въпроса за LIKE съм чел доста, а ти прочети за режимите на работа на MySQL: STRICT и т.н. и тогава се изказвай, защото такива заявки примерно на Oracle изобщо не ги виждам.

Първо. Не вярвам някъде нарочно да сложат strict режим, който се използва много рядко. Второ - какво общо има oracle? Сега говориме за mysql.

Трето.
aquafresh каза:
сега даде Table '123.vaprosi' doesn't exist
Мисля, че съм прав и не е от LIKE. Ето ти го отговора защо на localhost не става. Най-вероятно е объркал името на таблицата или на БД или изобщо не ги е вкарал.

Четвърто.
mysql_query("SET @@sql_mode=''"); не виждам как ще му помогне, след като Mysql не може да намери таблицата
 
или съм объркал или нещо се е прецакало .. но като видях файла db.sql липсваха 2 таблици "vuprosi " "ip" .. тях ги взех от хоста ,на който е сайта ми.. там използвам тази с-ма за анкети
 
- Значи, идеята не е точно в LIKE, а в това, че не е правилно, особено приложено за числа, които са в кавички...
- Ora e само пример-избора си е твой дали ще пишеш преносими заявки или не.
- Нали не си въобразяваш, че може да забраниш на някого да пише във форум по интернет или пък да е длъжен да е любезен с теб при подобни реплики, пък било то и да си прав?
 
сега пък ми дава грешка пак в тва mysql_query .. този път файла е addnew.php ...


Код:
<?php
//Първо проверяваме дали има изпратена стойност от формата ако има записваме това което сме изпратили от формата ако няма на екрана се появява формата.
if (isset($_POST['submit'])) {
$vapros=$_POST['vapros']; // Взимаме въпроса изпратен от формата.
$otg=array(); // Създаваме масив от отговори и цикъл с които ще ги ги вкараме в масива.
for($i=0;$i<=15;$i++){
$otg[$i]=$_POST['otg'.$i];//Взимаме отговорите изпратени от формата.
}

//Понеже от формата изпращаме и присвояваме 16 полета а анкетата която сме създали може да има по малко отговори трябва да премахнем празните елементи от масива.
foreach($otg as $i => $value) {
if($value == "") {unset($otg[$i]);}
}


$realotg= array_values($otg); //Това е новия масив с всички отговори
$broi=count($realotg); // Преброяваме елементите в масива

include('config.php');
$sql="INSERT vaprosi (vapros) VALUES ('$vapros')";//Записваме въпроса в таблицата vaprosi
$rez=mysql_query($sql,$link) or die(mysql_error());

$sql="SELECT * FROM vaprosi ORDER BY v_id DESC LIMIT 0 , 1";//Селектираме най-големия Индивидуалния номер на последния записан въпрос
$rez=mysql_query($sql,$link) or die(mysql_error());
$red=mysql_fetch_array($rez);
$v_id=$red['v_id'];

$broi=count($realotg)-1;

//С един дикъл записваме всички отговори в таблицата otgovori
for($i=0;$i<=$broi;$i++){
$sql="INSERT INTO otgovori(`v_id` , `otgovor` , `rezultat`) VALUES ('$v_id','$realotg[$i]','0')";
$rez=mysql_query($sql,$link) or die(mysql_error());
}

}
//този код се изпълнява преди формата да бъде изпълнена
else{
echo"<form action=\"addnew.php\" method=\"POST\" />\n";
echo"Въпрос<br />";
echo"<input type=\"text\" name=\"vapros\" /><br/><br />Отговори<br />\n";

// С цикъл
for($i=0;$i<=15;$i++){

echo"<input type=\"text\" name=\"otg".$i."\" style=\"width:400px;\"/><br />\n";
}
echo"<input type=\"submit\" name=\"submit\" /></form>";
}
?>

дава ми
Warning: include(config.php) [function.include]: failed to open stream: No such file or directory in C:\xampp\htdocs\DESIGN\anketa\addnew.php on line 20

Warning: include() [function.include]: Failed opening 'config.php' for inclusion (include_path='.;C:\xampp\php\pear\') in C:\xampp\htdocs\DESIGN\anketa\addnew.php on line 20

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\xampp\htdocs\DESIGN\anketa\addnew.php on line 22
 
koko5 каза:
- Значи, идеята не е точно в LIKE, а в това, че не е правилно, особено приложено за числа, които са в кавички...
- Ora e само пример-избора си е твой дали ще пишеш преносими заявки или не.
- Нали не си въобразяваш, че може да забраниш на някого да пише във форум по интернет или пък да е длъжен да е любезен с теб при подобни реплики, пък било то и да си прав?

"Правилно" може да го разбираш както искаш. Точно това как той използва LIKE НЕ е препоръчително. Аз правилно разбирам така: щом работи и дори го има в документацията значи е правилно. Кажи ми как ще направиш LIKE '_5%' без кавички.

Не съм ти забранявал да пишеш или пък да си любезен с мен. Къде съм го написал? "при подобни реплики" И какво съм казал? Ако съм те засегнал с нещо се извинявам. Просто изказвам мнение и ако на някой не му харесва това мнение може да не го чете.
 
//off
StormBreaker каза:
koko5 каза:
- Значи, идеята не е точно в LIKE, а в това, че не е правилно, особено приложено за числа, които са в кавички...
- Ora e само пример-избора си е твой дали ще пишеш преносими заявки или не.
- Нали не си въобразяваш, че може да забраниш на някого да пише във форум по интернет или пък да е длъжен да е любезен с теб при подобни реплики, пък било то и да си прав?

"Правилно" може да го разбираш както искаш. Точно това как той използва LIKE НЕ е препоръчително. Аз правилно разбирам така: щом работи и дори го има в документацията значи е правилно. Кажи ми как ще направиш LIKE '_5%' без кавички.

Не съм ти забранявал да пишеш или пък да си любезен с мен. Къде съм го написал? "при подобни реплики" И какво съм казал? Ако съм те засегнал с нещо се извинявам. Просто изказвам мнение и ако на някой не му харесва това мнение може да не го чете.
Напротив, не само не съм се засегнал, а ми е забавно: това е целта на задачата в крайна сметка. Слава Богу не съм с толкова лабилна психика :)
//off
съвсем отделен е въпроса, че цели пасажи от код биха могли да се заменят с 1заявка, но без структура на таблиците и кое какво е не става.
A COUNT(*) vs mysql_num_rows?
 

Back
Горе