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

Форум PHP

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

 

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

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

тема: Конструкция switch..case Вопрос?
 
 автор: Front   (03.09.2007 в 16:04)   письмо автору
 
 

Добрый всем день!

У меня есть функция добавления и редактирования бд:



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, но можно ли обойтись без него?

   
 
 автор: sim5   (03.09.2007 в 16:50)   письмо автору
 
   для: Front   (03.09.2007 в 16:04)
 

Определить $id.

   
 
 автор: lifead   (03.09.2007 в 20:12)   письмо автору
 
   для: sim5   (03.09.2007 в 16:50)
 

я думаю проблема в самом условии:
У Вас:

<?php
function display_buhtype ($id

if (!isset(
$id)) 
{ ...

а я думаю надо

<?php
function display_buhtype ($id

if (isset(
$id)) 
{ ...

   
 
 автор: Trianon   (04.09.2007 в 01:36)   письмо автору
 
   для: Front   (03.09.2007 в 16:04)
 

Проблема в понимании конструкции isset
В контексте function display_buhtype ($id) {
isset($id) всегда вернет истину. Потому что переменная $id (параметр функции) всегда определена.

в контексте
case "disp_buhtype":
display_buhtype($id);
break;
$id тоже по идее должен быть определен. Иначе откуда он получит значение?

   
 
 автор: lifead   (04.09.2007 в 05:04)   письмо автору
 
   для: Front   (03.09.2007 в 16:04)
 

Для того чтобы эта конструкция работала Вам необходимо передавать из формы и парамерт $id, если вы не хотите что бы провепка была раньше чем передадутся параметры сделайте следующим образом:

<?php
if (isset($id)){  display_buhtype($id);} else {switch..case...}
?>

Скажите, а с областью видимости переменных у Вас ничего не напутано?

   
 
 автор: Front   (04.09.2007 в 14:55)   письмо автору
 
   для: lifead   (04.09.2007 в 05:04)
 

Всем спасибо! Все заработало.
Сделал так:


                if( isset( $id ))
            display_buhtype($id);
                else
            display_buhtype(null);
            break;

   
Rambler's Top100
вверх

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