|
|
|
|
|
для: sim5
(15.03.2009 в 10:35)
| | спасибо за советы, учту. | |
|
|
|
|
|
|
|
для: Slo_Nik
(15.03.2009 в 10:10)
| | Если кнопка SUBMIT имеет имя 'submit', проверяйте. Можно проверять по любому известному имени поля формы. | |
|
|
|
|
|
|
|
для: sim5
(15.03.2009 в 05:43)
| | >проверять пришла ли форма
единственное, что пришло на ум так это проверить наличие "submit" и если есть, тогда объявлять переменные.
<?php
if (isset($_POST['submit'])){
// объявляем переменные
}
?>
|
или можно ещё как то проверить пришла форма или нет? | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.03.2009 в 21:43)
| | Если вы поняли, что предупреждения не возникает более не потому, что вы присвоили "пустое значение" переменной, а потому, что вы ее "объявили" перед тем как обратиться к ней, значит хорошо, если нет, то подумайте еще....
РНР для начинающих, видимо, через чур "демократичен", позволяя им допускать "небрежности", непонимание которых в дальнейшем могут привести к более серьезным ошибкам. Вы попробуйте в других языках допустить такую вольность - не получится. Там вы обязаны не только объявлять переменные перед использованием, но указывать и их типы, а если требуется, то еще и размер (а если не обязательно требуется, то часто желательно - экономия памяти).
Вы правильно поняли, что в обоих случаях будет иметь поле в качестве значения. Но то, что я написал выше, это не есть "обязательное правило", можно поступить иначе - проверять пришла ли форма, и если да, то в теле условия объявлять переменные, присваивать им значения и работать с ними. Если построить логику кода верно, то и в этом случае никаких предупреждений не будет. Просто инициализация переменных, затем проверка и обработка их при получении формы, а далее сам вывод формы, это, на мой взгляд, самый удобный в плане "читабельности" и в использовании код при работе с формой. | |
|
|
|
|
|
|
|
для: sim5
(14.03.2009 в 20:32)
| | есть фотогалерея, надо вводить и редактировать изображение.
что бы не писать кучу форм, повторяющих друг друга, подумал, что можно использовать одну и ту же. как Вы выше сказали, данные то одни и те же.
при редактировании изображения я заполнил value формы данными из БД, вот так
<input type="text" name="name" value="<?php echo $test['name'] ?>">
|
но при выводе формы для добавления в БД записей о новом изображении вылазят notice.
форму я подключаю через include. поэтому я хотел узнать, будет ли уместно в файле с формой проверить существование переменной и если она не инициилизирована присвоить ей значение пустой строки. если присваивание пустой строки в последствии вызвало бы какие то проблемы, значит, я бы делал отдельную форму, вот и всё.
ну а если Вы пишите, что это можно делать, то тогда получается, что в форме я проверяю все переменные и если они не существуют - присваиваю им пустую строку и notice больше не беспокоят
объединять скрипты я пока отказался, они уже готовые и рабочие, не хочется их перекраивать.
поле формы из Вашего примера, как я понял,будет содержать значение переменной если она существует или пустое поле. | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.03.2009 в 19:40)
| | Я не знаю, что вы хотите выводить и редактировать. Ну допустим, возьмеме этот форум. Вы открываете некую тему, просто щелчком по ссылке, вам выводятся все ее посты. Вы решаете добавить свой пост, и делаете это щелчком по соответствующей ссылке. Вам будет выведена форма, заполняете отправляете, читаете, что добавили. А если есть необходимость ее отредактировать, нажимаете соответсвующую ссылку - вам выводится та же форма, данные то ведь одни. Можно это разнести и на два скрипта, а можно при выводе формы атрибуту action формы добавлять параметр, значение которого и будет определять, что в данный момент делает пользователь - добавляет новые данные или редактирует введенные.
Можете просто подключать одну и ту же форму к двум разным скриптам меняя только action формы. Можно поступить иначе, способов может быть много, все зависит от логики вашей задачи.
Если вы будете инициализировать переменные (почему они у вас в сессию, вопрос отдельный...), то, например, при ошибках ввода, и возврате формы пользователю уже введенные им данные не будут утеряны. Вся суть проста:
<?
//это инициализация, если форма принята - получаем значение поля,
//иначе она будет пустой
$var = isset($_POST['var']) ? $_POST['var'] : "";
//далее идет проверка ввода, и мы проверяем эту переменную:
if ($var .... условие) {
//действия: успешно - запись, нет - устанавливаем ошибку, и возвращаем форму пользователю
}
|
А форму выводим по умочанию и ошибках ввода, используя в качестве значений для атрибутов value проинициализированную переменнную.
<input type="text" value="<? echo $var; ?>" />
|
Объяснить, что будет содержать поле формы в обеих случаях, или сами подумаете....? | |
|
|
|
|
|
|
|
для: sim5
(14.03.2009 в 17:56)
| | значит, если я правильно понял, мне надо инициализировать переменные и через Get передать соответствующую команду скрипту(скрипт объеденить)?
при выводе формы, если предпологается запись в БД, переменной привсаивается пустая строка(notice не будут выводиться), при выводе формы для редактирования, поля формы(переменные) примут значение из БД.
я правильно понял?
меня интересовало, насколько правильно будет присвоить пустую строку переменной. | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.03.2009 в 17:13)
| | А вы приучите себя (особенно пока учитесь) иницилизировать переменные, те, с которыми будете работать. Это поможет вам избежать куда более серьезных ошибок. Это можно делать просто:
<?
//инициализация, если форма принята,
//переменная принимает значение поля формы,
//иначе она пуста (или может принимать некое значение по умолчанию)
$_SESSION['login'] = isset($_POST['login']) ? $_POST['login'] : "";
|
Если у вас одна форма для двух скриптов, которые разняться только действием, то объедените эти два скрипта в один, и выполняйте необходимые действия исходя из условий. А условие может быть задано соответствующей кнопкой формы, передачей в форме дополниельного GET-параметра (в action) и т.п..
Ведь вы фактически в обеих скриптах своих будете повторять одни и те же операции - проверка, извлечение данных, их вывод в форму, второй срипт отличается только записью или обновлением. | |
|
|
|
|
|
|
|
для: sim5
(14.03.2009 в 10:51)
| | >Пишите грамотно, обращайтесь корректно, поймете соль - подавите вывод предупреждений.
вот это и пытаюсь сделать.
в сессии не определена переменная, потому что ещё не выполнен вход на сайт, это я понял. так можно писать если вход есть и надо вывести приветствие по имени пользователя. или не так понял?
а скрипты разные, один добавляет запись, второй редактирует ту же запись.
форма одна, вот скрипты разные действия выполняют.
получается что надо писать врорую форму... или можно как то ещё решить эту проблему, что бы не писать вторую форму?
и ещё вопрос, если notice выдаёт, что переменна не определена, то достаточно присвоить пустую строку или надо обязательно присваивать значение? | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.03.2009 в 10:11)
| | Что значит одну для двух? Если эти формы как близнецы, то зачем два скрипта? Если это разные данные от клиента, то это две формы. А предупреждения возникают потому, что не определены переменные, к котрым вы обращаетесь, в вашем случае, это не пришла еще форма, не опрделена переменная в сессии.... Пишите грамотно, обращайтесь корректно, поймете соль - подавите вывод предупреждений. | |
|
|
| |
|