Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: mysql_num_rows(): supplied argument IS NOT a valid MySQL result resource
 
 автор: RuslanMRP   (14.12.2010 в 13:34)   письмо автору
 
 

Ребята - что не так почему не выводит из БД по отбору?

$conditions = array();
if (isset($_POST['proizvoditel']))
    $conditions[] = "proizvoditel='".$proizvoditel."'";
if (isset($_POST['tip']))
    $conditions[] = "tip='".$tip."'";
if (isset($_POST['viazkost']))
    $conditions[] = "viazkost='".$viazkost."'";
$r="select * from MASLO" . (count($conditions) ? " WHERE " . implode(" AND ", $conditions) : "");
 
echo "$r";
echo "<table border=0 width=100% bgcolor=#dadada>";
echo "<form method=POST action=index1.php>";
echo "<td valign='right width='12%' height='15px' align='center' bgcolor=#FFFFFF>Артикул</td>
                <td valign='right width='28%' height='' align='center' bgcolor=#FFFFFF>Наименование изделий</td>
                <td valign='right width='45%' height='' align='center' bgcolor=#FFFFFF>Описание</td>
                <td valign='right width='10%' height='' align='center' bgcolor=#FFFFFF>Цена</td>
                <td valign='right width='5%' height='' align='center' bgcolor=#FFFFFF>картинка</td>
                <td  align='center'>Корзина</td></tr>";
for ($i=0; $i<mysql_num_rows($r); $i++)
{
echo "<tr>";
$f=mysql_fetch_array($r);
echo "<td align=left width=12% height=10% bgcolor=#FFFFFF>$f[proizvoditel]</td><td width=28%  align=left bgcolor=#FFFFFF height=10px>$f[viazkost]</td><td width=45% align=left bgcolor=#FFFFFF height=10px>$f[tip]</td><td width=10% align=left bgcolor=#FFFFFF height=10px>$f[opisanie]</td><td width=10% align=left bgcolor=#FFFFFF height=10px>$f[cena]</td><td width=5% align=left bgcolor=#FFFFFF height=5px><a id='example1' href='kartinki/' . $f[image] .''><img src='kartinki/' . $f[image] .'' width=75px height=75px></a></td><td align=center ><input type=checkbox name=Arr[] value=".$f[id]."></td></tr>";
}
echo "<tr><td align=center colspan=6><input type=submit name=buy value=заказать></></td></tr>";
echo "</table>";
echo "</form>";


Ошибка:

mysql_num_rows(): supplied argument IS NOT a valid MySQL result resource

  Ответить  
 
 автор: neadekvat   (14.12.2010 в 14:10)   письмо автору
 
   для: RuslanMRP   (14.12.2010 в 13:34)
 

На кой вы приводите тут все это?
Покажите какой у вас в итоге получается запорос к бд.
А еще лучше запрос на стадии разработки делайте так:
mysql_query(...) or die(mysql_error());
а еще лучше через обертку, но это не суть пока что.

  Ответить  
 
 автор: RuslanMRP   (14.12.2010 в 14:20)   письмо автору
 
   для: neadekvat   (14.12.2010 в 14:10)
 

Дописал - так правильнее.

$r = mysql_query($query);

Что я не так написал?

Если проверяю что передала в переменную: echo "$r"; - Resource id #8
Если проверяю что передала в переменную: echo "$query"; - select * from MASLO WHERE proizvoditel='TITAN' AND tip='' AND viazkost=''

  Ответить  
 
 автор: Trianon   (14.12.2010 в 14:29)   письмо автору
 
   для: RuslanMRP   (14.12.2010 в 14:20)
 

Так ведь заявленная диагностика ушла? Значит ошибка исправлена?

  Ответить  
 
 автор: RuslanMRP   (14.12.2010 в 14:30)   письмо автору
 
   для: Trianon   (14.12.2010 в 14:29)
 

А почему не выводит?

  Ответить  
 
 автор: Trianon   (14.12.2010 в 14:32)   письмо автору
 
   для: RuslanMRP   (14.12.2010 в 14:30)
 

наверное по другой причине?
Может просто подходящих строк в таблице нет?

  Ответить  
 
 автор: RuslanMRP   (14.12.2010 в 14:35)   письмо автору
 
   для: Trianon   (14.12.2010 в 14:32)
 

БД: здесь все нормально!

id proizvoditel viazkost tip opisanie image cena

  Ответить  
 
 автор: Trianon   (14.12.2010 в 14:36)   письмо автору
 
   для: RuslanMRP   (14.12.2010 в 14:35)
 

Что это было?

  Ответить  
 
 автор: RuslanMRP   (14.12.2010 в 14:38)   письмо автору
 
   для: Trianon   (14.12.2010 в 14:36)
 

Это в БД - таблица. В ней все перечисленные переменные есть, и при выводе - тоже

  Ответить  
 
 автор: Trianon   (14.12.2010 в 14:45)   письмо автору
 
   для: RuslanMRP   (14.12.2010 в 14:38)
 

>Это в БД - таблица. В ней все перечисленные переменные есть,
В таблице нет и не может быть никаких переменных.
Там строки должны быть. И не абы какие, а подходящие под условие запроса.


>>БД: здесь все нормально!
Это всё слова.
Где дамп (структуры и фрагмент дампа данных)?


>и при выводе - тоже
Так значит все есть?

>>автор: RuslanMRP (14.12.2010 в 14:30) для: Trianon (14.12.2010 в 14:29)
>>А почему не выводит?

Или все же ничего нет?

  Ответить  
 
 автор: ride   (14.12.2010 в 15:45)   письмо автору
 
   для: RuslanMRP   (14.12.2010 в 14:30)
 

вам точно нужен isset()? или все же !empty()?

  Ответить  
 
 автор: RuslanMRP   (14.12.2010 в 16:49)   письмо автору
 
   для: ride   (14.12.2010 в 15:45)
 

Вот это требуеться:

if (!isset($_POST['gomaslo']))
{
echo "<h2 class='h_red'>Вы не ввели критерии поиска. Вернитесь назад и попробуйте еще раз</h2>";

}


$proizvoditel = $_POST['proizvoditel'];
$tip = $_POST['tip'];
$viazkost = $_POST['viazkost'];

$login = $_SESSION['login'];
include "setup/options.php";
if(!mysql_connect($host,$USER,$PASSWD))
{
echo "<h1>Ошибка сервера MySql.</h1>";
exit;
}
echo $_SESSION['fio'];
mysql_select_db($DB);

$conditions = array();
if (isset($_POST['proizvoditel']))
    $conditions[] = "proizvoditel='".$proizvoditel."'";
if (isset($_POST['tip']))
    $conditions[] = "tip='".$tip."'";
if (isset($_POST['viazkost']))
    $conditions[] = "viazkost='".$viazkost."'";
$query = "select * from MASLO" . (count($conditions) ? " WHERE " . implode(" AND ", $conditions) : "");
$r = mysql_query($query);

echo "<table border=0 width=100% bgcolor=#dadada>";
echo "<form method=POST action=index1.php>";
echo "<td valign='right width='12%' height='15px' align='center' bgcolor=#FFFFFF>Артикул</td>
        <td valign='right width='28%' height='' align='center' bgcolor=#FFFFFF>Наименование изделий</td>
        <td valign='right width='45%' height='' align='center' bgcolor=#FFFFFF>Описание</td>
        <td valign='right width='10%' height='' align='center' bgcolor=#FFFFFF>Цена</td>
        <td valign='right width='5%' height='' align='center' bgcolor=#FFFFFF>картинка</td>
        <td  align='center'>Корзина</td></tr>";
for ($i=0; $i<mysql_num_rows($r); $i++)
{
echo "<tr>";
$f=mysql_fetch_array($r);
echo "<td align=left width=12% height=10% bgcolor=#FFFFFF>$f[proizvoditel]</td><td width=28%  align=left bgcolor=#FFFFFF height=10px>$f[viazkost]</td><td width=45% align=left bgcolor=#FFFFFF height=10px>$f[tip]</td><td width=10% align=left bgcolor=#FFFFFF height=10px>$f[opisanie]</td><td width=10% align=left bgcolor=#FFFFFF height=10px>$f[cena]</td><td width=5% align=left bgcolor=#FFFFFF height=5px><a id='example1' href='kartinki/' . $f[image] .''><img src='kartinki/' . $f[image] .'' width=75px height=75px></a></td><td align=center ><input type=checkbox name=Arr[] value=".$f[id]."></td></tr>";
}
echo "<tr><td align=center colspan=6><input type=submit name=buy value=заказать></></td></tr>";
echo "</table>";
echo "</form>";

?>

  Ответить  
 
 автор: RuslanMRP   (14.12.2010 в 17:00)   письмо автору
 
   для: RuslanMRP   (14.12.2010 в 16:49)
 

Все я исправил, но почему то выводит ТОЛЬКО при всех заполненых полях, а почему не ищет по 1 или 2 введеным полям?

  Ответить  
 
 автор: ride   (14.12.2010 в 17:18)   письмо автору
 
   для: RuslanMRP   (14.12.2010 в 17:00)
 

ответьте на мой вопрос и поймете

upd
if (!isset($_POST['gomaslo']))
{
echo "<h2 class='h_red'>Вы не ввели критерии поиска. Вернитесь назад и попробуйте еще раз</h2>";

}

это уже другой вопрос.

  Ответить  
 
 автор: RuslanMRP   (14.12.2010 в 17:23)   письмо автору
 
   для: ride   (14.12.2010 в 17:18)
 

Какая разница эти две функции - делают одно и тоже

  Ответить  
 
 автор: Trianon   (14.12.2010 в 17:29)   письмо автору
 
   для: RuslanMRP   (14.12.2010 в 17:23)
 

у них есть небольшое отличие... ride предлагает Вам на этом отличии сыграть вполне осознанно.
Другое дело, что понимания происходящего в чистом виде Вам эта игра не добавит.
А дамп приводить Вы отказались.

  Ответить  
 
 автор: RuslanMRP   (14.12.2010 в 17:31)   письмо автору
 
   для: Trianon   (14.12.2010 в 17:29)
 

Вы про это говорите?

if(!isset($_POST['gomaslo']))
{
echo "Ошибка";
}
else{
........
......
}

  Ответить  
 
 автор: Trianon   (14.12.2010 в 17:22)   письмо автору
 
   для: RuslanMRP   (14.12.2010 в 17:00)
 

Вы же сами процитировали генерируемый запрос:
select * from MASLO WHERE proizvoditel='TITAN' AND tip='' AND viazkost=''

  Ответить  
 
 автор: RuslanMRP   (14.12.2010 в 17:26)   письмо автору
 
   для: Trianon   (14.12.2010 в 17:22)
 

Я думал если в других переменных пусто - значит будет выводить - только то что взяло, в этом случаи - выводит все TITAN

  Ответить  
 
 автор: Trianon   (14.12.2010 в 17:31)   письмо автору
 
   для: RuslanMRP   (14.12.2010 в 17:26)
 

Я уже сказал - ни в запросе, ни в таблице переменных нет. Есть строки со значениями.
И значение пустой строки - такое же полновесное, как и любое другое слово.

  Ответить  
 
 автор: RuslanMRP   (14.12.2010 в 17:34)   письмо автору
 
   для: Trianon   (14.12.2010 в 17:31)
 

Все я нашел решение. ВСЕМ ОГРОМНОЕ СПАСИБО! за точто уделили мне время

  Ответить  
 
 автор: Trianon   (14.12.2010 в 17:36)   письмо автору
 
   для: RuslanMRP   (14.12.2010 в 17:34)
 

решение-то выложите.

Странный народ пошел... ей-богу...

  Ответить  
 
 автор: RuslanMRP   (14.12.2010 в 17:39)   письмо автору
 
   для: Trianon   (14.12.2010 в 17:36)
 

Заменить на это:


if (!empty($_POST['proizvoditel']))
$conditions[] = "proizvoditel='". mysql_real_escape_string($_POST['proizvoditel'])."'";
if (!empty($_POST['tip']))
$conditions[] = "tip='".mysql_real_escape_string($_POST['tip'])."'";
if (!empty($_POST['viazkost']))
$conditions[] = "viazkost='".mysql_real_escape_string($_POST['viazkost'])."'";

  Ответить  
 
 автор: Trianon   (14.12.2010 в 17:43)   письмо автору
 
   для: RuslanMRP   (14.12.2010 в 17:39)
 

ну так это решение Вам ride нашел :)))

  Ответить  
 
 автор: RuslanMRP   (14.12.2010 в 17:46)   письмо автору
 
   для: Trianon   (14.12.2010 в 17:43)
 

И не только! ВСЕМ СПАСИБО!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования