как узнать имя объекта и послать дополнительные переменные после submit?

Zo

Новичок
как узнать имя объекта и послать дополнительные переменные после submit?

Создаю анкету, состоящую из нескольких страниц. Каждая страница содержит управляющие элементы!
Анкета, страницы, управляющие элементы - объекты!
Создав управляющий объект для добавления картинок, возник вопрос:
как обратится к экземпляру класса?

1. Рассмотрим ситуацию добавления картинки:
image_area - класс для добавления картинки!
$object= new image_area();
$object->draw();
$obj= new image_area();
$obj->draw();
Чтобы добавить картинку, единственное решение использовать форму! У PHP нет же средств обратится к экземпляру классу напрямую?!
Как я понимаю,чтобы обратится к конкретному экземпляру класса (object или obj),
я предлагаю в <Input type="submit" name="ИМЯ_ЭКЗЕМПЛЯРА">, а в конструкторе обрабатывать переменные и производить действие, если имя текущего экземляр класса, посланного POST/GET, существует (isset(ИМЯ_ЭКЗЕМПЛЯРА)), например (isset(obj)),(isset(object))!

Встает вопрос: как достать ИМЯ_ЭКЗЕМПЛЯРА(object или obj), ну и название класса (в моем примере image_area)?

2. Т.К. Анкета состоит из страниц, хотелось бы, чтобы кроме переменных от экземпляра классов управляющих элементов, посылались еще и номер страницы и другая системная информация! Есть ли такой механизм в PHP,чтобы после нажатия на submit послать дополнительные переменные? ну или как-то что-то перехватить, а потом послать?
 

Фанат

oncle terrible
Команда форума
Чтобы добавить картинку, единственное решение использовать форму! У PHP нет же средств обратится к экземпляру классу напрямую?!
прошу простить мне моё невежество, но как эти два предложения связаны между собой? то есть, логическую конструкцию я вижу: Если .. то ... потому что. Но каким образом форма является единственным способом обратиться к экземпляру класса? И почему пхп этого не может?

-~{}~ 10.10.05 23:56:

Встает вопрос: как достать ИМЯ_ЭКЗЕМПЛЯРА
ээээ...
ты, собственно, в курсе, что когда ты принимаешь файл из формы, у тебя нету экземпляра, котороым ты эту форму рисовал?
 

Exel

Новичок
Re: как узнать имя объекта и послать дополнительные переменные после submit?

Есть ли такой механизм в PHP,чтобы после нажатия на submit послать дополнительные переменные? ну или как-то что-то перехватить, а потом послать?
Есть, только php к этому не имеет никакого отношения. Ключ - JavaScript.

Каждая страница содержит управляющие элементы!
- звучит зловеще :D
 

svetasmirnova

маленький монстрик
Автор прямо как из анекдота про человека, котрый писал, писал всякие GUI-приложения для ОС и в web-программирование ушёл

-~{}~ 11.10.05 02:56:

Есть ли такой механизм в PHP,чтобы после нажатия на submit послать дополнительные переменные? ну или как-то что-то перехватить, а потом послать?
Угу, протокол http называется. См. формы.
 

Zo

Новичок
Как вы предлагаете определить двум объекта для добавления картинки, у которых все методы одинаковы (см.п.1) но разные имена экземпляров, кому из них был послан файл?
Можете предложить свой вариант решения?

Фанат
Если ты хочешь передать информацию между страницами ты используешь форму: заполняешь ее и отсылаешь! Получаем конечно только переменные из формы, никаких имен экземпляров класса!
В массиве $HTTP_POST_FILES узнаем всю необходимую информацию, включая имя посланного файла, который хранится во временной папке!

Но как определить в скрипте, посылая на него переменные из формы, кому из экземпляров достанется обрабатывать посланный файл:
см. скрипт ниже:
<?
include "image_class.php";
$object= new image_area();
$object->draw();
$obj= new image_area();
$obj->draw();
?>
Если просто обрабатывать любой входящий файл в конструкторе, то они оба прикрепят к себе посланный файл, но загвостка в том, что посылался-то файл одним объектом, а обработают его оба экземпляра! =>необходимо посылать с переменными какую-то переменную, которая бы хранила бы информацию о том, кому из экземпляров обрабатывать файл! Переменная и должна содержать ИМЯ_ЭКЗЕМПЛЯРА!
Как узнать имя экземпляра класса?
Нравится метод? Если нет, предложите пожалуйста свой!

Exel
JavaScript выполняется на клиенте! Если JAVASCRIPT отключить, то и ничего не сработает!
Есть другие предложения?
Но если использывать JavaScript,где конкретно искать?

svetasmirnova
Расскажи анекдот, вместе посмеемся! :)

Угу, протокол http называется. См. формы.
А еще конкретнее можно?
 

Фанат

oncle terrible
Команда форума
А почему у тебя два одинаковых экземпляра?
И какое вообще значение имеет их имя?
Какая разница, какой вообще экземпляр, если всё равно его создавать заново?
И, ещё раз - почему у тебя их два?

-~{}~ 11.10.05 19:54:

и вообще, почему ты не отвечаешь на вопросы, которые тебе задают?
 

svetasmirnova

маленький монстрик
>Расскажи анекдот, вместе посмеемся!
покамест ты их рассказываешь
 

Exel

Новичок
Если тебе надо приделать к форме какие-либо параметры, которые вычисляются на клиенте, то JavaScript, а если просто оправить какие-то доп. параметры, которые ты знаешь заранее, то их можно оправить либо методом GET(action="ex.php?param1=value1&p2=v2"), либо методом POST, через hidden поля формы.

По поводу экземпляров прочитай 1ю и 4ю строчки предыдущего поста и, возможно, твой вопрос решится сам собой.
 

svetasmirnova

маленький монстрик
Zo
Ты вывалил на нас какую-то мешанину из мыслей. И происходит эта мешанина, на мой взгляд, из-за недостаточного понимания того, каким образом могут взаимоействовать серверное (php-скрипт) и клиентское (html и JavaScript) приложения.
 

Zo

Новичок
Фанат
Дочитай до конца, пожалуйста, что я ответил!
Может я действительно чего-то не понимаю!
А почему у тебя два одинаковых экземпляра?
А почему нет? И почему одинаковые?
Ну это что то вроде своего графической компоненты, который в зависимости от параметров ведет себя по разному!
Представь случай на одной странице тебе надо разместить 2 экземпляра такого графической компоненты, которая в одном случае добавлять разрешет только один рисунок с комментариями, а в другом несколько и без комментариев!
Вообщем хотелось написать класс для вставки картинки в любом из своих проектов будущих!

А почему ты решил что одинаковые экземпляры?
Это 2 разных объекта, даже если при создании я объявлю их с одинаковыми начальными параметрами!
Если будет тебе легче, пусть будут разные начальные параметры и
они будут немножко функционировать по-разному:
include "image_class.php";
$object= new image_area("create", "single", true);
$object->draw();
$obj= new image_area("create", "single", false);
$obj->draw();

И какое вообще значение имеет их имя?
Имя я хочу использовать, чтобы послать вместе с файлом в качестве значения какой-то переменной, скажем $primer, для того чтобы обозначить к какому объекту я обращаюсь! А посылаю все эти переменные и файл на этот же скрипт, где используются эти же объекты! Новых имен у этих объектов не появится!
Тогда
class image_area
{
function image_area()
{
.....
if ($_REQUEST["primer"]=="ИМЯ_ТЕКУЩЕГО_ОБЪЕКТА") {
обрабатывать посланный файл;
}
.............
}
}

Какая разница, какой вообще экземпляр, если всё равно его создавать заново?
А представь, что ты подаешь на вход в качестве параметра объекта массив, а массив, к примеру, хранится в сессионной переменной!
$name = new class_object($_SESSION[bla-bla-bla])!
Ты заново создаешь экземпляр, в качестве переменной экземпляра в конструкторе добавляешь массив из сессионой переменной!
Получаешь тот же фактически экземпляр что и раньше!
теперь обрабатывашь файл, добавляя или удаляя из массива данные и сохраняешь его снова в сессионной переменной!

В одном экземпляре - один массив, а в другом второй!
И проблема в том что я хочу поместить инфо (рисунок, путь к нему или другую инфо) именно в конкретный один из двух , трех или сколько объявлено в скрипте экземпляров! А единственным уникальным идентификатором явлется имя объекта, чтобы определить куда я хочу все инфо засадить!

И, ещё раз - почему у тебя их два?
см.выше
svetasmirnova
Спасибо! Посмеялся! %)
svetasmirnova
а что конретно такого я не понимаю?
РHP сформировал HTML-страницу в зависимости от переменных переданных HTML-формой на предыдущем шаге, сформированной той же PHP! Что не правильно?
 

Фанат

oncle terrible
Команда форума
ок.
я перестал что-либо понимать в этом потоке сознания, и поэтому попробую просто ответить на вопросы
Встает вопрос: как достать ИМЯ_ЭКЗЕМПЛЯРА
никак.
никакого экземпляра и в помине нету.
содаёшь новый и даёшь ему любое имя, какое захочется.
Есть ли такой механизм в PHP,чтобы после нажатия на submit послать дополнительные переменные?
нету.
в PHP вообще нет никаких механизмов, действующих после нажатия на submit.
и до нажатия - тоже.
 

tolst

Новичок
ЛОЛЫ.... человек так яростно хочет того, о чём весь остальной народ и не подозревает... =)

АФТАР, обьясни популярно и в примерах что к чему и для чего, тебя никто понять не могет....
 

baev

‹°°¬•
Команда форума
Zo, а зачем Вы всё время кричите?

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

Может, Вам вот это:
http://phpfaq.ru/na_tanke
http://phpfaq.ru/globals
почитать?
 

MasterSID

Новичок
Я тоже не очень понял, что автор хочет сделать, но помоему дело обстоит так: его скрипт может обрабатывать несколько типов входныхх данных и для кадого типа у него свой класс. Как я понял пользователь, сам решает какой из типов данных отправить. Так?
 

svetasmirnova

маленький монстрик
>Как я понял пользователь, сам решает какой из типов данных отправить. Так?
Проблема в том, что некоторые не понимают, что пользователь в этом случае может отправить только *один* тип: строку
 

MasterSID

Новичок
Я имел ввиду типы данных с точки зрения приложения, а не с точки зрения скрипта :)

Как я понял, ему просто нужно правильно определить где какой класс полключать и какой метод вызывать в зависимости от действий пользователя.

В общем, если я все правильно правильно понял, нужно каким-то образом идентифицировать форму, с которой были отправленны данные.

Похоже он просто перепутал php и html-код, который получает пользователь в виде формы для выполнения определенных действий.

Но наверное уже решил проблему, раз не постится тут :)
 

Zo

Новичок
svetasmirnova
Проблема в том, что некоторые не понимают, что пользователь в этом случае может отправить только *один* тип: строку
Это как раз я и понимаю!
Поэтому и спрашивал имя_объекта (в формате строки), чтобы его передать!!!





Забудьте про рисунки!!! и все другое!!!!

Имеется
$object= new image_area(name_array1);
$object->draw();
$obj= new image_area(name_array2));
$obj->draw();

name_array - название переменной сессии, где хранится массив слов.
Класс image_area содержит:
var massiv_slov;
var name_arrayer; - название переменной в сессии
конструктор image_Area()
функция draw();

В конструкторе класса массив указынный при объявлении объекта заносится в переменную объекта "massiv_slov" и производится проверка, добавлено ли новое слово или нет
if (isset($_POST[slovo])) { внести в массив massiv_slov; сохранить массив в переменной сессии name_arrayer; }

Функция draw()
выводит форму для ввода нового строкового значения в массив
<form action="" metod="POST">
<input type="text" name="slovo" ...>
<input type="submit" name="submitButton " ...>
</form>
и выводит список слов из переменной massiv_slov?

Получаем на выходе страницу с формой для ввода нового слова, кнопкой подтверждения и список слов из 1-го массива, и форму для ввода нового слова, кноку для подтверждения и список слов из 2-го массива

Вопрос:
что произойдет если мы напишим слово в одной из 2-х полей для ввода!

Ответ:
(как я понимаю)
добавится и в 1-й массив, и во 2-й!

Почему происходит:
одинаковое name="slovo"в теге <input type="text " ...> формы.

Ваши решения?
Мое было: использовать скрытую input тег с определенным name и value= "имя_экземпляра класса", чтобы в конструторе сопоставлять его с вновь создаваемым экземпляром класса!
 

baev

‹°°¬•
Команда форума
Мое было: использовать скрытую input тег с определенным name и value= "имя_экземпляра класса", чтобы в конструторе сопоставлять его с вновь создаваемым экземпляром класса
-- ну, нормальное решение...
Чем не подходит-то?
 

Zo

Новичок
svetasmirnova
Не знаю! :)
А почему должно подойти?
в моем понимании аттрибут name для input тега - название переменной, которая будет передаваться! тогда переменные slovo или slovo[] ничем опять не отличаются и опять будет значение добавится в оба масива!
Или я ошибаюсь?

baev
-- ну, нормальное решение...
Чем не подходит-то?
Проблема в том и состоит, что я не знаю как получить в методе класса "имя_экземпляра_класса"!
$this - это не название экземпляра класса, а сам объект вроде!
А других идей и знаний у меня нет!
Вот и спрашивал!
А Фанат сказал, что такое получить невозможно!
 
Сверху