|
|
|
| Добрый всем день!
У меня есть функция добавления и редактирования бд:
function display_buhtype ($id)
{
if (!isset($id))
{
echo "<table cellpadding='0' style='margin-top:10px;' cellspacing='0' border='0'>";
echo "<tr>";
echo "<td>";
echo "<form method='post' action='index.php?nb=add_buhtype' onsubmit='return check_form_buhtype(this)'>";
echo "<table class='add' cellpadding='3' cellspacing='0' border='0'>";
echo "<tr>";
echo "<td colspan='2'><u>Добавление бухгалтерской единицы:</u></td>";
echo "</tr>";
echo "<tr>";
echo "<td>Бухгалтерская единица:</td>";
echo "<td><input type='text' size='66' class='form' name='hardbuhtype'></td>";
echo "</tr>";
echo "<tr>";
echo "<td valign='top'>Примечание:</td>";
echo "<td><textarea name='remark' class='form' cols='66' rows='3'></textarea></td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan='2'>";
echo "<input type=submit>";
echo "</td>";
echo "</tr>";
echo "</table>";
echo "</form>";
echo "</td>";
echo "</tr>";
}
else
{
$sql = mysql_query("SELECT id, hardbuhtype, remark FROM comp_buhtype WHERE id=$id");
while ($res_upd_buhtype = mysql_fetch_assoc($sql))
{
echo "<table cellpadding='0' style='margin-top:10px;' cellspacing='0' border='0'>";
echo "<tr>";
echo "<td>";
echo "<form method='post' action='index.php?nb=upd_buhtype' onsubmit='return check_form_buhtype(this)'>";
echo "<table class='add' cellpadding='3' cellspacing='0' border='0'>";
echo "<tr>";
echo "<td colspan='2'><u>Редактирование бухгалтерской единицы:</u></td>";
echo "</tr>";
echo "<tr>";
echo "<input type='hidden' name='id' value='$res_upd_buhtype[id]'>";
echo "<td>Бухгалтерская единица:</td>";
echo "<td><input value='$res_upd_buhtype[hardbuhtype]' type='text' size='66' class='form' name='hardbuhtype'></td>";
echo "</tr>";
echo "<tr>";
echo "<td valign='top'>Примечание:</td>";
echo "<td><textarea name='remark' class='form' cols='66' rows='3'>$res_upd_buhtype[remark]</textarea></td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan='2'>";
echo "<input type=submit>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td align='right' colspan='2'><a class='menu' href='index.php?nb=disp_buhtype'>Перейти к функции ДОБАВЛЕНИЯ</a></td>";
echo "</tr>";
echo "</table>";
echo "</form>";
}
echo "</td>";
echo "</tr>";
}
|
Поля формы передаются в конструкцию switch..case.
case "disp_buhtype":
display_buhtype($id);
break;
|
При переходе к добавлению новой записи выдается ошибка Undefined variable, что естественно так как ожидается переменная $id/
Вопрос как сделать чтобы этой ошибки не было!
Можно конечно сделать еще один case, но можно ли обойтись без него? | |
|
|
|
|
|
|
|
для: Front
(03.09.2007 в 16:04)
| | Определить $id. | |
|
|
|
|
|
|
|
для: sim5
(03.09.2007 в 16:50)
| | я думаю проблема в самом условии:
У Вас:
<?php
function display_buhtype ($id)
{
if (!isset($id))
{ ...
|
а я думаю надо
<?php
function display_buhtype ($id)
{
if (isset($id))
{ ...
|
| |
|
|
|
|
|
|
|
для: Front
(03.09.2007 в 16:04)
| | Проблема в понимании конструкции isset
В контексте function display_buhtype ($id) {
isset($id) всегда вернет истину. Потому что переменная $id (параметр функции) всегда определена.
в контексте
case "disp_buhtype":
display_buhtype($id);
break;
$id тоже по идее должен быть определен. Иначе откуда он получит значение? | |
|
|
|
|
|
|
|
для: Front
(03.09.2007 в 16:04)
| | Для того чтобы эта конструкция работала Вам необходимо передавать из формы и парамерт $id, если вы не хотите что бы провепка была раньше чем передадутся параметры сделайте следующим образом:
<?php
if (isset($id)){ display_buhtype($id);} else {switch..case...}
?>
|
Скажите, а с областью видимости переменных у Вас ничего не напутано? | |
|
|
|
|
|
|
|
для: lifead
(04.09.2007 в 05:04)
| | Всем спасибо! Все заработало.
Сделал так:
if( isset( $id ))
display_buhtype($id);
else
display_buhtype(null);
break;
|
| |
|
|
|