|
|
|
| 1)имеется форма вывода инфы:
<form action="result.comp.php" method="post">
<table border="0">
<tr>
</tr>
<tr>
<td>Введите название </td>
<td><input type="text" name="name" maxlength="30" size="30"><br /></td>
</tr>
<tr>
<td>Цена</td>
<td> <input type="text" name="para" maxlength="30" size="30"><br /></td>
</tr>
<tr>
<td>Информация</td>
<td> <input type="text" name="firma" maxlength="30" size="120"><br></td>
</tr>
<tr><td><p>Выберите:<br/></td>
<td><select method="post" name="searchtype">
<option value='com'>Компьютеры</option>
<option value='pro'>Процессоры</option>
<option value='mon'>Мониторы</option>
</select>
</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Найти!"></td>
</tr>
</table>
</form>
2) имеется result.comp.php
<? mysql_select_db('comp');
$sql="SELECT name,para,firma FROM '".$_POST['searchtype']."' WHERE para<= '".$_POST['para']."' and name='".$_POST['name']."' and firma='".$_POST['firma']."'";
echo $sql;
$query=mysql_query($sql);
$result = mysql_query($query);
$num_results = mysql_num_rows($result);
echo '<p>Результат: '.$num_results.'</p>';
for ($i=0; $i <$num_results; $i++)
{
$row = mysql_fetch_array($result);
echo '<p><strong>'.($i+1).'.Название: ';
echo htmlspecialchars(stripslashes($row['name']));
echo '<br />Цена ';
echo stripslashes($row['para']);
echo '<br />²Информация: ';
echo stripslashes($row['firma']);
echo '</p>';
}
?>
|
Помогите! почему не работает?
SELECT name,para,firma FROM 'pro' WHERE para<= '' and name='' and firma=''
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in z:\home\localhost\www
Заранее благодарю! | |
|
|
|
|
|
|
|
для: Vadim777
(23.08.2005 в 13:03)
| | Вот так вот
точно нельзя, для сравнения строк используется встроенная функции STRCMP(). При помощи знака меньше-равно можно сравнивать числовые последовательности - если из формы идёт пустая строка, необходимо обработать эту ситуацию и заменить её нулём. Или проблема в том, что ничего не передаётся из HTML-формы? | |
|
|
|
|
|
|
|
для: cheops
(23.08.2005 в 13:54)
| | Привет! Это верно, что главным в выворе является рубрика$searchtype, а поля ввода являються необязательными: name, para, firma. | |
|
|
|
|
|
|
|
для: cheops
(23.08.2005 в 13:54)
| | А как выглядит инструмент замены пустой строки нулем? | |
|
|
|
|
|
|
|
для: Vadim777
(23.08.2005 в 14:59)
| | Можно поступить следующим образом
<?php
if(empty($_POST['para'])) $_POST['para'] = 0;
?>
|
или привести к числу переменную за счёт операции сложения с нулём
<?php
$_POST['para'] = $_POST['para'] + 0;
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(23.08.2005 в 13:54)
| | Результат поиска:
SELECT name,para,firma FROM 'mon' WHERE para<= '60' and name='Deawoo' and firma='444-33-22'
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in z:\home\localhost\www\site\result.comp.php on line 54
Результат:
echo $sql; выдает вот такое на ввод информации. | |
|
|
|
|
|
|
|
для: Vadim777
(23.08.2005 в 15:06)
| | Попробуйте поставить после строки
<?php
$result = mysql_query($query);
?>
|
следующий код
<?php
if(!$result) exit(mysql_error());
?>
|
Что ещё выводится в окно браузера после этого? | |
|
|
|
|
|
|
|
для: cheops
(23.08.2005 в 15:39)
| | SELECT name,para,firma FROM 'mon' WHERE para<= '50' and name='Deawoo' and firma='444-33-22'Query was empty. | |
|
|
|
|
|
|
|
для: Vadim777
(23.08.2005 в 16:01)
| | Да действительно пустой... а почему у вас функция mysql_query() два раза подряд вызывается
<?php
$query=mysql_query($sql);
$result = mysql_query($query);
?>
|
Эту конструкцию следует заменить на
<?php
$result = mysql_query($sql);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(23.08.2005 в 15:39)
| | куда вставить:
$_POST['para'] = $_POST['para'] + 0;
извиняюсь за темноту. | |
|
|
|
|
|
|
|
для: Vadim777
(23.08.2005 в 16:03)
| | В любом месте до формирования SQL-запроса в переменной $sql. | |
|
|
|
|
|
|
|
для: cheops
(23.08.2005 в 17:22)
| | Результат:
SELECT name,para,firma FROM 'mon' WHERE para<= '50' and name='Deawoo' and firma='444-33-22'Query was empty | |
|
|
|
|
|
|
|
для: Vadim777
(23.08.2005 в 18:16)
| | А вот это устранили?
<?php
$query=mysql_query($sql);
$result = mysql_query($query);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(24.08.2005 в 01:22)
| | Я извиняюсь не заметил
<?php
$query=mysql_query($sql);
$result = mysql_query($query);
?>
|
Я исправил и выдает:
SELECT FROM 'com' WHERE para<= '60' and name='Deawoo'You have an error in your SQL syntax near 'FROM 'com' WHERE para<= '60' and name='Deawoo'' at line 1 | |
|
|
|
|
|
|
|
для: Vadim777
(25.08.2005 в 11:14)
| | А в строке name,para,firma точно ошибок нет? Кавычки в выражении 'com' обратные - у нас форум меняет обратные кавычки на прямые, поэтому проверить нельзя. | |
|
|
|
|
|
|
|
для: cheops
(25.08.2005 в 12:15)
| |
<?
$sql="SELECT FROM '".$_POST['searchtype']."' ";
if(!empty($_POST['para']))
$sql.=" WHERE para<= '".$_POST['para']."'";
if(!empty($_POST['name']))
$sql.=" and name='".$_POST['name']."'";
if(!empty($_POST['firma']))
$sql.=" and firma='".$_POST['firma']."'";
echo $sql;
?>
|
кавычки правильные. | |
|
|
|
|
|
|
|
для: Vadim777
(25.08.2005 в 12:33)
| |
Это опечатка или у вас пропущен символ * или имена столбцов? | |
|
|
|
|
|
|
|
для: cheops
(25.08.2005 в 12:47)
| | SELECT * FROM 'mon' You have an error in your SQL syntax near ''mon' ' at line 1
Пропустил!!!!! | |
|
|
|
|
|
|
|
для: Vadim777
(25.08.2005 в 14:18)
| | Уберите вообще кавычки у
бывает, что он на них MySQL плохо реагирует - что пишет MySQL после того как убраны кавычки? | |
|
|
|
|
|
|
|
для: cheops
(25.08.2005 в 22:19)
| | И с кавычками работает, и - без оных!! Спасибо! | |
|
|
|
|
|
|
|
для: cheops
(23.08.2005 в 17:22)
| | И главное нет больше указания на ошибку. Даже появляется шапка Резултати поиска, а вывода нет!? | |
|
|
|
|
|
|
|
для: Vadim777
(23.08.2005 в 18:20)
| | Ура Ура Ура!!!!! Заработала!!!!
Спасибо!! cheops
У меня была ошибка лишнии кавычки $sql="SELECT * FROM ".$_POST['searchtype']." ";
Там были одинарные кавычки перед и после ".$_POST['searchtype']." | |
|
|
|