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

Форум MySQL

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

 

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

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

тема: помогите найти ошибку в коде
 
 автор: lilu   (11.07.2005 в 22:00)   письмо автору
 
 

Ошибка наверняка глупая, но я только начала изучать php !
Задача такая есть две радиогруппы, в каждой выбирая по значению и нажимая кнопку должны отображаться результат выборки! Т.е например, должны отобразиться только продаваемые сотовые телефоны! Если подскажите как сделать более красиво буду благодарна! Вот мой код:


<meta http-equiv="Content-Type" content="text/html; charset=windows-1231">
</head>

<body>
<?php
global $submit, $d, $tmp1, $tmp2, $rgr_tovar, $rgr_deystvie;
$d = date("Y-m-d");
echo "$d";
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="35%" align="left" valign="middle"><form name="form1" method="post" action="<?php echo $PHP_SELF ?>">
<label>
<input type="radio" name="rgr_tovar" value="phone">
телефония и средства связи</label>
<br>
<label>
<input type="radio" name="rgr_tovar" value="mobila">
сотовые телефоны</label>
<br>
<label>
<input type="radio" name="rgr_tovar" value="tech">
бытовая техника</label>
<br>
<label>
<input type="radio" name="rgr_tovar" value="mebel">
мебель и интерьер</label>
<br>

</form></td>
<td width="35%" align="left" valign="middle"><form name="form2" method="post" action="<?php echo $PHP_SELF ?>">
<label>
<input type="radio" name="rgr_deystvie" value="buy">
Покупка</label>
<br>
<label>
<input type="radio" name="rgr_deystvie" value="sell">
Продажа</label>
<br>

<input name="submit" type="button" value="отобразить результат">
</form></td>
</tr>
</table>
<?php
$db = mysql_connect("localhost", "root");
mysql_select_db("066", $db);

if ($submit) {
$tmp1 = " rgr_tovar = '$_POST[rgr_tovar]' ";
$tmp2 = " AND rgr_deystvie = '$_POST[rgr_deystvie]' ";
$query = "SELECT * FROM 'tabl' WHERE ".$tmp1.$tmp2;
$rez=mysql_query($query);

if ($rez) {
echo "<table border=1>\n";
echo "<tr><td>id</td><td>cena</td><td>tovar</td><td>deystvie</td><td>text</td><td>kontact</td></tr>";
while ($myrow=mysql_fetch_row($rez))
{
printf("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>\n", $myrow[0], $myrow[1], $myrow[2],$myrow[3],$myrow[4],$myrow[5]);
}
echo "</table>\n";
} else echo "<br><br><br><br><br><p align='center'>что-то не пашет</p>";}

else echo "нажмите кнопку для отображения результата";
?>

   
 
 автор: cheops   (12.07.2005 в 00:46)   письмо автору
 
   для: lilu   (11.07.2005 в 22:00)
 

А в чём заключается ошибка?

PS У нас же нет таблиц, чтобы запустить скрипт и отладить его...

   
 
 автор: lilu   (12.07.2005 в 15:26)   письмо автору
 
   для: cheops   (12.07.2005 в 00:46)
 

Да вот кнопка не срабатывает вообще никак, хотя при отладке программа ошибок не выдаёт никаких! таблица здесь всего одна
Сервер: localhost БД: 066 таблица : tabl
и полей в ней немного, вот они и их свойства
id int(3) auto_increment
cena varchar(4)
tovar varchar(10)
deystvie varchar(10)
text varchar(150)
kontact varchar(20)

А вот уникальный ключ и индексы
PRIMARY PRIMARY 11 id
tovar INDEX Нет tovar
deystvie INDEX Нет deystvie
Надеюсь этих данных хватит!

   
 
 автор: cheops   (12.07.2005 в 21:47)   письмо автору
 
   для: lilu   (12.07.2005 в 15:26)
 

Т.е. при нажатии на кнопку, скрипт не заходит в блок if? А директива register_globals в конфигурационном файле php.ini включена?
register_globals = On

Если конфигурационный файл php.ini вам не доступен - замените строку
<?php
if ($submit) {
?>

на
<?php
if ($_POST['submit']) {
?>

что-нибудь изменяется?

   
 
 автор: lilu   (13.07.2005 в 17:16)   письмо автору
 
   для: cheops   (12.07.2005 в 21:47)
 

register_globals=on (да в php.ini именно так)

Вот что пишет после Ваших изменений
Notice: Undefined index: submit in w:\home\localhost\www\tmp34m94jl9zw.php on line 53
Денвер у меня установлен и его рекоммендации такие:

Это предупреждение, вероятнее всего, возникает вследствие высокого уровня контроля ошибок в PHP, по умолчанию установленного в Денвере (E_ALL). Такой режим вывода ошибок является рекомендуемым и сильно помогает при отладке скриптов. Однако множество готовых скриптов требуют более низкого уровня ошибок.

Вы можете установить более слабый контроль ошибок одним из следующих способов:

Впишите в скрипты строчку:
Error_Reporting(E_ALL & ~E_NOTICE);
Этот способ особенно удобен, если в скрипте есть один файл (конфигурационный), который подключается всеми остальными.
Рекомендуемый способ. Создайте в директории со скриптом файл .htaccess следующего содержания:
php_value error_reporting 7
Исправьте в /usr/local/php/php.ini значение error_reporting на E_ALL & ~E_NOTICE. Этот способ не является рекомендуемым и может привести к серьезным неудобствам при отладке!


Так как же быть, может можно как-то без if или ...

   
 
 автор: lilu   (13.07.2005 в 19:14)   письмо автору
 
   для: lilu   (13.07.2005 в 17:16)
 

ещё прикол! Я попробовала вообще простенький пример сразу при запуске выборка из базы данных и вовод на экарн в виде таблицы всё работает! Как только я добавила кнопку, и только после её нажатия результат должен выводиться - всё, этот if не понимает меня и ошибок не выдаёт! Что это...! остальные циклы работаю while for, что-то в синтаксисе или что-то серьёзнее!

   
 
 автор: cheops   (13.07.2005 в 19:23)   письмо автору
 
   для: lilu   (13.07.2005 в 19:14)
 

Совсем без if не получиться - попробуйте заменить не чёткий if
<?php
if ($submit) {
?>

на более чёткую проверку
<?php
if (isset($submit)) {
?>

   
 
 автор: cheops   (13.07.2005 в 19:21)   письмо автору
 
   для: lilu   (13.07.2005 в 17:16)
 

Notice - это советы по кодированию, зачастую просто бесполезные, а при рабое с кукисами, сессиями и HTTP-заголовками так и просто вредные - лучше сразу установить error_reporting = E_ALL & ~E_NOTICE в php.ini - как это сделано на всех хостингах.

   
 
 автор: lilu   (13.07.2005 в 19:36)   письмо автору
 
   для: cheops   (13.07.2005 в 19:21)
 

не помогло! Может Вы другой метод написания проги моей задачки подскажите! Может тут с логикой не в порядке!

   
 
 автор: lilu   (14.07.2005 в 21:40)   письмо автору
 
   для: lilu   (13.07.2005 в 19:36)
 

Ура после долгих мучений всё заработало я нашла выход ...:)))
спасибо Вам за терпение и за помощь!

   
Rambler's Top100
вверх

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