[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: mysql_fetch_row(): supplied argument is not a vali
olgan
Здравствуйте , подскажите пожалуйста найти ошибки в скрипте:
<?php
$searchtype=$HTTP_POST_VARS['searchtype'];
$searchterm=$HTTP_POST_VARS['searchterm'];
$searchterm=trim($searchterm);
/*if (!$searchtype || !$searchterm)
{
echo 'Вы не ввели параметры поиска. Пожалуйста,
вернитесь к поиску и повторите попытку.';

}*/

$searchtype = addslashes($searchtype);
$searchterm = addslashes($searchterm);

@ $db=mysql_pconnect('localhost', 'root','');
if (!$db)
{
echo 'Ошибка: Не удалось установить соединение с базой данных. Пожалуйста,
повторите попытку позже'
;

}
mysql_select_db('shop');

$from_where="select * from shopp where ".$searchtype." like '%".$searchterm."%'";
// и получим общее количество записей

$res=mysql_query("select count(shopID)".$from_where);
$row=mysql_fetch_row($res);
$total_rows=$row[0];

$per_page=5;
if (isset($_GET['page'])) $CUR_PAGE=($_GET['page']); else $CUR_PAGE=1;
$start=abs(($CUR_PAGE-1)*$per_page);



//выполняем запрос и получаем данные для вывода
$query="SELECT * $from_where ORDER BY date DESC LIMIT $start,$per_page";
$res=mysql_query($query);
while ($row=mysql_fetch_array($res)) $DATA[++$start]=$row;


//определяем адрес страницы без переменной page
$uri=strtok($_SERVER['REQUEST_URI'],"?")."?";
if (count($_GET)) {
foreach ($_GET as $k => $v) {
if ($k != "page") $uri.=urlencode($k)."=".urlencode($v)."&";
}
}


//узнаем общее количество страниц и заполняем массив со ссылками
$num_pages=ceil($total_rows/$per_page);
for($i=1;$i<=$num_pages;$i++) $PAGES[$i]=$uri.'page='.$i;

//а дальше выводим в шаблоне данные и навигацию:
?>
Найдено сообщений: <b><?=$total_rows?></b><br><br>
<? foreach ($DATA as $i => $row): ?>


<?=
$i?>. <a href="?shopID=<?=$row['shopID']?>"><?=$row['shop']?></a><br>
<? endforeach ?>

<br>
Страницы:
<? foreach ($PAGES as $i => $link): ?>
<?
if ($i == $CUR_PAGE): ?>
<b><?=$i?></b>
<? else: ?>
<a href="<?=$link?>"><?=$i?></a>
<? endif ?>
<?
endforeach


?>

Моя БД: shop
таблица : shopp (shopID, shop, category,street,phone)



Выдаёт ошибки:
mysql_fetch_row(): supplied argument is not a valid MySQL result resource
Undefined variable: per_page

Заранее спасибо



Спустя 1 минута, 31 секунда (1.10.2010 - 09:51) ApuktaChehov написал(а):
mysql_fetch_row(): - работает с результатом который возвращается запросом к БД.
Смотрите что происходит с вашими запросам и все сразу станет ясно.

Спустя 6 минут, 50 секунд (1.10.2010 - 09:57) Michael написал(а):
Сейчас я отредактировал ваше сообщение, а в будущем сами старайтесь заключать код в соответствующие теги.

По вопросу: запросы ошибочные.
например тут
$query="SELECT * $from_where ORDER BY date DESC LIMIT $start,$per_page";

с учетом
$from_where="select * from shopp where ".$searchtype." like '%".$searchterm."%'";

будет получаться что то типа:
SELECT * SELECT *

что неверно.

Цитата
$HTTP_POST_VARS

у вас что старый php?

Спустя 5 минут, 23 секунды (1.10.2010 - 10:03) olgan написал(а):
у меня php 4.3.0)

Спустя 1 минута, 32 секунды (1.10.2010 - 10:04) Michael написал(а):
$_POST должен уже быть.

Спустя 3 минуты, 31 секунда (1.10.2010 - 10:08) olgan написал(а):
мне надо сделать новый запрос типа
$from_where="select * from shopp where ".$searchtype." like '%".$searchterm."%' ORDER BY date DESC LIMIT $start,$per_page";


или через union объединить их?
или я что-то не так поняла?

Спустя 4 минуты, 10 секунд (1.10.2010 - 10:12) Michael написал(а):
Сама логика тут страдает.
$from_where="select * from shopp where ".$searchtype." like '%".$searchterm."%'";

в $from_where должны по идее "собираться" FROM и WHERE части запроса. А не как у вас - вместе с SELECT.
А потом уже вот так:
$query="SELECT * $from_where ORDER BY date DESC LIMIT $start,$per_page";

пристыковываться.

Спустя 7 минут, 10 секунд (1.10.2010 - 10:19) olgan написал(а):
$from_where="from shopp where ".$searchtype." like '%".$searchterm."%'";
а потом
$query="SELECT * $from_where ORDER BY date DESC LIMIT $start,$per_page";

Наверное так)


Спустя 1 минута, 49 секунд (1.10.2010 - 10:21) olgan написал(а):
число правильно выводит, а страницы не выводит почему то
Спасибо Вам огромное за запросы.

Спустя 10 минут, 24 секунды (1.10.2010 - 10:31) Michael написал(а):
а ошибок новых нет?

В коде много тонкостей, гадать не вижу смысла. Возьмите запрос на саму страницу, скопируйте и выполните в phpmyadmin. И посмотрите почему пусто.

Спустя 29 минут, 4 секунды (1.10.2010 - 11:00) olgan написал(а):
Ошибка есть
mysql_fetch_row(): supplied argument is not a valid MySQL result resource

Спустя 8 минут, 9 секунд (1.10.2010 - 11:09) Michael написал(а):
ну так текст этого запроса в студию.
Сделай так:
echo $query;
$res=mysql_query($query) or die('Error:' . mysql_error());


так со всеми запросами

Спустя 2 часа, 8 минут, 1 секунда (1.10.2010 - 13:17) Ice написал(а):
Цитата (olgan @ 1.10.2010 - 10:49)
$from_where="select * from shopp where ".$searchtype." like '%".$searchterm."%'";
// и получим общее количество записей

$res=mysql_query("select count(shopID)".$from_where);
$row=mysql_fetch_row($res);


Рассмотрим вот этот кусочек.
По моему предположению должно быть так:
$res=mysql_query("select count(shopID) from (".$from_where.") as alias_one");

Спустя 17 минут, 35 секунд (1.10.2010 - 13:34) inpost написал(а):
Ice
А зачем from в скобках?

Спустя 2 минуты (1.10.2010 - 13:36) Ice написал(а):
Цитата (inpost @ 1.10.2010 - 14:34)
А зачем from в скобках?

Да мало ли там чего. Просто как обобщение, что это вложенный запрос. Можно, наверное, и убрать
А, не, убирать нельзя, - ошибка

Спустя 3 минуты, 36 секунд (1.10.2010 - 13:40) inpost написал(а):
Ice
Ааа, точно, понятно.
Что-то последние деньги я какой-то рассеяный...

Спустя 3 дня, 22 часа, 35 минут, 5 секунд (5.10.2010 - 12:15) olgan написал(а):
Когда я вставила новый запрос, выдала ошибку
Error:You have an error in your SQL syntax near 'from shopp where shop like '%%' ) as alias_one' at line 1

А с тем старым работает.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.