Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не могу дописать условие 
:(
    Опции темы
knut
Дата 12.3.2008, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



добрый день.
ситуация сслед.
есть один обший .php файл(test.php)  а на нем батон сабмит. и  двa button a
Код

<html>
    <form name = "Form" action="test.php" method="POST">
        <input type="submit" value="Add"/>
        <input type="submit" value="Remove"/>
    </form>
</html>

и две функции 
Код


function Showtree($parentId,$lvl){//...}  создает дерево 
function addtodatabase($title,$pid){//}   добавляет ветку()
if(//если клик а не рефреш)
addtodatabase("partition5",0);
Showtree(0,0);

так проблема у меня в том что у меня у меня функция addtodatabase вызовается и при нажатие на баттон и при 
рефреше.
как сделать так чтоб он вызовался толко при нажатие на  button

p.s если я с названием темы ляпнул сорри



--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
Feldmarschall
Дата 12.3.2008, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Код

function Showtree($parentId,$lvl){//...}  создает дерево 
function addtodatabase($title,$pid){//}   добавляет ветку()
if($_SERVER['REQUEST_METHOD']=='POST') { 
  addtodatabase("partition5",0);
  header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); 
  exit;
}
Showtree(0,0);


непонятно только, зачем оборачивать в функцию код, который выполняется ровно 1 раз
PM   Вверх
comcon1
Дата 12.3.2008, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: нет
Всего: 17



а в чОм проблема проверить, какую кнопку сабмитит??


--------------------
PM MAIL   Вверх
vintyara
Дата 12.3.2008, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 24.3.2005
Где: Ode$$a

Репутация: 1
Всего: 2



один из вариантов - 
1. нажали на кнопку
2. страница перегрузилась и начался выполнятся пхп код. вот тут, после выполнения того что нам нада, в конце добавить редирект еще один (через тот же header("Location: куданада");). тогда небужет проблемы с рефрешем и повторной отправки данных.
PM MAIL ICQ   Вверх
knut
Дата 12.3.2008, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



comcon1, 
Цитата

а в чОм проблема проверить, какую кнопку сабмитит??

проблема в том как сделать так чтоб функция addtodatabase если рефреш не выполнялас a 
толко при нажатие на баттон.

Feldmarschall, 
вот такой варрнинг получил
Цитата

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\test.php:11) in C:\xampp\htdocs\test.php on line 71

вопрос 
вот при наличие такого иф а
if($_SERVER['REQUEST_METHOD']=='POST')  рефреш не удовлетворяет этому иф у?
у меня функция addtodatabase вызовется даже тогда если был рефреш
 


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
comcon1
Дата 12.3.2008, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: нет
Всего: 17



Цитата

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\test.php:11) in C:\xampp\htdocs\test.php on line 71

если ты не выведешь в HTML ни одного символа до выполнения header, даже пробел, то варнинг исчезнет. Попробуй.


--------------------
PM MAIL   Вверх
knut
Дата 13.3.2008, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



comcon1, 
решил проблему  буферизацией таким способом (хотел бы услышать от вас коментарии по этому методу чвляется ли он хорошым решениям)
Код

ob_start();
if($_SERVER['REQUEST_METHOD']=='POST') {
            addtodatabase("partition4.4",4);
            header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); 
            exit;
}
ob_end_flush();


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


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
ksnk
Дата 13.3.2008, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(knut @  13.3.2008,  12:59 Найти цитируемый пост)
толко осталась одна мальенкая проблема как мне узнать был нажат add или remove? 

Нужно у кнопок поставить name, тогда в POST'е появится нужное поле
Код

<form ...>
...
<input type="submit" name="delete" value="delete">
<input type="submit" name="add" value="add">

</form>


Это сообщение отредактировал(а) ksnk - 13.3.2008, 13:07


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Feldmarschall
Дата 13.3.2008, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



knut, решение с буферизацией является просто ненужным.
Скорее всего, функция addtodatabase что-то выводит. но пользователь все равно этого не увидит. поэтому и выводить ничего не нужно.
а если ничего не выводить, то и ошибка не появится.

Это сообщение отредактировал(а) Feldmarschall - 13.3.2008, 13:20
PM   Вверх
comcon1
Дата 13.3.2008, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: нет
Всего: 17



ob_start и ob_end_flush - стандартное решение для таких случаев. Но если можешь избавиться от выводов лишних пробелов - то это лучше. У меня иногда бывал такой косяк. Я редактирую PHP в ultraedit-е (когда я в винде), так вот когда кодировка у меня UTF - он вставляет какие=то невидимые метасимволы в начало файла - вываливается твоя ошибка. Переводишь UTF->ASCII - метасимволы исчезают вместе с ошибкой.


--------------------
PM MAIL   Вверх
knut
Дата 13.3.2008, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



ksnk, 
я так и зделал.
Код

<html>
        <form name = "Form" action="test.php" method="POST">
            <input type="submit" name = "AddNode" value="Add"/>
            <input type="submit" name="RemoveRemove" value="Remove"/>            
        </form>
</html>

и после этого
Код

if($_SERVER['REQUEST_METHOD']=='POST') {
    if($POST['name'] = "AddNode"){
            addtodatabase("partition4.4",4);
            header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); 
            exit;
    }
    
}

но не работает 


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
Canarat
Дата 13.3.2008, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 11.3.2008
Где: Каспий

Репутация: 5
Всего: 5



Цитата

    if($POST['name'] = "AddNode"){

Нет такого суперглобального массива, есть $_POST smile
PM MAIL   Вверх
knut
Дата 13.3.2008, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



Код

if($_SERVER['REQUEST_METHOD']=='POST') {
    if($_POST['name'] = "AddNode"){
            addtodatabase("partition4.4",4);
            header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); 
            exit;
    }
    
}

тот же результат _POST['name'] пустой


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
Canarat
Дата 13.3.2008, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 11.3.2008
Где: Каспий

Репутация: 5
Всего: 5



Цитата

 if($_POST['name'] = "AddNode"){

У тебя другое.
Код

 if($_POST['AddNode'] == "Add"){


Это сообщение отредактировал(а) Canarat - 13.3.2008, 16:02
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0607 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.