Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > вывод текста в разные строки по нажатии на button


Автор: optik 6.4.2008, 19:24
Код

<?php

echo "<form method=\"post\" action=\"\">";
echo "<input type=\"submit\" name=\"but1\" value=\"кнопка 1\">";
echo "<input type=\"submit\" name=\"but2\" value=\"кнопка 2\">";
echo "</form>";

if (isset($_POST['but1'])) 
{
    print "нажата кнопка 1<br>";

elseif(isset($_POST['but2'])) 
{
    echo "нажата кнопка 2";
}
?>


при выполнении этого кода при нажатии на баттом1 и баттом2 - идёт подмен фраз "нажата кнопка 1" и "нажата кнопка 2".

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

например при последовательном нажатии butom1,butom1,butom2,butom1,butom2 выводилось:

[кнопка 1][кнопка 2]
нажата кнопка 1
нажата кнопка 1
нажата кнопка 2
нажата кнопка 1
нажата кнопка 2

(при этом сами кнопки также должны быть отображены сверху)


Автор: Canarat 6.4.2008, 19:30
Без предварительной регистрации предыдущего нажатия не обойтись. В скрипт возможна передача только одной нажатой кнопки submit, воспользуйся небольшим количеством JS, например генерацией скрытых полей, или вообще все перевести на JS, если задача позволяет.

Автор: optik 6.4.2008, 19:32
Цитата(Canarat @ 6.4.2008,  19:30)
 воспользуйся небольшим количеством JS, например генерацией скрытых полей

у тебя есть пример этого?:

Автор: Canarat 6.4.2008, 19:36
JS это я погорячился, через сессии все куда проще:
Код

<?php
session_start();
if(!isset($_SESSION['butts'])) $_SESSION['butts']=array();
echo "<form method=\"post\" action=\"\">";
echo "<input type=\"submit\" name=\"but1\" value=\"кнопка 1\">";
echo "<input type=\"submit\" name=\"but2\" value=\"кнопка 2\">";
echo "</form>";
if(isset($_POST['but1'])) $_SESSION['butts'][]=1;
elseif(isset($_POST['but2'])) $_SESSION['butts'][]=2;
foreach($_SESSION['butts'] as $v){
echo "нажата кнопка $v<br>";
}
?>

Автор: skyboy 6.4.2008, 21:01
а зачем делать запрос к серверу, когда намного быстрее было бы делать это на стороне клиента средствами того же javascript?

Добавлено через 15 секунд
 smile 

Автор: Canarat 6.4.2008, 21:06
skyboy, дык собственно и я о том же.

Может правда топикстартер упростил задачу до примитива, потому что в такой постановке я смысла в кнопочках, пишуших строки на стороне клиента, не вижу smile

Автор: SelenIT 6.4.2008, 22:38
В заданной формулировке PHP ни при чем. Элементарный JS. Полный код, реализующий задачу:
Код

<input type="button" name="but1" value="кнопка 1" onclick="document.body.innerHTML+='нажата кнопка 1<br>'">
<input type="button" name="but2" value="кнопка 2" onclick="document.body.innerHTML+='нажата кнопка 2<br>'">
<br>

Автор: optik 7.4.2008, 16:18
хех, да, задачку я упростил, но видимо слишком уж упростил ;)
На самом деле по нажатию кнопок должны отображаться различные блоки, содержащие элементы html, переменные, в том числе двумерные массивы, ну например такой:
Код

echo "
<table>
for($i=0;$i<4;$i++)
{
      <tr><td>НОМЕР $i</td></tr>
      <tr><td>$arr[$i][$j]</td></tr>
}
</table>";


значения в массиве arr постоянно меняются и мне надо выводить их все в столбец, один под другим
в том случае как делал я (1й пост) у меня массив каждый раз перетирался и выводился поверх предыдущего  сверху страницы..
при такой постановке задачи мне подойдёт только решение Canarat'а (19.36) (через SESSION) или можно JS подключить? (ограничений на способ реализации задачи нет)

можете для этого примера (с массивом) маленький примерчик привести? (чтоб выводилось примерно так:

[button1][button2]

1  2  3  4
a  b  c  d 
f  d  e  w

1  2  3  4
e  r  w h 
j  q  a  q

1  2  3  4
q a  l   i
k u  t  n

и так далее, при этом нажимается кнопка 1, кнопку 2 вообще можно не рассматривать, для неё я сам сделаю, если разберусь как с 1й кнопкой сделать)

 


Автор: Feldmarschall 7.4.2008, 16:23
опять слишком упростил.
не нужны для твоей задачи никакие сессии и прочее.
всю логику отображения передаешь в адресной строке.

Но если сам не можешь сообразить, как сделать, и хочешь, чтобы за тебя написали, то будь добр описывать реальную задачу.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)