|
Языки программирования Изучаем С++, Sql, php, Lua, Python |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
25.07.2013, 14:37 | #1 |
Пользователь
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
|
php формы, функции
Недавно начал изучать php, подскажите пожалуйста.
Вывожу форму: Код:
include_once("function.php"); if (isset (некая проверка) { что то.. } else { print_form(); } Код:
function print_form() { echo <<<qwe <form action="" method="POST"> интересует момент form action="". что нужно добавлять, если обработчик находится внутри другой функции? Код: Код:
function process_add() { обработчик формы } Код:
public function contentsite() { return file_get_contents("); } Код:
echo $engine->contentsite(); Последний раз редактировалось Visible; 25.07.2013 в 14:40. |
25.07.2013, 15:55 | #2 |
Ученый
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
|
Для начало разберитесь что делает GET, а что POST и как ими пользоваться.
1)Если хотите использовать post, и что бы можно было делать проверку к нему, то для начала форму надо назвать т.е: <form name="название" .... > и тд . А form action должен содержать текущий URL(если память мне не изменяет). И вообще какой смысл содержать обработчик и и форму в разных функциях(файлах)?Бред какой-то! 2) file_get_contents не читает пхп код ни как, если вам нужно вывести php файл с формой и кодом то вот функция include("имя файла"); P.S. Уже давно на пхп не сидел так что могу морозить )
__________________
sql-language.ru Последний раз редактировалось lovepsone; 25.07.2013 в 15:58. |
Пользователь сказал cпасибо: | Visible (25.07.2013) |
25.07.2013, 18:55 | #3 | ||
Новичок
Регистрация: 25.07.2013
Сообщений: 10
Сказал(а) спасибо: 1
Поблагодарили 2 раз(а) в 2 сообщениях
|
Цитата:
В случае ТСа тяжело сказать что нужно указать в поле action т.к. самого кода мы не видим и не знаем где находиться обработчик, если обработчик в этом же файле, поле можно оставить пустым. Цитата:
|
||
Пользователь сказал cпасибо: | Visible (25.07.2013) |
25.07.2013, 22:54 | #4 | |
Ученый
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
|
Цитата:
Или я опять что-то нет так понял? Функцию eval(), как по мне, не юзать! Лучше уже свою попробовать написать.(хотя я автора темы немного не понял) P.S. Мб кинуть с++&Qt и перейти обратно на пхп?
__________________
sql-language.ru Последний раз редактировалось lovepsone; 25.07.2013 в 23:05. |
|
Пользователь сказал cпасибо: | Visible (26.07.2013) |
25.07.2013, 19:20 | #5 |
Пользователь
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
|
Реализовал выводом из одной функции в function.php.
Код:
<form action='#' Код:
public function getContentPage() { return file_get_contents("templates/" . $this->_page_file . ".php"); } Код:
public function getContentPage() { return include("templates/" . $this->_page_file . ".php"); } вывожу так: Код:
echo $engine->getContentPage(); |
25.07.2013, 19:30 | #6 |
Новичок
Регистрация: 25.07.2013
Сообщений: 10
Сказал(а) спасибо: 1
Поблагодарили 2 раз(а) в 2 сообщениях
|
Ну где у вас цифра 1 я не могу знать не видя код) Попробуйте глянуть через
var_dump($engine->getContentPage()); че у вас там в контенте, может где забыли что за комментировать лишнее. |
25.07.2013, 19:36 | #7 |
Пользователь
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
|
|
25.07.2013, 19:41 | #8 | |
Новичок
Регистрация: 25.07.2013
Сообщений: 10
Сказал(а) спасибо: 1
Поблагодарили 2 раз(а) в 2 сообщениях
|
http://php.net/manual/ru/function.include.php
Цитата:
Последний раз редактировалось Nepohelovski; 25.07.2013 в 19:44. |
|
Пользователь сказал cпасибо: | Visible (26.07.2013) |
26.07.2013, 01:03 | #9 | ||
Новичок
Регистрация: 25.07.2013
Сообщений: 10
Сказал(а) спасибо: 1
Поблагодарили 2 раз(а) в 2 сообщениях
|
Цитата:
Цитата:
А я вот никогда не любил шаблонизатор smarty) |
||
26.07.2013, 14:11 | #10 | |
Ученый
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
|
А какие вы предпочитаете шаблонизаторы?
Цитата:
P.S. Можно ли глянуть вашу работу? Сделайте репозиторий на гит или что-то вроде того! так проще будет нам и вам)
__________________
sql-language.ru Последний раз редактировалось lovepsone; 26.07.2013 в 14:15. |
|
26.07.2013, 14:18 | #11 | |
Пользователь
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
|
Цитата:
|
|
26.07.2013, 16:58 | #12 |
Новичок
Регистрация: 25.07.2013
Сообщений: 10
Сказал(а) спасибо: 1
Поблагодарили 2 раз(а) в 2 сообщениях
|
|
26.07.2013, 13:43 | #13 |
Пользователь
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
|
Спасибо большое, только вот не совсем пойму, реализацию вывода формы и обработчика в одной функции сделал. А как можно сделать ссылку на функцию обработчик в
Код:
<form action='#' |
17.10.2013, 18:35 | #14 |
Пользователь
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
|
Подскажите пожалуйста, пытаюсь сделать вывод в таблицу данные из mysql.
Таблица создается. Но как сгенерировать запрос на основе данных ещё другой таблицы? делаю вот так: Код:
while($data = mysql_fetch_array($qr_result)){ echo '<tr>'; echo '<td>' . $data['entry'] . '</td>'; $id_query = 'SELECT name FROM area WHERE entry ='.$data['id_area']; $resultt = mysql_query($id_query); echo '<td>' . $resultt . '</td>'; echo '<td>' . $data['name'] . '</td>'; echo '</tr>'; } |
17.10.2013, 18:38 | #15 |
Пользователь
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
|
разобрался, сделал так:
Код:
while($data = mysql_fetch_array($qr_result)){ echo '<tr>'; echo '<td>' . $data['entry'] . '</td>'; $id_query = 'SELECT * FROM area WHERE entry ='.$data['id_area']; $result = mysql_query($id_query); $resultt = mysql_fetch_array($result); echo '<td>' . $resultt['name'] . '</td>'; echo '<td>' . $data['name'] . '</td>'; echo '</tr>'; } |
18.10.2013, 18:45 | #16 |
Пользователь
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
|
Подскажите пожалуйста, есть код
Код:
echo '<html><head><title>Сортировка по категориям</title> </head> <body>'; echo "<center><form method='post'> <select name='categories'> <option value=''>-- Выберите категорию --</option>"; $result = mysql_query ("SELECT * FROM area") or die ("<b>Query failed:</b> " . mysql_error()); while ($row = mysql_fetch_array($result)){ echo "<option value=' ".$row['entry']." '>".$row['name']."</option>"; } echo '</select></form></center>'; echo '</body></html>'; ?> <form method="POST" name="add_line"> <table> <tr> <td>поле</td> <td><input type="text" name="name"></td> </tr> <tr> <td><input type="submit" name="submit" value="save"></td> </tr> </table> </form> если отправили форму то вызываем функцию Код:
if ('POST' === $_SERVER['REQUEST_METHOD']) { // Форма отправлена add_line(); } Код:
function add_line() { if (isset($_POST['name'])) { $name=$_POST['name']; } if (!empty($name)) $zapro = mysql_query ("insert into line (id_area, name) values ($row['entry'],'$name')"); if ($zapro == 'true') { echo "dobavleno"; } else { echo "ne dob"; } } 1. при добавлении записи в запросе не формируется entry выбраного меню. Проблему выделил жирным цветом. (вместо ентри подставляется пустое значение и запрос выполняется с пустым значением), уже 2 дня голову мучаю... 2. если добавить запись, а потом обновить страничку то запись добавится дважды/трижды и т.п. как правильно организовать проверочку? 3. Как правильно спрятать форму до выбора опции, и выводить после выбора опции? Большое спасибо |
18.10.2013, 20:25 | #17 |
Ученый
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
|
в нутри функции у тебя нету объявления массива $row. А судя по коду он должен быть глобальным либо передавать как параметр.
Код:
function add_line() { global $row; if (isset($_POST['name'])) { $name=$_POST['name']; } if (!empty($name)) $zapro = mysql_query ("insert into line (id_area, name) values ($row['entry'],'$name')"); if ($zapro == 'true') { echo "dobavleno"; } else { echo "ne dob"; }
__________________
sql-language.ru Последний раз редактировалось lovepsone; 18.10.2013 в 20:28. |
Пользователь сказал cпасибо: | Visible (19.10.2013) |
19.10.2013, 15:35 | #18 | |
Пользователь
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
|
Цитата:
Код:
echo "<center><form method='post'> <select name='action'> <option value=''>-- Выберите отделение --</option>"; $result = mysql_query ("SELECT * FROM area") or die ("<b>Query failed:</b> " . mysql_error()); while ($row = mysql_fetch_array($result)){ echo "<option value=' ".$row['entry']." '>".$row['name']."</option>"; } echo '</select>'; echo '<tr><br>'; echo '<td>поле</td>'; echo '<td><input type="text" name="name"></td>'; echo '</tr>'; echo '<tr>'; echo '<td><input type="submit" name="submit" value="save"></td>'; echo '</tr>'; echo '</form></center>'; Код:
function add_line() { if (isset($_POST['name'])) { $name=$_POST['name']; $action=$_POST['action']; } if (empty($name) || empty($action)) { echo "балалайка, пустые значения."; } else { $zapro = mysql_query ("insert into line (id_area, name) values ('$action','$name')"); if ($zapro == 'true') { echo "Успешно добавлено."; } else { echo "не добавлено"; } } } |
|
19.10.2013, 08:18 | #19 |
Пользователь
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
|
Спасибо, но если даже объявить переменную все равно не добавляет...эффект тот же. подставляет пустое значение.
ещё недавно заметил, т.к. я IE непользуюсь долго незамечал. есть какая то проблема в стилях, в браузерах отличных от IE работает хорошо, в IE нехочет. Код:
body{ background: #c0c0c0 url(images/header.jpg) no-repeat center top; //цвет фона font: 0px 'trebuchet MS', Arial, Helvetica; } h2, p { text-align: center; color: #eb0d02; text-shadow: 0 1px 0 #eb0d02; } a { color: #2A679F; } /* Выше приведёные стили предназначены для демонстрации ----------- */ #menu, #menu ul { margin: 0; padding: 0; list-style: none; } #menu { width: 960px; //длина панельки margin: 60px auto; border: 1px solid #222; background-color: #111; background-image: -moz-linear-gradient(#444, #111); background-image: -webkit-gradient(linear, left top, left bottom, from(#444), to(#111)); background-image: -webkit-linear-gradient(#444, #111); background-image: -o-linear-gradient(#444, #111); background-image: -ms-linear-gradient(#444, #111); background-image: linear-gradient(#444, #111); -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; -moz-box-shadow: 0 1px 1px #777, 0 1px 0 #666 inset; -webkit-box-shadow: 0 1px 1px #777, 0 1px 0 #666 inset; box-shadow: 0 1px 1px #acca24, 0 1px 0 #666 inset; } #menu:before, #menu:after { content: ""; display: table; } #menu:after { clear: both; } #menu { zoom:1; } #menu li { float: left; border-right: 1px solid #222; -moz-box-shadow: 1px 0 0 #444; -webkit-box-shadow: 1px 0 0 #444; box-shadow: 1px 0 0 #444; position: relative; } #menu a { float: left; padding: 12px 30px; color: #999; text-transform: uppercase; font: bold 12px Arial, Helvetica; text-decoration: none; text-shadow: 0 1px 0 #000; } #menu li:hover > a { color: #fafafa; } *html #menu li a:hover { /* Только для IE6 */ color: #fafafa; } #menu ul { margin: 20px 0 0 0; _margin: 0; /*Только для IE6*/ opacity: 0; visibility: hidden; position: absolute; top: 38px; left: 0; z-index: 9999; background: #444; background: -moz-linear-gradient(#444, #111); background-image: -webkit-gradient(linear, left top, left bottom, from(#444), to(#111)); background: -webkit-linear-gradient(#444, #111); background: -o-linear-gradient(#444, #111); background: -ms-linear-gradient(#444, #111); background: linear-gradient(#444, #6f8314); -moz-box-shadow: 0 -1px rgba(255,255,255,.3); -webkit-box-shadow: 0 -1px 0 rgba(255,255,255,.3); box-shadow: 0 -1px 0 rgba(255,255,255,.3); -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; -webkit-transition: all .2s ease-in-out; -moz-transition: all .2s ease-in-out; -ms-transition: all .2s ease-in-out; -o-transition: all .2s ease-in-out; transition: all .2s ease-in-out; } #menu li:hover > ul { opacity: 1; visibility: visible; margin: 0; } #menu ul ul { top: 0; left: 150px; margin: 0 0 0 20px; _margin: 0; /*Только для IE6*/ -moz-box-shadow: -1px 0 0 rgba(255,255,255,.3); -webkit-box-shadow: -1px 0 0 rgba(255,255,255,.3); box-shadow: -1px 0 0 rgba(255,255,255,.3); } #menu ul li { float: none; display: block; border: 0; _line-height: 0; /*Только для IE6*/ -moz-box-shadow: 0 1px 0 #111, 0 2px 0 #666; -webkit-box-shadow: 0 1px 0 #111, 0 2px 0 #666; box-shadow: 0 1px 0 #111, 0 2px 0 #666; } #menu ul li:last-child { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; } #menu ul a { padding: 10px; width: 130px; _height: 10px; /*Только для IE6*/ display: block; white-space: nowrap; float: none; text-transform: none; } #menu ul a:hover { background-color: #0186ba; background-image: -moz-linear-gradient(#acca24, #6f8314); background-image: -webkit-gradient(linear, left top, left bottom, from(#acca24), to(#6f8314)); background-image: -webkit-linear-gradient(#acca24, #6f8314); background-image: -o-linear-gradient(#acca24, #6f8314); background-image: -ms-linear-gradient(#acca24, #6f8314); background-image: linear-gradient(#acca24, #6f8314); } #menu ul li:first-child > a { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0; } #menu ul li:first-child > a:after { content: ''; position: absolute; left: 40px; top: -6px; border-left: 6px solid transparent; border-right: 6px solid transparent; border-bottom: 6px solid #444; } #menu ul ul li:first-child a:after { left: -6px; top: 50%; margin-top: -6px; border-left: 0; border-bottom: 6px solid transparent; border-top: 6px solid transparent; border-right: 6px solid #3b3b3b; } #menu ul li:first-child a:hover:after { border-bottom-color: #acca24; } #menu ul ul li:first-child a:hover:after { border-right-color: #acca24; border-bottom-color: transparent; } #menu ul li:last-child > a { -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px; border-radius: 0 0 3px 3px; } // для таблиц table { *border-collapse: collapse; /* Для IE7 и страше */ border-spacing: 0; } th:first-child { -moz-border-radius: 6px 0 0 0; -webkit-border-radius: 6px 0 0 0; border-radius: 6px 0 0 0; } th:last-child { -moz-border-radius: 0 6px 0 0; -webkit-border-radius: 0 6px 0 0; border-radius: 0 6px 0 0; } Последний раз редактировалось Visible; 19.10.2013 в 08:53. |
19.10.2013, 16:16 | #20 |
Пользователь
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
|
пытался сделать вторичный вывод, на основе первичного, неполучилось(
Код:
echo "<center><form method='POST'> <select name='area'> <option value=''>-- Выберите отделение --</option>"; $result = mysql_query ("SELECT * FROM area") or die ("<b>Query failed:</b> " . mysql_error()); while ($row = mysql_fetch_array($result)){ echo "<option value=' ".$row['entry']." '>".$row['name']."</option>"; } echo '</select>'; echo "<select name='line'> <option value=''>-- Выберите линию --</option>"; $resultr = mysql_query ("SELECT * FROM line where id_area=' ".$_POST['area']." ' ") or die ("<b>Query failed:</b> " . mysql_error()); while ($roww = mysql_fetch_array($resultr)){ echo "<option value=' ".$roww['entry']." '>".$roww['name']."</option>"; } echo '</select>'; |
19.10.2013, 18:21 | #21 |
Ученый
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
|
Скоро я с больнички выпишусь, тогда и помогу... А так интернета фактически нет, а с телефона плохо писать, да и код плохо понимать!
__________________
sql-language.ru |
Пользователь сказал cпасибо: | Visible (19.10.2013) |
19.10.2013, 19:06 | #22 |
Пользователь
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
|
Большое спасибо, я уже немного разобрался, после выбора первого выпадающего списка, чтобы подгрузился второй, нужен ajax запрос. фактически без него после выбора первого меню, перезагружаем страницу и только потом подгружается второй список, на основе выбранного первого списка. В действительности подгрузка сейчас происходит по этому методу, но нужно ajax подгрузку. С ним я вообще никак не знаком. пытаюсь вникнуть хоть в что то.
|
30.10.2013, 13:29 | #23 |
Пользователь
Регистрация: 07.03.2010
Сообщений: 46
Сказал(а) спасибо: 15
Поблагодарили 53 раз(а) в 14 сообщениях
|
что передает поле $row['entry'] ? автоинкрементное значение?
переписанный вариант того что вы пытались сделать. Проверку введенных данных (GET/POST) желательно делать до передачи в какие-либо функции, это упростит понимание того что делает сама функция и отпадет надобность дополнительных проверок в самих функциях. Код:
<? function add_line($name){ global $row; $query = sprintf( "INSERT INTO `line` (`id_area`, `name`) VALUES ('%d','%s')", $row['entry'], mysql_real_escape_string($name) ); $res = mysql_query($query); if(!$res){ exit("<b>Query failed:</b> " . mysql_error()); } return true; } if(isset($_POST['add_line'])){ $name = isset($_POST['name']) ? trim($_POST['name']) : null; if($name){ add_line($name); } } ?> <html><head><title>Сортировка по категориям</title> </head> <body> <center> <form method="post"> <select name="categories"> <option value=''>-- Выберите категорию --</option> <? $result = mysql_query ("SELECT * FROM area") or die ("<b>Query failed:</b> " . mysql_error()); while ($row = mysql_fetch_array($result)){ $selected = (isset($_POST['categories']) && $row['entry'] == intval($_POST['categories'])) ? " selected" : ""; echo "<option value='".$row['entry']."'".$selected.">".$row['name']."</option>"; } ?> </select> </form> </center> <form method="POST" name="add_line"> <table> <tr> <td>поле</td> <td><input type="text" name="name"></td> </tr> <tr> <td><input type="submit" name="submit" value="save"></td> </tr> </table> </form> </body></html> Последний раз редактировалось SergiK_KilleR; 30.10.2013 в 13:37. |
Пользователь сказал cпасибо: | Visible (05.11.2013) |
05.11.2013, 14:42 | #24 | |
Пользователь
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
|
Цитата:
|
|
06.11.2013, 09:50 | #25 | |
Умный
Регистрация: 07.03.2010
Адрес: Северный Урал (60°сш, 60°вд)
Сообщений: 330
Сказал(а) спасибо: 82
Поблагодарили 399 раз(а) в 120 сообщениях
Записей в дневнике: 30
|
Цитата:
а вот отказ от функций это шаг назад. Я бы посоветовал не отказываться от них, а научиться их строить и использовать правильно. Потом же перейти к созданию собственных классов. так как методы в классах - это по своей сути и есть те же самые функции. |
|
21.11.2013, 18:16 | #26 |
Пользователь
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
|
Подскажите пожалуйста, есть функция
Код:
<script> function showLine(str) { if (str.length==0) { document.getElementById("txtHint").innerHTML=""; return; } if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("txtHint").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","file.php?q="+str,true); xmlhttp.send(); } </script> в нее передается параметр и в файле .php создается новый селект на основе результата выбора, как в функцию передавать несколько параметров, например после выбора первого селекта создается/заполняется второй, после выбора второго третий и т.д. результат заполнения каждого последующего зависит от выбора предыдущих. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Функции в С++ | partizanes | Языки программирования | 55 | 24.12.2012 13:37 |
Вызов функции | HuntsMan | Языки программирования | 1 | 02.01.2012 12:57 |
Импортируемые функции | Йоха | Копаем клиент | 3 | 08.12.2011 16:53 |
Вопрос по функции php | lovepsone | Языки программирования | 38 | 07.12.2011 22:09 |
[fix bug] невостановление скорости атаки при смене формы без оружия | Chipleo | MaNGOS 0.12 (2.4.3) | 0 | 11.09.2010 15:59 |