Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2008, 21:52   #1
Stema
Пользователь
 
Регистрация: 06.10.2007
Сообщений: 47
По умолчанию mysql_num_rows - не возвращает строки

Имеется скриптик, но маленько не пашит....

Я уже хз из-за чего... все правильно а всеравно не работает

Код:
<?
$r = mysql_query("SELECT skillid FROM npcskills WHERE npcid='$id'", $Server);
while($re = mysql_fetch_array($r)) {
	$skillid = $re['skillid'];
	$res = mysql_query("SELECT name,level,descr,icon FROM skilldb WHERE skillid='$skillid'", $Me);
	while($row = mysql_fetch_array($res)) {
		$name = $row['name'];
		$level = $row['level'];
		$descr = $row['descr'];
		$icon = "images/".$row['icon']."_0.bmp";
		if (!file_exists($icon)) {$icon = "images/none.bmp";}
		if ($descr == 'none') {$descr = '';}
		if (Trim($name) == '') {$name = $descr; $descr = '';}
	}
	echo "<tr>
			<td class=xa width=20 valign=top><img border=0 src=$icon alt=\"$name\" width=32 height=32></td>
			<td>&nbsp;<b>$name</b><br>&nbsp;<font color=#777777>$descr</font></td>
		</tr>";
}
echo "

		</table>

	</td>
  </tr>
</table><br><br>";
if ($autores == '1') {echo "<center><font color=#767676>Шанс дропа уже умножен на х".$ratedrop."!!! И шанс спойла на х".$ratesweep."!!!</font><br><br>";}
	echo "<table width=100% border=0><tr><td valign=top align=center width=50%>
	<table border=0 colspan=0 rowspan=0 width=100%>
	<tr>
		<td class=xa><b>Нормальный дроп:</b></td>
		<td class=xa><b>Кол-во:<br></b></td>
		<td class=xa><b>Вероятность:</b></td>
	</tr>";
if ($use == 'category') {
	$tsql = "category!='-1'";
} elseif ($use == 'sweep') {
	$tsql = "sweep='0'";
} else {
	$tsql = "sweep='0'";
}
$res = mysql_query("SELECT mobId FROM droplist WHERE mobId='$id' AND ".$tsql." LIMIT 0,5", $Server);
if (mysql_num_rows($res) != 0) {
	$res = mysql_query("SELECT itemId,min,max,chance FROM droplist WHERE mobId='$id' AND ".$tsql." ORDER BY -chance", $Server);
	while($result = mysql_fetch_array($res)) {
		$itemId = $result['itemId'];
		$min = $result['min'];
		$max = $result['max'];
		$chance = $ratedrop*$result['chance']/10000;
		if ($chance >= 100) {$chance = '100';}
		$r = mysql_query("SELECT name FROM etcitem WHERE item_id='$itemId' LIMIT 0,5", $Me);
		if (mysql_num_rows($r) == 0) {$r = mysql_query("SELECT name FROM armor WHERE item_id='$itemId'", $Me);}
		if (mysql_num_rows($r) == 0) {$r = mysql_query("SELECT name FROM weapon WHERE item_id='$itemId'", $Me);}
		while($row = mysql_fetch_array($r)) {$name = $row['name'];}
		echo "
		<tr>
		<td class=xa>&nbsp;<a href=index.php?jump=item&id=$itemId>$name</a></td>
		<td class=xa>[$min-$max]</td>
		<td class=xa>$chance %</td>
		</tr>";
	}

} else {
	echo "<tr><td class=xa colspan=3 align=center><b>Дропа нету</b></td></tr>";
}

echo "</table>
</td><td valign=top align=center width=50%>
<table width=100%>
<tr>
	<td class=xa><b>Спойл</b></td>
	<td class=xa><b>Кол-во:<br></b></td>
	<td class=xa><b>Вероятность:</b></td>
</tr>";

if ($use == 'category') {
	$tsql = "category='-1'";
} elseif ($use == 'sweep') {
	$tsql = "sweep='1'";
} else {
	$tsql = "sweep='1'";
}
$res = mysql_query("SELECT * FROM droplist WHERE mobId='$id' AND ".$tsql." LIMIT 0,2", $Server);
if (mysql_num_rows($res) != 0) {
	$res = mysql_query("SELECT mobId,itemId,min,max,chance FROM droplist WHERE mobId='$id' AND ".$tsql." ORDER BY -chance", $Server);
	while($result = mysql_fetch_array($res)) {
	$mobId = $result['mobId'];
	$itemId = $result['itemId'];
	$min = $result['min'];
	$max = $result['max'];
	$chance = $ratesweep*$result['chance']/10000;
	if ($chance >= 100) {$chance = '100';}
	$r = mysql_query("SELECT name FROM etcitem WHERE item_id='$itemId' LIMIT 0,5", $Me);
	if (mysql_num_rows($r) == 0) {$r = mysql_query("SELECT name FROM armor WHERE item_id='$itemId'", $Me);}
	if (mysql_num_rows($r) == 0) {$r = mysql_query("SELECT name FROM weapon WHERE item_id='$itemId'", $Me);}
	while($row = mysql_fetch_array($r)) {$name = $row['name'];}
	echo "
	<tr>
	<td class=xa>&nbsp;<a href=?jump=item&id=$itemId>$name</a></td>
	<td class=xa>[$min-$max]</td>
	<td class=xa>$chance %</td>
	</tr>";
	}

} else {
	echo "<tr><td class=xa colspan=3 align=center><b>Спойла нету</b></td></tr>";
}
echo '</table></td></tr></table></center>';
} else {
	Hack();
}
?>
Stema вне форума Ответить с цитированием
Старый 30.01.2008, 21:53   #2
Stema
Пользователь
 
Регистрация: 06.10.2007
Сообщений: 47
По умолчанию

скрипт скинул почти весь, чтобы было у вас представление как он работает

А не работает у нас строки 116 и 157

116
Код:
if (mysql_num_rows($res) != 0) {
	$res = mysql_query("SELECT itemId,min,max,chance FROM droplist WHERE mobId='$id' AND ".$tsql." ORDER BY -chance", $Server);
строка 157
Код:
if (mysql_num_rows($res) != 0) {
	$res = mysql_query("SELECT mobId,itemId,min,max,chance FROM droplist WHERE mobId='$id' AND ".$tsql." ORDER BY -chance", $Server);
Невозвращает количество строк в результатирующем запросе.. почему так?(
Вот структура таблицы

Код:
CREATE TABLE `droplist` (
  `mobId` int(11) default NULL,
  `itemId` int(11) default NULL,
  `min` int(11) default NULL,
  `max` int(11) default NULL,
  `category` int(11) default NULL,
  `chance` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Записи таким макаром стоят

Код:
INSERT INTO `droplist` VALUES ('18001', '1806', '1', '1', '-1', '10868'); и т.д.
Вот ошибка которую выдает
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\test\inc\monsters.ph p on line 116 и 157 соответственно

Последний раз редактировалось Stema; 30.01.2008 в 21:55.
Stema вне форума Ответить с цитированием
Старый 30.01.2008, 22:18   #3
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Stema Посмотреть сообщение
Вот ошибка которую выдает
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\test\inc\monsters.ph p on line 116 и 157 соответственно
Раз так пишет, значит запрос ей не нравится.

Вот такую
PHP код:
$q "SELECT mobId FROM droplist WHERE mobId='$id' AND ".$tsql." LIMIT 0,5";
echo 
"<br>------------------<br>".$q."<br>------------------<br>";
$res mysql_query($q$Server);
echo 
"<br>------------------<br>".mysql_error()."<br>------------------<br>"
отладочную штучку в строки 42 и 83 (по первому посту) поставьте (с учетом того, что там запросы разные), что напишет?
B_N вне форума Ответить с цитированием
Старый 30.01.2008, 23:00   #4
Stema
Пользователь
 
Регистрация: 06.10.2007
Сообщений: 47
По умолчанию

Цитата:
------------------
SELECT mobId FROM droplist WHERE mobId='20230' AND sweep='0' LIMIT 0,5
------------------

------------------

------------------
и там и там пишет
Stema вне форума Ответить с цитированием
Старый 30.01.2008, 23:43   #5
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

хм.. интересно... Ну а
Код:
SELECT count(mobId) FROM droplist WHERE mobId='20230' AND sweep='0' LIMIT 0,5
что возвращает?
B_N вне форума Ответить с цитированием
Старый 30.01.2008, 23:48   #6
Stema
Пользователь
 
Регистрация: 06.10.2007
Сообщений: 47
По умолчанию

колонки sweep нет

из-за этого и выводит Unknown column 'sweep' in 'where clause'
Stema вне форума Ответить с цитированием
Старый 30.01.2008, 23:53   #7
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Ха! Ну конечно, я тоже смотрел-смотрел, и на код, и на таблицу, а просмотрел Старый способ - самый надежный
B_N вне форума Ответить с цитированием
Старый 31.01.2008, 00:03   #8
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Вот почему суждено при конструировании запросов сначала тестировать их выполнением в мускульном менеджере.
Напрмиер MySQLYog под Win32 или MySQL GUI Tools под Линь...
Да и phpMyAdmin - рулит однозначно.
SkyM@n вне форума Ответить с цитированием
Старый 31.01.2008, 00:08   #9
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от SkyM@n Посмотреть сообщение
Вот почему суждено при конструировании запросов сначала тестировать их выполнением в мускульном менеджере.
Напрмиер MySQLYog под Win32 или MySQL GUI Tools под Линь...
Да и phpMyAdmin - рулит однозначно.
Вот-вот! Особенно MySQL GUI Tools (оне ведь и под Винь! ) А phpMyAdmin штука хорошая, но уж больно он тормозной
B_N вне форума Ответить с цитированием
Старый 31.01.2008, 00:13   #10
Stema
Пользователь
 
Регистрация: 06.10.2007
Сообщений: 47
По умолчанию

Э-э-э-э... Так а мне что делать?
Stema вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
idHTTP при нерабочем сайте возвращает ошибку Yuran Работа с сетью в Delphi 5 26.05.2008 14:37
idHTTP не возвращает код страницы Paradoxer Работа с сетью в Delphi 0 15.03.2008 20:27
Indhttp1.post возвращает 405 Error Denager Работа с сетью в Delphi 3 23.02.2008 20:55
FindWindow не нашел окна, а ShellExecute возвращает ERROR_PATH_NOT_FOUND malor Win Api 2 19.07.2007 15:15