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

Форум MySQL

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

 

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

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

тема: Помогите найти ошибку в коде (Notice)?
 
 автор: xpom   (13.09.2006 в 22:14)   письмо автору
 
 

Уважаемые профессионалы, помогите пожалуйста найти ошибку в коде? Создаю запрос к таблице вывести данные из таблицы в массив выпадающего списка, с помощью этого кода:

<?php 
 
$db 
mysql_connect($dbhost$dbuser$dbpass);
  
mysql_selectdb($dbname$db);

 
$res mysql_query("SELECT * FROM Punkt",$db); 
  if(!
$res) exit("Ошибка в синтаксисе запроса"); 
  if(
mysql_num_rows($res)) 
  { 
     echo 
"<select type=text name='d'> "
     while(
$punkt mysql_fetch_array($res)) 
     { 
        if(
$_GET['d'] == $punkt[id]) $selected "selected"
        else 
$selected ""
        echo 
"<option  value=$punkt[id] $selected>$punkt[name]</option>"
     } 
     echo 
"</select> "
  } 
?> 



Таблица к которой производится запрос создавалась следующим образом:

CREATE TABLE Punkt (
      PID         INTEGER NOT NULL AUTO_INCREMENT,
      PunktName        VARCHAR(30),
      Primary Key (PID)

   
 
 автор: cheops   (13.09.2006 в 22:28)   письмо автору
 
   для: xpom   (13.09.2006 в 22:14)
 

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

   
 
 автор: xpom   (14.09.2006 в 17:55)   письмо автору
 
   для: cheops   (13.09.2006 в 22:28)
 

Появляется пучтой выпадающий список с кнопкой перейти и выводится вот это сообщение:
PHP Notice: Undefined index: d in C:\Apache2.2\htdocs\cat\Untitled-5.php on line 26 PHP Notice: Use of undefined constant id - assumed 'id' in C:\Apache2.2\htdocs\cat\Untitled-5.php on line 26 PHP Notice: Undefined index: id in C:\Apache2.2\htdocs\cat\Untitled-5.php on line 26 PHP Notice: Undefined index: id in C:\Apache2.2\htdocs\cat\Untitled-5.php on line 28 PHP Notice: Undefined index: name in C:\Apache2.2\htdocs\cat\Untitled-5.php on line 28 PHP Notice: Undefined index: d in C:\Apache2.2\htdocs\cat\Untitled-5.php on line 26 PHP Notice: Use of undefined constant id - assumed 'id' in C:\Apache2.2\htdocs\cat\Untitled-5.php on line 26 PHP Notice: Undefined index: id in C:\Apache2.2\htdocs\cat\Untitled-5.php on line 26 PHP Notice: Undefined index: id in C:\Apache2.2\htdocs\cat\Untitled-5.php on line 28 PHP Notice: Undefined index: name in C:\Apache2.2\htdocs\cat\Untitled-5.php on line 28 PHP Notice: Undefined index: d in C:\Apache2.2\htdocs\cat\Untitled-5.php on line 36 PHP Notice: Undefined index: d in C:\Apache2.2\htdocs\cat\Untitled-5.php on line 43
26-я строка в коде у меня вот эта: if($_GET['d'] == $punkt[id]) $selected = "selected"; наверное это в ней неполадки?

   
 
 автор: cheops   (14.09.2006 в 20:35)   письмо автору
 
   для: xpom   (14.09.2006 в 17:55)
 

Notice является своеобразным советом и выводится, когда выставлена максимальная чувствительность PHP к ошибкам - её следует понизить, как это сделано на всех хостингах, иначе они не дадут работать. Для этого, следует выставить соответствующее значение для директивы error_reporting http://www.softtime.ru/info/articlephp.php?id_article=23, в конфигурационном файле php.ini
error_reporting = E_ALL & ~E_NOTICE

Так же можно изменить уровень обработки ошибок локально, для этого в начало скрипта следует поместить функцию
<?php 
Error_Reporting
(E_ALL & ~E_NOTICE); 
?>

В качестве параметра, которой передать соответствующий уровень обработки ошибок.

   
 
 автор: xpom   (15.09.2006 в 16:35)   письмо автору
 
   для: cheops   (14.09.2006 в 20:35)
 

Спасибо, сделал как вы говорите, Notice исчез, но выпадающий список все-равно пуст, он открывается на две строчки, которые пустые. Где это может быть ошибка?

   
 
 автор: cheops   (15.09.2006 в 21:31)   письмо автору
 
   для: xpom   (15.09.2006 в 16:35)
 

В цикле выведите содрежимое массива $punkt - в нём чего-нибудь есть?
<?php
  
echo "<pre>";
  
print_r($punkt);
  echo 
"</pre>";
?>

   
 
 автор: xpom   (15.09.2006 в 22:27)   письмо автору
 
   для: cheops   (15.09.2006 в 21:31)
 

Вывел с помьщью этого кода содержимое массива $punkt , никаких изменений не произошло, все так как и было? Это значит что массив не строится?

   
 
 автор: coerbi   (15.09.2006 в 22:55)   письмо автору
 
   для: xpom   (15.09.2006 в 22:27)
 

А где у тебя в табдице поле id исправь на pid в скрипте

   
 
 автор: xpom   (16.09.2006 в 10:46)   письмо автору
 
   для: coerbi   (15.09.2006 в 22:55)
 

Исправление не помогает?

   
 
 автор: cheops   (16.09.2006 в 13:46)   письмо автору
 
   для: xpom   (15.09.2006 в 22:27)
 

Да это означает индекс пустой... вообще говоря у вас не совпадают имена стлбцов в таблице и в PHP-скрипте... Скрипт минимально следует поправить следующим образом
<?php  
  
$db 
mysql_connect($dbhost$dbuser$dbpass); 
  
mysql_selectdb($dbname$db); 

 
$res mysql_query("SELECT * FROM Punkt",$db);  
  if(!
$res) exit("Ошибка в синтаксисе запроса");  
  if(
mysql_num_rows($res))  
  {  
     echo 
"<select type=text name='d'> ";  
     while(
$punkt mysql_fetch_array($res))  
     {  
        if(
$_GET['d'] == $punkt['PID']) $selected "selected";  
        else 
$selected "";  
        echo 
"<option  value=$punkt[PID] $selected>$punkt[PunktName]</option>";  
     }  
     echo 
"</select> ";  
  }  
?> 

   
 
 автор: xpom   (16.09.2006 в 15:43)   письмо автору
 
   для: cheops   (16.09.2006 в 13:46)
 

Вот это исправил, работает список появился, а переменная d ниже скрипта не выводится, где это может быть ошибка? Вот ниже код вовода ссылок в соответствии с d:

<?php
  
if($_GET['d'] == 1)
  {
    
// Ссылки раздела 1
    
echo "<a href=cat.php?d=".htmlspecialchars($_GET['d'])."&n=1>Раздел 1.1</a><br>";
    echo 
"<a href=cat.php?d=".htmlspecialchars($_GET['d'])."&n=2>Раздел 1.2</a><br>";
    echo 
"<a href=cat.php?d=".htmlspecialchars($_GET['d'])."&n=3>Раздел 1.3</a><br>";
  }
?>

   
Rambler's Top100
вверх

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