Jump to content
  • 0

передача данных из формы


LSTI
 Share

Question

Имеется форма месяцев:

$m = date("m", time()); 
$y = date("Y", time());
$d = date("d", $time);
$month = array("1"=>"Січень","2"=>"Лютий","3"=>"Березень","4"=>"Квітень","5"=>"Травень", "6"=>"Червень", "7"=>"Липень","8"=>"Серпень","9"=>"Вересень","10"=>"Жовтень","11"=>"Листопад","12"=>"Грудень");

echo "<center><form action='index.php?action=search' method='POST'>
<select name='month' style='width:130px'>";
$fm=$m;

echo "
<option value='$fm'>Січень</option>
<option value='$fm'>Лютий</option>
<option value='$fm'>Березень</option>
<option value='$fm'>Квітень</option>
<option value='$fm'>Травень</option>
<option value='$fm'>Червень</option>
<option value='$fm'>Липень</option>
<option value='$fm'>Серпень</option>
<option value='$fm'>Вересень</option>
<option value='$fm'>Жовтень</option>
<option value='$fm'>Листопад</option>
<option value='$fm'>Грудень</option>";

$fm = $select_fm;
echo " </select></FORM>";

и PHP функция календаря cal_news($m,$y) .

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

Link to comment
Share on other sites

Recommended Posts

  • 0

Дам наводку:

http://absolvo.ru/temp/090108.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>òåñò</title>
</head>

<body>

<?php
switch ($act) {
case 1:
echo 'Вас зовут ' .$nick;
break;
default:
echo '
<form name="test" method="post" action="?act=1">
Как вас зовут? - <input name="nick" type="text" size="40">
<input type="submit" value="Отправить">
</form>
';
break;
}

?>
</body>
</html>

Перемещено в раздел: "PHP"

Link to comment
Share on other sites

  • 0

Спасибо, но не совсем то, кажется.

У меня ведь выбор из списка, без дополнительного нажатия кнопки. И настройка месяца и обновление календаря должно происходить без обновления всей страницы: просто обновился календарь и все.

Link to comment
Share on other sites

  • 0

Это что-то очень сложно. Должно быть попроще. Ответ лежит где-то на поверхности путем использования каких-то переменных формы в PHP.Но, к сожалению нетвердо знаю формы , а в PHP освоила только взаимодействие с БД.

Link to comment
Share on other sites

  • 0

Оставим шпильки - работаем на результат. Не может быть, чтобы формы существовали только для того, чтобы на экране показать одну из строчек, предложенных в массиве.

Ну да, я очень рада, что на экране показался січень. А какая переменная руководит?

value='$fm' - вот это ж она и есть, наверное. А где ж запоминается? Или это элемент массива?

Link to comment
Share on other sites

  • 0

смотри.. когда ты пишешь форму - указываешь метод отправки данных

method="" POST или GET ... это для PHP и хранятся они соответственно в $_POST и $_GET... . если же тебе надо чтобы без обновления страницы - читаешь яваскрипт - смотришь как получить эти переменные оттуда... в режиме онлайн так сказать... вообще думаю просто - там ведь есть name у объектов.. ну и соответственно

Formname.ObjactName.value - значение определенного поля.. дальше думай. я яву не так часто копаю чтоб много рассказать

Link to comment
Share on other sites

  • 0

Ну вот, что-то вроде такого:

<SCRIPT LANGUAGE="JavaScript">
<!--
function setToday() {
var now = new Date();
var day = now.getDate();
var month = now.getMonth();
var year = now.getYear();
this.focusDay = day;
document.calControl.month.selectedIndex = month;
document.calControl.year.value = year;
displayCalendar(month, year);
}
function isFourDigitYear(year) {
if (year.length != 4) {
alert ("Год может состоять только из 4 цифр.");
document.calControl.year.select();
document.calControl.year.focus();
} else { return true; }
}
function selectDate() {
var year = document.calControl.year.value;
if (isFourDigitYear(year)) {
var day = 0;
var month = document.calControl.month.selectedIndex;
displayCalendar(month, year);
}
}
function setPreviousYear() {
var year = document.calControl.year.value;
if (isFourDigitYear(year)) {
var day = 0;
var month = document.calControl.month.selectedIndex;
year--;
document.calControl.year.value = year;
displayCalendar(month, year);
}
}
function setPreviousMonth() {
var year = document.calControl.year.value;
if (isFourDigitYear(year)) {
var day = 0;
var month = document.calControl.month.selectedIndex;
if (month == 0) {
month = 11;
if (year > 1000) {
year--;
document.calControl.year.value = year;
}
} else { month--; }
document.calControl.month.selectedIndex = month;
displayCalendar(month, year);
}
}
function setNextMonth() {
var year = document.calControl.year.value;
if (isFourDigitYear(year)) {
var day = 0;
var month = document.calControl.month.selectedIndex;
if (month == 11) {
month = 0;
year++;
document.calControl.year.value = year;
} else { month++; }
document.calControl.month.selectedIndex = month;
displayCalendar(month, year);
}
}
function setNextYear() {
var year = document.calControl.year.value;
if (isFourDigitYear(year)) {
var day = 0;
var month = document.calControl.month.selectedIndex;
year++;
document.calControl.year.value = year;
displayCalendar(month, year);
}
}
function displayCalendar(month, year) {
month = parseInt(month);
year = parseInt(year);
var i = 0;
var days = getDaysInMonth(month+1,year);
var firstOfMonth = new Date (year, month, 1);
var startingPos = firstOfMonth.getDay();
days += startingPos;
document.calButtons.calPage.value = " Пн Вт Ср Чт Пт Сб Вс";
document.calButtons.calPage.value += "n ——————--";
for (i = 0; i < startingPos; i++) {
if ( i%7 == 0 ) document.calButtons.calPage.value += "n ";
document.calButtons.calPage.value += " ";
}
for (i = startingPos; i < days; i++) {
if ( i%7 == 0 ) document.calButtons.calPage.value += "n ";
if (i-startingPos+1 < 10)
document.calButtons.calPage.value += "0";
document.calButtons.calPage.value += i-startingPos+1;
document.calButtons.calPage.value += " ";
}
for (i=days; i<42; i++) {
if ( i%7 == 0 ) document.calButtons.calPage.value += "n ";
document.calButtons.calPage.value += " ";
}
document.calControl.Go.focus();
}
function getDaysInMonth(month,year) {
var days;
if (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12) days=31;
else if (month==4 || month==6 || month==9 || month==11) days=30;
else if (month==2) {
if (isLeapYear(year)) { days=29; }
else { days=28; }
}
return (days);
}
function isLeapYear (Year) {
if (((Year % 4)==0) && ((Year % 100)!=0) || ((Year % 400)==0)) {
return (true);
} else { return (false); }
}
// -->
</SCRIPT>
<BODY onLoad="setToday()">
<CENTER>
<FORM NAME="calControl" onSubmit="return false;">
<TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0>
<TR><TD COLSPAN=7>
<CENTER>
<SELECT NAME="month" onChange="selectDate()">
<OPTION>Январь
<OPTION>Февраль
<OPTION>Март
<OPTION>Апрель
<OPTION>Май
<OPTION>Июнь
<OPTION>Июль
<OPTION>Август
<OPTION>Сентябрь
<OPTION>Октябрь
<OPTION>Ноябрь
<OPTION>Декабрь
</SELECT>
<INPUT NAME="year" TYPE=TEXT SIZE=4 MAXLENGTH=4>
<INPUT TYPE="button" NAME="Go" value="Считать" onClick="selectDate()">
</CENTER>
</TD>
</TR>
</FORM>
<FORM NAME="calButtons">
<TR><TD align="center"><textarea FONT="Courier" NAME="calPage" WRAP=no ROWS=8 COLS=22></textarea></TD><TR><TD><CENTER>
<INPUT TYPE=BUTTON NAME="previousYear" VALUE=" << " onClick="setPreviousYear()">
<INPUT TYPE=BUTTON NAME="previousYear" VALUE=" < " onClick="setPreviousMonth()">
<INPUT TYPE=BUTTON NAME="previousYear" VALUE="Сегодня" onClick="setToday()">
<INPUT TYPE=BUTTON NAME="previousYear" VALUE=" > " onClick="setNextMonth()">
<INPUT TYPE=BUTTON NAME="previousYear" VALUE=" >> " onClick="setNextYear()">
</CENTER></TD></TR>
</TABLE></FORM></body>

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

А мне нужна визуальная настройка пользователя на любой месяц.

Link to comment
Share on other sites

  • 0
смотри.. когда ты пишешь форму - указываешь метод отправки данных

method="" POST или GET ... это для PHP и хранятся они соответственно в $_POST и $_GET... . если же тебе надо чтобы без обновления страницы - читаешь яваскрипт - смотришь как получить эти переменные оттуда... в режиме онлайн так сказать... вообще думаю просто - там ведь есть name у объектов.. ну и соответственно

Formname.ObjactName.value - значение определенного поля.. дальше думай. я яву не так часто копаю чтоб много рассказать

Как я понимаю $_POST - это массив, который передается на сервер. А пользователь выбрал какой-то элемент. Где номер этого элемента?

Пытаюсь командой echo " .$_POST."; распечатать ЧТО-ТО - получаю результат: .ARRAY.

а echo " .$_POST[1]."; дает . .

Link to comment
Share on other sites

  • 0
Как я понимаю $_POST - это массив, который передается на сервер. А пользователь выбрал какой-то элемент. Где номер этого элемента?

$_POST - массив, который передан методом POST. аналогично есть GET, COOKIE и SESSION. REQUEST объединяет эти массивы (кроме сессий если не ошибаюсь).

когда передаем форму, target'у формы передаются пары NAME=VALUE из соответствующих полей формы. т.е. итд. массив получается фактически хэшем (хэш это массив, где индексы не числовые, а именованные). $_POST['name1'] будет содержать значение инпута name="name1".

Link to comment
Share on other sites

  • 0

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

<?php

function echo_r($arr) {

$str = '

'."n";

$str .= '

'."n";

$str .= '

'."n";

foreach($arr as $key => $val) {$str .= '

'."n";}

$str .= '

'."n";

$str .= '

КлючЗначение
'.$key.''.$val.'
'."n";

echo($str);

}

?>

Link to comment
Share on other sites

  • 0

Ужас! Какой input, у меня же option value. И не хочу я печатать массив, это для контроля работы формы я хочу пропечатать выбранное значение. Чтобы быть уверенной, что запомнилось правильно и я могу с ним дальше работать.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy