Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Скрипт не хочет работать со скрытой переменной


Автор: Alinabagi 12.12.2005, 17:36
Здравствуйте, я только-только начинаю учиться PHP. Учусь с помощью уроков с сайта http://kurepin.ru/. Дело в том, что на их форум я почему-то не могу попасть, поэтому задаю свой вопрос вам.

по нажатию на ссылку меню "добавить" у меня открывается скрипт add.php, где в строку ввода нужно ввести название новой рубрики и добавить по нажатию на кнопку. Ниже я приведу его код. Насколько я понимаю, задается скрытая переменная post, в которой хранится информация о нажатие или ненажатии кнопки. В моем случае при запуске скрипта выводится ошибка
"Notice: Undefined variable: post in z:\home\ersteprobe.ru\www\admin\cat\add.php on line 7"
Не могу понять, почему же она не определяется. Если в классе-предке прописать эту переменную, то сообщение все равно выводится.

Код

<?
  require("/home/ersteprobe.ru/req/in.class");

  $my=new class_in;
  $my->sql_connect();

  if($post=="Y")
  {
   $my->in_cat_name=$cat_name;
   $err=$my->in_cat_add();
   if($err) 
   {
    $my->error=$my->err_to_html($err);
   }else
   {
    $my->error=$my->ok_to_html("рубрика '".$my->in_cat_name."' успешно добавлена");
    unset($cat_name);
   }
  }

  include($my->PATH_INC."/top.inc");
  include($my->PATH_INC."/adv_top.inc");
  include($my->PATH_INC."/navigator.inc");
  flush();

?>

<table width="100%" cellspacing="0" cellpadding="3">
<tr>
    <td valign=top>
        <b>Добавление новой рубрики</b><br>
        <br>
        <form action=<? $PHP_SELF; ?> method="post">
        <input type=HIDDEN name="post" value="Y">
        <input type=TEXT name="cat_name" value=<? echo $my->cat_name; ?>>
                  <input type="submit" value="добавить">
        </form>
    </td>

    <td width=200 bgcolor=#eeeeee valign=top>
        <b>администратор</b><br>
        <br>
        <? include($my->PATH_INC."/menu_admin.inc");?><br>
        <br>
        <b>главное меню</b><br>
        <b><? include($my->PATH_INC."/main_menu.inc");?></b><br>
        <br>
    </td>

</tr>
</table>



Помогите, пожалуйста!

Автор: Mal Hack 12.12.2005, 17:48
Цитата(Alinabagi @ 12.12.2005, 17:36)
Если в классе-предке прописать эту переменную, то сообщение все равно выводится.

В классе, значит обращение должно быть $object -> post, а не просто $post

Автор: Alinabagi 12.12.2005, 18:08
Хорошо. Если я прописываю в предке эту post, а в скрипте потом пишу $my->post, то сообщение об ошибке уходит. Но разве в этом случае скрипт поймет, что эта post и есть та самая скрытая переменная?

В моем случае теперь ничего не происходит. Нажимаю ли я "добавить" или не нажимаю. Ничего не добавляется. Возможно, потому что эта самая post и cat_name прописаны в классе-предке? и браузер не заносит значение в cat_name?

А ф-ции добавления у меня следующие: (в предке находятся)
Код

function in_cat_add_check() 
{
 $this->in_cat_name=AddSlashes($this->in_cat_name);
 if(strlen($this->in_cat_name)==0) return(21);
 if(strlen($this->in_cat_name)>50) return(22);

 $this->sql_res="select c_id from tbl_cats where c_name='".$this->in_cat_name."'"; 
 $this->sql_execute();
 if($this->sql_err) return(11);
 if(mysql_num_rows($this->sql_res)) return(23);

 return(0);
}

function in_cat_add()
{
 $err=$this->in_cat_add_check();
 if($err) return($err);

 $this->sql_query="insert into tbl_cats(c_name) values('".$this->in_cat_name."')";
 $this->sql_execute();
 if($this->sql_err) return(11);

 return(0);
} 

Автор: Alinabagi 12.12.2005, 18:25
Смотрите, если я хочу описать переменную, например, $cat_name (или post) в этом скрипте, то я опять-таки получаю ошибку
Код

 <?
  require("/home/ersteprobe.ru/req/in.class");
  
  global $PHP_SELF;
 
  var $cat_name;
  
  $my=new class_in;
  $my->sql_connect();



Parse error: parse error, unexpected T_VAR in z:\home\ersteprobe.ru\www\admin\cat\add.php on line 6

Почему?

Автор: Mal Hack 12.12.2005, 21:14
Alinabagi прочитай внимательно про синтаксис использования объектов.
http://ru.php.net/manual/ru/language.oop.php
http://ru.php.net/manual/ru/language.oop5.php

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)