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

Форум MySQL

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

 

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

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

тема: форма и условный оператор select
 
 автор: Vadim777   (23.08.2005 в 13:03)   письмо автору
 
 

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 />&#178;Информация: ';
     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
Заранее благодарю!

   
 
 автор: cheops   (23.08.2005 в 13:54)   письмо автору
 
   для: Vadim777   (23.08.2005 в 13:03)
 

Вот так вот
para<= ''

точно нельзя, для сравнения строк используется встроенная функции STRCMP(). При помощи знака меньше-равно можно сравнивать числовые последовательности - если из формы идёт пустая строка, необходимо обработать эту ситуацию и заменить её нулём. Или проблема в том, что ничего не передаётся из HTML-формы?

   
 
 автор: Vadim777   (23.08.2005 в 14:58)   письмо автору
 
   для: cheops   (23.08.2005 в 13:54)
 

Привет! Это верно, что главным в выворе является рубрика$searchtype, а поля ввода являються необязательными: name, para, firma.

   
 
 автор: Vadim777   (23.08.2005 в 14:59)   письмо автору
 
   для: cheops   (23.08.2005 в 13:54)
 

А как выглядит инструмент замены пустой строки нулем?

   
 
 автор: cheops   (23.08.2005 в 15:42)   письмо автору
 
   для: Vadim777   (23.08.2005 в 14:59)
 

Можно поступить следующим образом
<?php
  
if(empty($_POST['para'])) $_POST['para'] = 0;
?>

или привести к числу переменную за счёт операции сложения с нулём
<?php
  $_POST
['para'] = $_POST['para'] + 0;
?>

   
 
 автор: Vadim777   (23.08.2005 в 15:06)   письмо автору
 
   для: 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; выдает вот такое на ввод информации.

   
 
 автор: cheops   (23.08.2005 в 15:39)   письмо автору
 
   для: Vadim777   (23.08.2005 в 15:06)
 

Попробуйте поставить после строки
<?php
$result 
mysql_query($query);
?>

следующий код
<?php
  
if(!$result) exit(mysql_error());
?>

Что ещё выводится в окно браузера после этого?

   
 
 автор: Vadim777   (23.08.2005 в 16:01)   письмо автору
 
   для: 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.

   
 
 автор: cheops   (23.08.2005 в 17:21)   письмо автору
 
   для: Vadim777   (23.08.2005 в 16:01)
 

Да действительно пустой... а почему у вас функция mysql_query() два раза подряд вызывается
<?php
   $query
=mysql_query($sql); 
   
$result mysql_query($query);
?>

Эту конструкцию следует заменить на
<?php
   $result 
mysql_query($sql);
?>

   
 
 автор: Vadim777   (23.08.2005 в 16:03)   письмо автору
 
   для: cheops   (23.08.2005 в 15:39)
 

куда вставить:
$_POST['para'] = $_POST['para'] + 0;
извиняюсь за темноту.

   
 
 автор: cheops   (23.08.2005 в 17:22)   письмо автору
 
   для: Vadim777   (23.08.2005 в 16:03)
 

В любом месте до формирования SQL-запроса в переменной $sql.

   
 
 автор: Vadim777   (23.08.2005 в 18:16)   письмо автору
 
   для: 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

   
 
 автор: cheops   (24.08.2005 в 01:22)   письмо автору
 
   для: Vadim777   (23.08.2005 в 18:16)
 

А вот это устранили?
<?php 
   $query
=mysql_query($sql); 
   
$result mysql_query($query); 
?>

   
 
 автор: Vadim777   (25.08.2005 в 11:14)   письмо автору
 
   для: 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

   
 
 автор: cheops   (25.08.2005 в 12:15)   письмо автору
 
   для: Vadim777   (25.08.2005 в 11:14)
 

А в строке name,para,firma точно ошибок нет? Кавычки в выражении 'com' обратные - у нас форум меняет обратные кавычки на прямые, поэтому проверить нельзя.

   
 
 автор: Vadim777   (25.08.2005 в 12:33)   письмо автору
 
   для: 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;
?>

кавычки правильные.

   
 
 автор: cheops   (25.08.2005 в 12:47)   письмо автору
 
   для: Vadim777   (25.08.2005 в 12:33)
 

SELECT  FROM

Это опечатка или у вас пропущен символ * или имена столбцов?

   
 
 автор: Vadim777   (25.08.2005 в 14:18)   письмо автору
 
   для: cheops   (25.08.2005 в 12:47)
 

SELECT * FROM 'mon' You have an error in your SQL syntax near ''mon' ' at line 1
Пропустил!!!!!

   
 
 автор: cheops   (25.08.2005 в 22:19)   письмо автору
 
   для: Vadim777   (25.08.2005 в 14:18)
 

Уберите вообще кавычки у
'mon'

бывает, что он на них MySQL плохо реагирует - что пишет MySQL после того как убраны кавычки?

   
 
 автор: Vadim777   (26.08.2005 в 11:43)   письмо автору
 
   для: cheops   (25.08.2005 в 22:19)
 

И с кавычками работает, и - без оных!! Спасибо!

   
 
 автор: Vadim777   (23.08.2005 в 18:20)   письмо автору
 
   для: cheops   (23.08.2005 в 17:22)
 

И главное нет больше указания на ошибку. Даже появляется шапка Резултати поиска, а вывода нет!?

   
 
 автор: Vadim777   (23.08.2005 в 18:32)   письмо автору
 
   для: Vadim777   (23.08.2005 в 18:20)
 

Ура Ура Ура!!!!! Заработала!!!!
Спасибо!! cheops
У меня была ошибка лишнии кавычки $sql="SELECT * FROM ".$_POST['searchtype']." ";
Там были одинарные кавычки перед и после ".$_POST['searchtype']."

   
Rambler's Top100
вверх

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