Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Выполнение PHP кода по OnClick  (Прочитано 82151 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Dukalys
Гость
« : 31-03-2009 04:09 » 

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

Код:
<html>

<head>
  <title></title>
</head>

<body>

<input type="button" value="Установить $b" name="but" onclick="<?php $b="000"?>"></input><br>
<input type="button" value="Вывести $b" name="wr" onclick="<?php echo &#39;$b=&#39;.$b; ?>"></input><br>
<?php
echo 
$b;
?>



</body>

</html>
Вот собственно весь код примера. как только отправляешь на выполнение срабатывает (само по себе) событие онклик у кнопки but и распечатывается 000 . кнопка 2 по онклику вообще ничего не делает (мм странно).
Может быть у когонибудь есть какие либо соображения на этот счёт? или это своеобразная дискриминация пхп html-ем.
Такое ощущение что в данном случае пхп который стоит в онклик воспринимается как отдельно идущий пхп тег не по какому событию и тогда onclick Остаётся пустым и ничего не выполняется! но в таком случае здесь ничего нельзя сделать мб попробовать через ссылку href ...
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 31-03-2009 06:10 » 

Dukalys, php скрипты выполняются на, не поверишь, сервере.
В клиентской части выполняется js-скрипт, который должен быть загружен вместе со страницей.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 31-03-2009 06:14 » 

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

1. Уже много-много лет как параметры запроса не регистрируются как самостоятельные переменные PHP. Вместо этого есть массивы $_GET, $_POST и пр. Вместо $b используй $_GET['b'].

2. Пример у тебя абсолютно некорректный. Замени onclick на href и подставь в начало "?". Должно получиться типа href="?b=000".

Sla, поддерживаю.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dukalys
Гость
« Ответ #3 : 31-03-2009 07:42 » 

Цитата
php скрипты выполняются на, не поверишь, сервере.
я сказал чтото противоречащее в этом отношении? я хочу чтобы на сервере по 1 кнопке выполнится код . по 2ой кнопке выполнился код по выводу результат. причём здесь клиентская часть ... Похоже это  получить невозможно без перезагрузки страницы. RXL, - вы мне предлагаете же перегружать страницу?? не совсем понял что вы имеете ввиду в чём разница в данной ситуации ссылка кнопка  всёравно пхп в href выполняется(заносится информация в в переменную) до!!! нажатия на ссылку ну это и понятно потомучто выполняется пхп выполняется на сервере и Не может быть выполнено получается по нажатию на ссулку/ кнопку бред какойто
Код:
<html>

<head>
  <title></title>
</head>

<body>

<a href="<?php $b="?b=000"?>" target="parent">устанавливаем</a><br>
<a href="<?php echo &#39;$b=&#39;.$_GET[&#39;b&#39;]; ?>">получаем</a><br>
<?php
echo 
"<br>".$b;
?>



</body>

</html>
Вы код то покрутите причём здесь Гет вообще хоть гет хоть амлет. он идёт увидел тег пхп выполнил на сервере и записал в переменную значение. а нужно чтобы этот код он выполнял В ЭТОЙ странице!!! без перегрузки страницы!!! по нажатию кнопки!!! я и сразу заявил возможно ли это?? и прикрасно понимаю где выполняется пхп.
Отсюда вопрос если это реализовать невозможно  => с помощью яваскриптов тоже не получится потомучто мне не только переменную надо установить но и выполнить пользовательские функции пхп. с яваС вообще слабо знаком, мои догадки верны что это нереально сделать??(ещё раз повторю код пхп на ява испольнить)
Записан
Dukalys
Гость
« Ответ #4 : 31-03-2009 07:53 » 

вообще из чего все корни то идут, может подскажете и я себе выдумываю всякую чушь :
есть форма регистрации
Код:
Табличко
Логин                     поле
почта                     поле
айск                        поле
рисунок рефреш со ссылкой   поле(можно плавающ фрейм) в общем этот кусок формируется в неком пхп файле и инклюдируется в форму!! необходимо чтобы по нажатию на этот рефреш исполнялась генерация  (пхп) картинки и заместо старой подгружалась новая ! при этом поля формы логин и т.д. не должны портиться!!!!
код                         поле
ОК
как я реализовал эту капчу? картинку поместил в iframe src="$way_img" id="imag" и теперь по картинке рефреш я делаю обновить этот фрейм c  помощью ява функции  ...location.reload Внимание этот фрейм действительно обновляется !!!! но чтобы обновлялась картинка необходимо и обновить путь к картинке $way_img вот это я реализовать без перегрузки страницы и немогу
P.S. $way_img формируется пользовательской пхп функцией neww
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 31-03-2009 07:59 » 

Dukalys, давай, для начала, расставим знаки препинания в твоем посте? Это же читать не возможно! Не говоря уже о том, чтобы понять.

Еще раз:
1. PHP-код никогда не выполняется в браузере.
2. В браузере ты можешь выполнить JavaScript-код.
3. Почитай стандарт HTML, чтобы понимать назначение тех или иных атрибутов HTML-тегов.
4. Почитай, что такое URL и в какой форме его надо задавать на странице, чтобы получить нужный результат.
5. Не нравится перезагрузка страницы - почитай про AJAX (но с низким уровнем знания это будет быстрее во вред).
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 31-03-2009 08:09 » 

Код:
<img id="captcha_img" src="/captcha.php" width="200" height="100" />

<a href="javascript:void(0);" onclick="getElementById('captcha_img').src = '/captcha.php?rnd=' + Math.random();">обновить</a>

1. href такого вида обязателен.
2. параметр rnd нужен как пополнительное средство борьбы с криво настроенными браузерами и проксями - чтобы картинка не из кеша загружалась, а с сервера.
3. атрибут src в img надо определять всегда - IE откажется работать, если его не будет.
« Последнее редактирование: 31-03-2009 08:11 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #7 : 31-03-2009 08:12 » 

Dukalys, отвечаю на твой вопрос, нет не перезагружаю страницу не возможно выполнить код пхп. Как выполнить то что ты хочешь тебе сказали посмотреть на AJAX. Что касается того что ты решил придумать, может стоит взглянуть как уже реализованы методы регистрации и каптчи?
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 31-03-2009 08:13 » 

McZim, картинки и фреймы можно менять без перезагрузки всей страницы и без AJAX.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #9 : 31-03-2009 08:16 » 

Ромка, да можно хоть хуем об стол) Но делать надо нормально а не урывками от туда урывками от сюда!

Поясню, если человек собрался делать некую форму регистрации, то нужно подойти к этому делу со всей ответственностью и выбрать подходящую технологию(или несколько) а не выдумывать одноколесный велосипед.
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Dukalys
Гость
« Ответ #10 : 31-03-2009 12:14 » 

по captcha.php генерируется и открывается сгенерированная картинка вот в таком тексте
Код:
яШяа�JFIF������яю�;CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 15 яЫ�C�5%(/(!5/+/<95?P…WPIIPЈu{a…БЄЛИѕЄє·ХряяХвяж·єяяяяяяяяяОяяяяяяяяяяяЫ�C9<<� "�яД����������� яД�µ�
т.е какбы текст имейджа
занёс это дело в тег img
Код:
<img src="captcha.php">

соответственно никакой картинкой и не пахнет показывается значок нет картинки квадратик такой ...
в свойствах изображения пишется :
Свойства изображения
______________________________
Адрес                     ***/captcha.php
Тип                         text/html
Размер изображения   24*24
Альтернативный текст отсутствует .

фффчём проблема? подскажите пожалуйста.
спасибо за верхние посты . переделываю капчу полностью, просто у меня многомодульная структура и я уже если честно запутался  Жаль
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 31-03-2009 12:26 » 

В MIME дело - должно быть "image/jpeg".
Еще проверь, не вставляет ли captcha.php какого-либо мусора, кроме картинки. Проверить просто: закомментировать вывод картинки и скачать результат в файл. Нормальный файл будет нулевой длины.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dukalys
Гость
« Ответ #12 : 31-03-2009 12:42 » 

Да должно быть Imag вот на это и обратил собственно внимание. с этим разобрался оказывается ну в общем опечаточка была кое-где.
Уже почти всё получилось, НО по отдельности !! при соединии не хочет работать
Собственно какая тут ошибка ? (Форма регистрации)
Код:
Логин                  поле
Пароль                поле
<?php
//Инклюдируем скрипт в котором получаем $way_img  = **/captcha_image.php?img=gdfte75hfj832 i t.d.
        // где captcha_image.php открывает сгенерированную картинку
include_once($_SERVER["DOCUMENT_ROOT"]."php/captcha/demo.php");
?>

<tr>
<td align="right" valign="middle">
               <a href="javascript:void(0);"
                        onclick="getElementById('captcha_img').src = './captcha/captcha_image.php?rnd=' + Math.random();" >
               <img src="http://domen/images/buttons/refresh.gif" alt="обновить" >             
               </a>
        </td>
<td align="left" width="50">
                <img src="<?php echo $way_img?>" id="captcha_img">
</tr>

т.е. При Заходе в форму регистрации генерируется demo.php некая картинка которую мы открываем с помощью ?captcha_image.php?img=h4hg32f2gh322h Тут всё правильно картинка есть
Далее жмём на ссылку - должно выполниться
getElementById('captcha_img').src = './captcha/captcha_image.php?rnd=' + Math.random();
т.е. в картинку с id=captcha_img, в src записываем ./captcha/captcha_image.php?rnd=34234324 и должно происходить обновление картинки, А НЕ ПРОИСХОДИТ! (из браузера отдельно проверял ссылку которую присваиваю в имейдж она работает и генерит картинку ./captcha/captcha_image.php?rnd=34234324)

P.S. происходит странная ситуация - пропадает полностью столбик(<td>) с картинкой (мистика прямо) . Что значит пропадает ?? предстваьте таблицу(boarder=1) "Форма регистрации" ---- много строк и 2 столбца
1 столбец Логин , пароль и тд 2 столбец с полями. дак вот пропадает столбец(2) из строки  с картинкой , почему я решил что он пропадает ? да потомучто пропадает даже рамка boarder вокруг него при этом 1ый столбец этой строки как был так и есть. я уже не знаю что за мистика.
« Последнее редактирование: 31-03-2009 12:55 от Dukalys » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 31-03-2009 12:50 » 

man getElementById Улыбаюсь
интересно а в каком месте работает?

Не должно работать
где у тебя элемент с описанным id
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dukalys
Гость
« Ответ #14 : 31-03-2009 12:54 » 

Код:
<img src="<?php echo $way_img?>" id="captcha_img">
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 31-03-2009 12:55 » 

Sla, то я дал неверный пример выше.

Надо: document.getElementById
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dukalys
Гость
« Ответ #16 : 31-03-2009 13:03 » 

Да воть щас пошло похоже ))) насколько я рад. щас работает на простом примере. сейчас буду восстанавливать закоментированный функционал!!! всем спасибо, без вас я бы год это дело разбирал или просто бы останвился на обновлении всей формы регистрации с потерей данных в полях.
Записан
lax
Гость
« Ответ #17 : 22-07-2009 05:55 » 

Появился вопрос по этой теме, нужен совет.

Как при нажатии (например на изображение) запустить скрипт php (<?php $ipicnum="a" ?>, просто присваивание другого значения переменной) не покидая данной страницы.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #18 : 22-07-2009 06:08 » 

почитай с самого начала, чтоб не повторяться
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #19 : 22-07-2009 06:23 » 

"Маразм крепчал." (с)
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
lax
Гость
« Ответ #20 : 22-07-2009 06:27 » 

С самого прочитал раз 10 и не особо стало понятно.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #21 : 22-07-2009 06:32 » 

итак,
Читай ВСЛУХ
https://forum.shelek.ru/index.php/topic,20184.msg202713.html#msg202713

здесь - повторение
https://forum.shelek.ru/index.php/topic,20184.msg202719.html#msg202719


А теперь мы готовы слушать вопросы

Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines