Вход

View Full Version : работа с формой отправки


Kxu
16.02.2006, 11:18
Вот я тут тоже с запросиком бьюсь!!!! ПОСМОТРИТЕ----<input type=\"checkbox\" name=\"c31\" value=\"$c31\">------так проблема в том, что значения никакие не передаются из флага...ПОЧЕМУ!!!!!вроде с виду такая невинная штучка, а так раздражает...как передать значение базе--отмечено или нет...
НО!!! есть такая вещь $c31 = intval(isset($_REQUEST['c31']));
я только не знаю куда её всунуть, ведь значение из форме по value передается, неужели для такой мелочи JS надо писать...ну не верю.....Кто-нидь знает!!!!!!

Soniks
16.02.2006, 16:36
Kxu у вас должно быть две части скрипта одна форма для заполнения, в ней находиться вашь checkbox
<input type=\"checkbox\" name=\"c31\" value=\"$c31\">
при условии, что вы поставили галку на нем при отправки формы и переменная $c31 не пустая, то это все передасться во вторую часть скрипта, где это все обрабатываеться, эта переменная теперь будет конфигурировать как $_REQUEST['c31'] и вставляете вы ее уже куда хотите и делаете нужные вам проверки.

Kxu
16.02.2006, 18:05
Soniks , я не могу больше, но не работает все равно, может ошибка в базе, как определить значение атрибута в базе, которое передается по value из checkbox, вроде все так и есть в программе, я бы так и не замарачивалась с самого начала, так все ровно и получилось, но в чем то прокол все равно????

function add_Flat() {

echo "<form enctype=\"multipart/form-data\" action=\"index.php?name=$module_name\" method=\"post\">"
."<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" align=\"center\">";


echo "<tr><td>"._LIFT.":</td><td><input type=\"checkbox\" name=\"c31\" value=\"$c31\"></td></tr>";
echo "<tr><td>"._PHONE.":</td><td><input type=\"checkbox\" name=\"c29\" value=\"$c29\" ></td></tr>";

echo "<tr><td colspan=\"2\" align=\"center\"><input type=\"hidden\" name=\"op\" value=\"flat\">"
."<input type=\"submit\" value=\""._FADD."\"></td></tr></form></table>";
}

function flat($c29, $c30, $c31) {
$c29 = stripslashes(FixQuotes($c29));
$c30 = stripslashes(FixQuotes($c30));
$c31 = stripslashes(FixQuotes($c31));

$ad = $db->sql_query("INSERT INTO ".$prefix."_bd (id, lift, phone) VALUES (NULL, '$c29', '$c31')");
}

Soniks
16.02.2006, 19:18
Kxu
в приведенном коде у вас две переменные которые передадуться функции flat, а в самой функции объявлено 3, это не верно, если оно так:

function flat($c29, $c31) {
global $db,$prefix;
$c29 = stripslashes(FixQuotes($c29));
$c31 = stripslashes(FixQuotes($c31));

$ad = $db->sql_query("INSERT INTO ".$prefix."_bd (id, lift, phone) VALUES (NULL, '$c29', '$c31')");
if(!$ad) echo "Данные НЕ добавились!";
}


Обратите внимание, что в кейсе должно быть так же:

case "flat":
flat($c29, $c31);
break;

Kxu
17.02.2006, 10:57
да, Soniks, просто неаккуратно вырезала лишний код, тебе же не интересно мишуру читать, так вот я так понимаю у меня все правильно и по идее, что должна передать эта переменная $c31 и $c29 ? какое значение? какое значение атрибута в бд должно быть, чтобы все соответствовало? просто передает нули в базу и никакого значения об отмеченности флага, вот....

Kxu
17.02.2006, 12:09
Я даже вот что пишу echo '<pre>', print_r($_POST, 1), '</pre>';----все данные формы выводит, очень чудесно и удобно, вообщем проблема открыта!!!! как работает checkbox??????

Kxu
17.02.2006, 14:16
Soniks , да вообще, тема закрыта, все гениальное ОЧЕНЬ просто.....
На самом деле, для всех кто ожидает от checkbox автомата, как я думала, что будет автоматически да или нет, то при отмеченном флаге передается значение value, при неотмеченном ничего не передается, вот и все!!!!

Kxu
20.02.2006, 20:31
Soniks , ещё один вопрос меня преследует!!! Вот создаю я кучу форм для ввода пользователем различных данных, а вдруг пользователь решит что-нибудь пакосное ввести....как отреагирует система??? где можно просветиться на эту тему??? и ещё хочу производить всякого рода проверки...где можно прочитать про всякие казусы и уязвимости....или самой предполагать!!! Может существует какой-либо тест для проверки??? СПАСИБО!!! но меня ещё интересует проверка такого рода типа: ввожу метро, определяется в следующей форме какой район!!!!! Можно такое осуществить!!!!

Soniks
21.02.2006, 14:22
Kxu обычно во всех книгах по пхп приводятся различные варианты проверки вводимых данных пользователем и методы защиты скрипта.

Kxu
21.02.2006, 17:14
Soniks , ладно почитаю, но просто я как-то изучаю так без книг, следуя своей интуиции, а теперь следует наверное почитать !!!!
Ещё одна ситуация, у меня много checkbox, представим большой список выбора. Представили!!! А как теперь их передать из формы на обработку??? все тупо перечислять или можно в один массив запихать??? Но с массивом какие-то проблемы.. Так передает, а массив не хочет!!!

echo "<form enctype=\"multipart/form-data\" action=\"index.php?name=$module_name\" method=\"post\">"
."<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" align=\"center\">"; $i=1;while ($mA[$i] != "") {
echo "<tr><td><input type=\"checkbox\" name=\"c10[".$i."]\" value=\"$mA[$i]\">$mA[$i]</option></tr></td>";
$i=$i+1;
}
echo "<tr><td colspan=\"2\" align=\"center\"><input type=\"hidden\" name=\"op\" value=\"flat\">"
."<input type=\"submit\" value=\""._BSEARCH."\"></td></tr></form></table>";
function flat($c10) {
//работаю с этим массивом $c10 }

Вроде так!!!!!!А!!!

Soniks
21.02.2006, 19:24
Kxu а что именно у вас здесь не работает?

Kxu
22.02.2006, 10:34
Soniks, я хочу передать массив значений, отмеченных в checkbox! но, если тупо перечислять переменные во flat, то все норамально передается, а массив не хочет!!!!

Soniks
22.02.2006, 17:11
вот так:
<input type=\"checkbox\" name=\"c10[".$i."]\" value=\"$mA[$i]\">
у вас будет приходить массив $c10 с ключами $i и значение $mA, если такой массив не передаеться в, то скорее всего он не объявлен как глобальный.

Kxu
28.02.2006, 15:09
Soniks ,у меня так смешно получилось!!!!! теперь эта переменная $c10 передает массив, ну слово array!!!! как это так?????

Soniks
28.02.2006, 16:16
Kxu все верно, если переменная являеться массивом и вы пытаетесь ее просто вывести на экран при поможи echo или print то он выведет Array, выводить нужно по ключу массива или переберать все имеющиеся значения массива например при помощи функции foreach

Kxu
28.02.2006, 17:10
Soniks , да,наверное, попробую.... хотя если так подумать, перебор перебором, но если просто так, по произвольному индексу выводить, например $c10[3] почему так-то нельзя, а то выводит просто r?????

Soniks
01.03.2006, 00:01
Kxu по индексу он должен вывести значение

Kxu
01.03.2006, 12:45
Soniks , понятное дело!!! значение, но его-то нет!!!! Вообщем, формирую я массив $c10, из отмеченных значений флага, по идее так хочу!!!! через форму отправляю для обработки, но отправляется слово array, если я ничего не отмечу, то ничего не выводиться для $c10, а если отмечу, и выведу индексом, например $c10[2] выведиться буква r , почему так, Сделала глобальным этот массив $c10, типа описала в этих функциях, но ничего все равно!!!!!!

Kxu
01.03.2006, 17:01
Soniks , смотри что ввожу echo "<center>$c10</center>";
echo "<center>$c10[2]</center>";
echo "<center>".$_REQUEST["c10"]."</center>";
echo "<center>$c10[3]</center>";
echo '<pre>', print_r($_POST, 1), '</pre>';
а что получаю
Array
r
Array
a
Array
(

[c10] => Array
(
[1] => Первое
[2] => Второе
)

[op] => flat
)
Как быть!!!!!!!Вроде передается массив, а никак не взять!!!! :angry:

Вообщем, теперь вопрос в другом, вот так я достала значение массива
$_REQUEST["c10"][$i] все нормально имею,
Но а на прямую как это сделать, чтобы прямо значение массива получить, а не буквы массива....хочу так как типа $c10[1] и значение массива "Первое" КАК!!!!!!

Soniks
02.03.2006, 15:36
$c10=$_POST['c10'];

echo $c10[1].$c10[2];

Kxu
02.03.2006, 18:06
Soniks , спасибо, но я то через $_REQUEST["c10"][$i] , уже все значения повытаскивала, вот думаю на локалке-то работает такое, а если на серваке отключит register_global, то работать $_REQUEST не будет, а $_POST????? все равно будет работать!!!!!!

Soniks
02.03.2006, 22:25
Kxu почему не будет, будет!

Kxu
10.03.2006, 10:52
Soniks , как можно сделать, чтобы пользователь при вводе формы в таблицу заносилась дата и время его ввода. Я думаю это надо сделать в форме невидимое что-то и ему присваивать автоматически число и др полю время....Вот есть такая возможность автоматического определения времени и даты, а затем присвоить какому либо невидимому значению, например текстовому!!!! Можно ли!!!!

Soniks
11.03.2006, 01:33
Kxu еще раз повторюсь! учитесь формулировать вопросы!

Kxu
13.03.2006, 10:54
Soniks , я стараюсь, все в процессе,я учусь....
Кратко: хочу хранить дату и время, которое автоматически будет создаваться при заполнении пользователем формы??? Такое возможно, если в базе сделать поле даты и время, но как его заносить туда из формы???

Soniks
14.03.2006, 00:38
в замен значения вставляйте функцию Now() (http://dev.mysql.com/doc/refman/4.0/ru/date-and-time-functions.html)
insert into table (id, date) values (null, now())

Kxu
14.03.2006, 13:27
Soniks , ты просто чудо!!!!! :groupjump :groupjump :groupjump :groupjump
и время аналогично также получилось, главное правильно значение атрибутов поставить!!!!
А если поставить значение datetime, то в поле будет заноситься и дата и время. А как по такому полю потом выборку делать??? если отдельно нужно по дате, по времени...????А!

Soniks
15.03.2006, 02:59
Kxu вариантов очень много, можно по средством mysql, а можно по средством php принять дату как строку и разобрать ее на нужные составляющие, например как выполнена функция formatTimestamp в mainfile.php

Kxu
15.03.2006, 11:03
Soniks , php средствами все понятно, разбирусь, когда книжку куплю, в конце концов... меня больше интересует sql запрост, например, вывести все данные за последние пол часа??? вообще как это от текущего времени отнять пол часа и сравнивать? я даже не понимаю как вычет по времени сделать?? а если время и дата вместе, то sql сделать вообще труба, но так интересно, любопытство распирает!!!!:bubble:
ААААА как работет эта функция ??? formatTimestamp

Soniks
15.03.2006, 16:28
Kxu почитайте руководство по mysql там много различных функций существует для sql и используйте нужные вам, а вычет по времени считайте в скендах time() - это сколько сейчас на сервере времини и отнимайте количество секунд, вот вам и будет время
ААААА как работет эта функция ??? formatTimestamp
почитайте описание функций поторые она использует, должны понять как именно.

Kxu
20.03.2006, 10:53
в каких ещё скендах????? я такого не слышала???а вот про формат временной метки начиталась!!!! очень любопытно, буду пробовать и делиться опытом и косяками :splash:

Soniks
20.03.2006, 21:08
Kxu в секундах, опечатался...

Kxu
22.03.2006, 14:39
Soniks , ну вот,!!!! а прикольно секунды скендами называть!!!!:lol: