|
|
|
| Уважаемые профессионалы, помогите пожалуйста найти ошибку в коде? Создаю запрос к таблице вывести данные из таблицы в массив выпадающего списка, с помощью этого кода:
<?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)
|
| |
|
|
|
|
|
|
|
для: xpom
(13.09.2006 в 22:14)
| | А что не так? В чём заключается ошибка? | |
|
|
|
|
|
|
|
для: 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"; наверное это в ней неполадки? | |
|
|
|
|
|
|
|
для: 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);
?>
|
В качестве параметра, которой передать соответствующий уровень обработки ошибок. | |
|
|
|
|
|
|
|
для: cheops
(14.09.2006 в 20:35)
| | Спасибо, сделал как вы говорите, Notice исчез, но выпадающий список все-равно пуст, он открывается на две строчки, которые пустые. Где это может быть ошибка? | |
|
|
|
|
|
|
|
для: xpom
(15.09.2006 в 16:35)
| | В цикле выведите содрежимое массива $punkt - в нём чего-нибудь есть?
<?php
echo "<pre>";
print_r($punkt);
echo "</pre>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(15.09.2006 в 21:31)
| | Вывел с помьщью этого кода содержимое массива $punkt , никаких изменений не произошло, все так как и было? Это значит что массив не строится? | |
|
|
|
|
|
|
|
для: xpom
(15.09.2006 в 22:27)
| | А где у тебя в табдице поле id исправь на pid в скрипте | |
|
|
|
|
|
|
|
для: coerbi
(15.09.2006 в 22:55)
| | Исправление не помогает? | |
|
|
|
|
|
|
|
для: 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> ";
}
?>
|
| |
|
|
|
|
|
|
|
для: 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>";
}
?>
|
| |
|
|
|