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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Какой метод выбрать? POST или GET  
:(
    Опции темы
Sliva
Дата 12.1.2008, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Добрый день  smile 
Вот опять проблема: на странице отображается список марок телефонов(они являются ссылками):
Sony Ericsson
Nokia 
Samsung
Simens 
....
При нажатии на любую из них появляется список всех моделей, которые есть у данной марки. Напротив каждой марки есть кнопка - удалить, изменить марку.
Так вот проблема, собственно в том, что я узнаю все конкретные модели выбранной марки с помощью id, который передаю методом GET. 
Код

// row[0] - id, row[1] - название модели
<a href = mark_mobile.php?id=$row[0]>$row[1]</a> 

Вот я и не могу понять как мне здесь организовать нажатие на кнопку, т.е. выполнение запроса, связанного с марками телефонов smile 
PM   Вверх
SqueeZe
Дата 12.1.2008, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Не очень понятно, что должны делать кнопки "удалить марку", "изменить марку".
PM MAIL ICQ   Вверх
Sliva
Дата 12.1.2008, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



На них навешивается запрос. При их нажатии - должен выполнятся запрос, который удаляет из базы или изменяет марку 
PM   Вверх
SqueeZe
Дата 12.1.2008, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Если это админка, то можно эти кнопки так же сделать ссылками

Код

<a href = mark_mobile.php?action=edit&id=$row[0]>Редактировать</a> 
<a href = mark_mobile.php?action=remove&id=$row[0]>Удалить</a> 


А в самом коде уже смотреть, какое действие нужно выполнить

Код

if(isset($_GET['action']) && $_GET['action'] != '') {
   switch($_GET['action']) {
      case 'edit':
             /// что делаем при редактировании
             break;
      case 'remove':
             /// что делаем при удалении
             break;
      default:
            /// просматриваем список моделей
            break;
   }
}


Это сообщение отредактировал(а) SqueeZe - 12.1.2008, 16:06
PM MAIL ICQ   Вверх
Sliva
Дата 12.1.2008, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата

Код

 <a href = mark_mobile.php?action=edit&id=$row[0]>Редактировать</a> 
<a href = mark_mobile.php?action=edit&id=$row[0]>Редактировать</a> 
<a href = mark_mobile.php?action=remove&id=$row[0]>Удалить</a>  


 А как действует action = edit? Что это такое, это событие??? Где можно почитать об этом? Спасибо за ваш ответ! Я новичок и поэтому про это ничего не знаю.
PM   Вверх
SqueeZe
Дата 12.1.2008, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Все, что идет после знака вопроса в URL имеет формат var1=value&var2=value&var3=value&varN=value

То есть это набор конструкций  переменная-значение, разделенных знаком амперсанда (&)

Все эти переменные можно получить в коде через глобальный массив $_GET['var'], где var, это имя одной из переменных.

То есть в данном случае в скрипте будет существовать переменная $_GET['action'], которой, в зависимости от ссылки будет присваиваться значение либо edit либо remove.

Switch распределяет действия в зависимости от значения переменной $_GET['action']. 

http://php-manual.info/switch.html
PM MAIL ICQ   Вверх
Sliva
Дата 12.1.2008, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



 smile Ой, какая прелесть!!! СПАСИБО!!!!! 
PM   Вверх
GeneralElectric
Дата 12.1.2008, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



К скриптам, которые производят изменения в базе данных, лучше обращаться методом POST.
Чтобы какой-нибудь робот случайно все ссылки не понажимал.

Поэтому я бы предложил сделать только ссылку на редактирование, а в форме редактирования добавить кнопку "удалить".
PM MAIL   Вверх
SqueeZe
Дата 12.1.2008, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(GeneralElectric @ 12.1.2008,  16:57)
К скриптам, которые производят изменения в базе данных, лучше обращаться методом POST.
Чтобы какой-нибудь робот случайно все ссылки не понажимал.

Поэтому я бы предложил сделать только ссылку на редактирование, а в форме редактирования добавить кнопку "удалить".

Не обязательно. Удаление действительно вещь такая, с которой стоит быть поаккуратнее. Но я обычно делаю ссылку так, как указал, но она отсылает пользователя на страничку "Are you sure?"  smile  , в которой пользователь подтверждает свой выбор через POST.
PM MAIL ICQ   Вверх
FractalizeR
Дата 12.1.2008, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

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



А можно вопрос Яваскриптом задавать по if(confirm()), чтобы без страницы обойтись.


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
Golda
Дата 12.1.2008, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

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



Можно и javascript-ом, но безопаснее POST, если иметь в виду тех же роботов. Они-то javascript выполнять не будут


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
GeneralElectric
Дата 12.1.2008, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Golda, ну, тут как яваскрипт применять. если onclick="return confirm("r u sure"), то понажимают.
а если ссылка пустая, а яваскриптом изменять адрес, то вполне можно.

Другое дело, что поисковики сейчас все активнее учатся выполнять яваскрипт...
Так что по мне надёжнее кнопка POST с onclick="return confirm() 
PM MAIL   Вверх
Golda
Дата 12.1.2008, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

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



GeneralElectric, можно и адрес менять javascript-ом, но тогда Вы не учиываете интересы реальных пользователей, у которых по разным причином может быть отключен javascript или не сработать из-за совершенно посторонней к этой ситуации javascript-ошибки на странице.


Цитата(GeneralElectric @  12.1.2008,  19:20 Найти цитируемый пост)
надёжнее кнопка POST с onclick="return confirm()  

 smile 




--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
bars80080
Дата 14.1.2008, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



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

?
PM MAIL WWW   Вверх
MoLeX
Дата 14.1.2008, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

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



bars80080 тут пока вопрос не об этом, не надо человека нагружать дополнительной инфой, пусть с начало с той разбереться)))


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
SelenIT
Дата 14.1.2008, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



Цитата(bars80080 @  14.1.2008,  11:07 Найти цитируемый пост)
однозначно должна быть защищена авторизацией от беспутных роботов

?

На авторизацию надейся, а сам не плошай. Кроме беспутных роботов, бывают еще каталогизаторы линков и т.п. - работающие с того же компа и под теми же правами, что легальный пользователь (т.к. типа для его удобства).


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Sliva
Дата 14.1.2008, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



 smile 
C удалением все отлично! А вот с редактированием - фигня какая-то получается. 
Код

echo "<td><a href =mark_mobile.php?id=$row[0]><b>$row[1]</b></a></td>
          <td><a href = mark_mobile.php?action=edit&id=$row[0]>Rename mark </a></td>
          <td><a href = mark_mobile.php?action=del&id=$row[0]>Delete mark</a></td>";

чтобы переименовать марку телефона должно быть какое-то поле ввода, но чтобы потом запомнить в переменную то, как пользователь переименовал марку - надо же воспользоваться методом POST?  smile 
Или я не права? 
Можно ли одновременно использовать POST  и  GET? 
PM   Вверх
Sliva
Дата 14.1.2008, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



 smile  буду делать с переходом на другую страницу - так ничего не получится. 
А как мне тогда со страницы, на которой я буду переименовывать марку вернуться на главную, где изображается список модели? 
PM   Вверх
GeneralElectric
Дата 14.1.2008, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Нет, POST  и  GET одновременно нельзя, разумеется.
Да тебе это и не нужно. Тебе нечего передавать ПОСТ-ом - у тебя формы нет.

В любом случае требуется ещё одна страница, где ты выведешь форму. Это может быть совсем отдельный php скрипт, или тот же самый. Отдельный проще для понимания. А чтобы писать в тот же самый, надо понимать, что когда он вызывается несколько раз, то практически это получаются разные сркипты. И каждый раз выполняется только часть, с помощью оператора if

PM MAIL   Вверх
smartov
Дата 14.1.2008, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

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



Цитата(Sliva @  14.1.2008,  17:30 Найти цитируемый пост)
А как мне тогда со страницы, на которой я буду переименовывать марку вернуться на главную, где изображается список модели?  

Код

header('Location: index.php'); exit;

PM MAIL   Вверх
GeneralElectric
Дата 14.1.2008, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Sliva @  14.1.2008,  18:30 Найти цитируемый пост)
А как мне тогда со страницы, на которой я буду переименовывать марку вернуться на главную, где изображается список модели?  

Тебе уже говорили об этом, вроде. После обработки ПОСТ запроса всегда надо делать редирект методом гед, с помощью header-а Location. А с его помощью ты можешь направить пользователя по любому адресу. Даже непечатному =)
PM MAIL   Вверх
Sliva
Дата 15.1.2008, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



а 
Код

header('Location: myscript.php'); exit;

должно стоять в конце кода скрипта?
 на что он реагирует? 
PM   Вверх
GeneralElectric
Дата 15.1.2008, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Скорее - ближе к началу =)
Во всяком случае - до того, как скрипт выведет хоть один символ в браузер.
Но если у тебя в скрипте только обработака ПОСТ запроса, и больше ничего, то да - в самом конце.
PM MAIL   Вверх
Sliva
Дата 15.1.2008, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Да, обработка POST-запроса и обычный sql - запрос. После того как я напишу 
Код

header('Location: http://localhost/myscript.php'); exit;

Будет переход на страницу myscript.php? И никакие кнопки с возвратом не нужны?
PM   Вверх
GeneralElectric
Дата 15.1.2008, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Будет.
Только после того, как ты перенесёшь свой проект с локалхоста на сервер с другим адресом, этот переход работать не будет.
Лучше подставить адрес хоста из переменной. Например - из $_SERVER['HTTP_HOST']
PM MAIL   Вверх
smartov
Дата 15.1.2008, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

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



Цитата(GeneralElectric @  15.1.2008,  10:04 Найти цитируемый пост)
Лучше подставить адрес хоста из переменной

Лучше вообще использовать относительный путь и не париться
Код

header('Location: /myscript.php'); exit;

PM MAIL   Вверх
GeneralElectric
Дата 15.1.2008, 14:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не лучше. По возможности всегда следует придерживаться стандарта.
А стандарт однозначно говорит о том, что в Location должен быть URI.

PM MAIL   Вверх
smartov
Дата 15.1.2008, 15:48 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

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



Цитата(GeneralElectric @  15.1.2008,  13:03 Найти цитируемый пост)
А стандарт однозначно говорит о том, что в Location должен быть URI.

И что?
Ознакомся с материалом http://ru.wikipedia.org/wiki/URI 
URI вовсе не обязывает писать протокол и полный путь.

Другое дело, что в php мануале написано, что HTTP1.1 якобы хочет асболютный URI, но там же написано что "некоторые клиенты работают и так" а по моему личному опыту - так и вовсе проблем не было.
PM MAIL   Вверх
SelenIT
Дата 15.1.2008, 16:08 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



Цитата(smartov @  15.1.2008,  15:48 Найти цитируемый пост)
по моему личному опыту - так и вовсе проблем не было.

По моему личному опыту были проблемы на IIS. Для PHP оно, конечно, экзотика, но кто знает, чего жизнь/начальство потребует...



--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
smartov
Дата 15.1.2008, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

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



SelenIT, извиняюсь. Действитиельно забыл указать, что мой личный опыт с PHP основан на общении исключительно в связке PHP+Apache.

Добавлено через 1 минуту и 23 секунды
Ибо php+iis изврат  smile  smile (А вот и не холивар!)

Это сообщение отредактировал(а) smartov - 15.1.2008, 18:16
PM MAIL   Вверх
SelenIT
Дата 15.1.2008, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



Когда-то давно Котеров писал фантастические вещи про редирект с относительным URI в Апаче. Насколько мне известно, новые версии Апача ничего такого себе не позволяют (только что проверил с Apache 2 под виндами - все как обычно, адрес поменялся). Тем не менее, стараюсь работать с полным адресом...

Цитата(smartov @  15.1.2008,  18:16 Найти цитируемый пост)
Ибо php+iis изврат

Не спорю, но не всегда удается объяснить это начальству/заказчику... smile 


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
smartov
Дата 16.1.2008, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

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



SelenIT, воистину фантастические  smile редирект без редиректа и прочее... наверное сильно зависит от веб-сервера
PM MAIL   Вверх
Sliva
Дата 16.1.2008, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Я прочитала, что 
Код

header ()

пишется в начале скрипта до html, так ведь? И когда я делаю переход по ссылке например, со странице page1.php на page2.php (а на page2.php пишу вначале 
Код

header ('Location: page1.php');
)
то даже этого  перехода  на page2. не происходит  smile  ничего не понимаю, я совсем запуталась здесь. 
как мне  с одной страницы попасть на другую, произвести там какие-то действия, а потом вернуться  обратно???
PM   Вверх
GeneralElectric
Дата 16.1.2008, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну как же не переходит??
Ты же сама написала, что с page2 возвращаться на page1! вот у тебя постоянно page1 и показывает! переходит, но переход-то у тебя ведет обратно! Программа делает ровно то, что ты от неё хочешь

Цитата(Sliva @  16.1.2008,  14:56 Найти цитируемый пост)
как мне  с одной страницы попасть на другую

нажав кнопку в форме.

Цитата(Sliva @  16.1.2008,  14:56 Найти цитируемый пост)
а потом вернуться  обратно??? 

header ('Location: ...
PM MAIL   Вверх
Sliva
Дата 16.1.2008, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



так я не попадаю на страницу page2  smile  если у меня написано в начале header ()
а если убираю в page2 header(), то выполняю все нужные действия на page2? только вернуться на page1 могу только с помощью кнопки "назад" в explore 

Это сообщение отредактировал(а) Sliva - 16.1.2008, 15:17
PM   Вверх
smartov
Дата 16.1.2008, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

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



Sliva, так ты определись что тебе сделать надо. Тебе нужно вернуться используя средства php или как?
Если ты вернешься с page2 на page1 испольщуя header, то естественно ничего из page2 тыв не увидишь. А если тебе нуджно увидеть page2 а потом (видимо чтобы пользователь сам) вернутся на page1 то делаешь ссылку 
Код

<a href="page1.html">Жмакай для перехода на page1</a>


Добавлено через 59 секунд
Sliva, Напиши последовательно алгоритм? что тебе надо сделать (в упрощенном виде)
PM MAIL   Вверх
GeneralElectric
Дата 16.1.2008, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Sliva, header() нужно делать ПОСЛЕ "нужных действий".
опиши структуру своих файлов и что они делают.

У тебя должно быть 3 файла;
1-й выводит список моделей, со ссылками, на второй.
2-й выводит форму редактирования модели. экшен формы - третй файл.
3-3 ничего не выводит! только обрабатывает форму и делает header(), перенаправляя на первый.



PM MAIL   Вверх
Sliva
Дата 16.1.2008, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



smile 
со ссылкой  я и буду делать, наверное. Я просто думала - может, можно как-то автоматически, выполнив нужные действия, вернуться на начальную страницу

Добавлено через 2 минуты и 19 секунд
1 файл - в нем ссылки на страницу редактирования
2 файл - там форма, которая редактирует
3 файла нет smile

Добавлено через 7 минут и 45 секунд
smartov, На главной странице отобржается список марок телефона, рядом список действий, которые можно делать (удалить, переименовать, создать) если щелкнуть по одной из марок, то получается переход на другую странцу, где, можно ввести новую марку или переименовать уже существующую. Вот, а после этого вернуться на главную странцу.  smile 

Да, и еще вопрос - можно как-то принудительно сделать refresh страницы? 

PM   Вверх
smartov
Дата 16.1.2008, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

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



Sliva, итого что тебе надо.
page1 - там все ясно. И где то там есть ссылка на page2 (убери пока что header из page2)

Далее. Есть файл page2 который выводит форму.

И в page2 у тебя есть функция или кусок когда, где обрабатываются данные из формы.
Вот туда то и надо вставить header....

Что-то типа
page2.php
Код

...
//-- Тут Куча кода, может даже и html
...

//-- Обработка данных из формы
if (!isempty($_GET['username'])) {

    ...
    //-- куча каких-то действий с данными из формы/
    ...

    //-- все действия были успешны - надо вернуться на page 1
    header('Location: page1.php');
    exit;
}
//-- Обработка данных из формы закончена

...
//Куча кода, может даже и html
...


Добавлено через 3 минуты и 50 секунд
Обьясняю принцип: если из формы ничего не пришло, то условие if (!isempty($_GET['username'])) не выполнится и перехода на page1 не будет! Зато если все пришло то условие станет true и переход на page1 будет

Это сообщение отредактировал(а) smartov - 16.1.2008, 15:40
PM MAIL   Вверх
Sliva
Дата 16.1.2008, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



 smile Спасибо!!!! Пробую! Кажется я поняла!

А насчет принудительного refresh ?  smile можно что-то сделать? 
PM   Вверх
GeneralElectric
Дата 16.1.2008, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Sliva @  16.1.2008,  15:20 Найти цитируемый пост)
Я просто думала - может, можно как-то автоматически, выполнив нужные действия, вернуться на начальную страницу

(устало)это делает header Location...

Лучше бы тебе сначала сделать с помощью трех файлов. 
У тебя задача из трех действий.
поэтому надо сначала сделать все три, добиться, чтобы они работали.
и тольк опотом упаковывать в один файл.

Опять ведь в форум посяпятся вопросы "я ничего не понимаю"...

PM MAIL   Вверх
MoLeX
Дата 16.1.2008, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

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



Sliva а ты какунибудь умную книжку читала, в смысле учебник и т.д.?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Sliva
Дата 16.1.2008, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



MoLeX, читала, даже 3, но там се на уровне элементарных примеров. Разборы типов данных, литература "для чайников".  
Может порекомендуете что-то посложнее? Но не совсем , а то сразу не разберусь  smile  
PM   Вверх
MoLeX
Дата 16.1.2008, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

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



Sliva конечно порекомендую.
1. Максим Кузнецов PHP5 на примерах (так до конца и не дочитал)
2. PHPBeginner (Учебник по основам PHP)
3. Лаура Томсон,Люк Веллинг РНР и Муsql (на основе примера)
4. Учебник PHP. Самоучитель (от SoftTime)
++ мануалы по PHP, качать лучше под ту версию пхп на которой ты тестишь скрипты.


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
GeneralElectric
Дата 16.1.2008, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я порекомендую. Сделай ТРИ файла. По одному на каждую операцию. Разберись, как оно работает, что куда перехдит и в какой последовательности.

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

Опытный разработчик кладет все в один. Не в два, а в один. Это очень удобно. Но по сути этот один все равно работает, как три разных. И поэтому сначала надо разобраться, а потом объединять
PM MAIL   Вверх
MoLeX
Дата 16.1.2008, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

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



эм, где та была тема на счет литиратуры. посмотри по форуму...

Добавлено через 2 минуты и 8 секунд
Цитата(GeneralElectric @  16.1.2008,  16:59 Найти цитируемый пост)
Опытный разработчик кладет все в один. Не в два, а в один. Это очень удобно. Но по сути этот один все равно работает, как три разных. И поэтому сначала надо разобраться, а потом объединять


ошибаешься, тут действет принцип 
Цитата

не клади все яйца в одну корзину


особенно принцип этот действует когда пишешь многофункциональную админку состоящию из несколько тысяч строк кода. для удобства модификации разбивается на несколько файлов.



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
smartov
Дата 16.1.2008, 17:02 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

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



Sliva, 
Цитата(Sliva @  16.1.2008,  14:50 Найти цитируемый пост)
А насчет принудительного refresh ?  smile можно что-то сделать?  

Ставь, пожалуйста, вопросы немного точнее  smile А то мне систематически приходится впадать в транс, чтобы угадать что ты имеешь в виду smile

Принудительный - это я так понимаю refresh страницы через определенные интервалы времени?
Если да - то это можно сделать через meta content refresh или через setTimeout и javascript (window.location.href=...).
PM MAIL   Вверх
MoLeX
Дата 16.1.2008, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

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



GeneralElectric и где это ты видел? по втей логики форумы (допустим их делают ОПЫТНЫЕ разработчики) должны все спихать в один файл? 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Sliva
Дата 16.1.2008, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



smartov,  smile  постараюсь 
Принудительный - это значит, я удаляю марку телефона с главной страницы (нажав по ссылке),  а она остается в таблице. Когда я обновляю страницу с помощью refresh в explore  - 
только тогда эта строка удаляется. Можно ли это сделать как-то программно? 

MoLeX, спасибо, поищу

GeneralElectric, пробую
PM   Вверх
smartov
Дата 16.1.2008, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

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



Sliva, а как ты удаляешь? Если я понимаю верно, ты же удаляешь с переходом на другую страницу (на другой php) откуда потом просто возвращаешься на предыдущую?
Т.е. на page1.php есть ссылки типа
Код

<a href="page2.php?action=delete&phone_id=28">Delete this phone</a>

И собственно при переходе на page2.php с этими параметрами телефон удаляется из базе а тебя редиректит назад на page1.php

Если в этом случае ты на page1 все еще видишь удаленный телефон - значит сработал кеш. Чтобы вынудить бразуре доставать страничку заново пропиши в начале page1.php
Код

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past

Что тоже написано на страничке http://ua.php.net/manual/ru/function.header.php
PM MAIL   Вверх
Sliva
Дата 16.1.2008, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата

Sliva, а как ты удаляешь? Если я понимаю верно, ты же удаляешь с переходом на другую страницу (на другой php) откуда потом просто возвращаешься на предыдущую?

Я так делаю с переименованием телефона. Сейчас попробую прописать как ты написал  smile 

А с удалением - выполняется запрос на этой же странице, можно же как-то после срабатывания запроса обновить страницу?

Добавлено через 5 минут и 9 секунд
Код

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past

Классно! С переименованием работает!
PM   Вверх
smartov
Дата 16.1.2008, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

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



Цитата(Sliva @  16.1.2008,  18:24 Найти цитируемый пост)
А с удалением - выполняется запрос на этой же странице, можно же как-то после срабатывания запроса обновить страницу?

А зачем. Ты просто в странице видать делаешь неверно. Сначала выбираешь телефоны из базы в какую-то переменку чтобы показать, а потом обрабатываешь события типа delete.
Надо наоборот. Сначала обработать событие, а только потом выбрать телефоны из базы для показа
PM MAIL   Вверх
GeneralElectric
Дата 16.1.2008, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



жесть =)
PM MAIL   Вверх
SelenIT
Дата 17.1.2008, 02:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



Цитата(MoLeX @  16.1.2008,  16:58 Найти цитируемый пост)
3. Лаура Томсон,Люк Веллинг РНР и Муsql

Только не второе издание! Оно заслужило справедливые нарекания как рассадник жутких ересей (навроде stripslashes после вывода из БД). В третьем издании (и, надеюсь, последующих) такого вопиющего бреда (по отзывам) вроде нет, но особого доверия к авторам, после такого прошлого - увы, тоже...

Более достойные книги названы здесь. А на книги по ПХП4 даже смотреть не стоит.

Цитата(MoLeX @  16.1.2008,  16:58 Найти цитируемый пост)
мануалы по PHP, качать лучше под ту версию пхп на которой ты тестишь скрипты.

Насколько я в курсе, мануалов "под конкретную версию" не существует - они все под последнюю на момент создания, с указанием истории изменений в поведении той или иной функции/фичи. Поэтому самой полной и исчерпывающей всегда является самая последняя версия мануала - онлайновая. Тем более, что львиная доля ее русифицирована.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Sliva
Дата 17.1.2008, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



smartov, дело в том, что у меня не событие delete, а запрос с delete. 
Сначала я запросом вывожу все что есть(все марки, которые есть в базе), напротив каждой марки ссылочка, кликнув по которой удаляется запросом та марка, напротив которой я кликнула smile  
PM   Вверх
GeneralElectric
Дата 17.1.2008, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Sliva, я тебе уже раз 5 говорил: все, что ты описываешь - это РАЗНЫЕ скрипты. РАЗНЫЕ вызовы одного и того же скрипта.
Когда ты, наконец, это поймешь?
Выводит марки один скрипт. Удаляет - второй скрипт. Выводит снова - третий!
Выполняется оно не так, как написано у тебя - подряд, сверху вниз. А вызывается каждый раз заново!!!


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


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

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



Sliva, а какая страничка выводит список мобилок (имя файла плиз - чточто.php), а к какой идет запрос на удаление?
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.1496 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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