Ru-MaNGOS  

Вернуться   Ru-MaNGOS > Документация > Языки программирования

Важная информация

Языки программирования Изучаем С++, Sql, php, Lua, Python

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.07.2013, 14:37   #1
Visible
Пользователь
 
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
Visible На верном пути
Вопрос php формы, функции

Недавно начал изучать php, подскажите пожалуйста.
Вывожу форму:
Код:
include_once("function.php");
if (isset (некая проверка) {
что то..
}
else {
print_form();
}
function.php

Код:
function print_form()
{
echo <<<qwe
<form action="" method="POST">
и т.д.
интересует момент form action="". что нужно добавлять, если обработчик находится внутри другой функции?

Код:
Код:
function process_add()
{
обработчик формы
}
И ещё, попутный вопрос, может не совсем правильный. file_get_contents читает содержимое файла в строку. Имеется ли функция, которая бы читала содержимое файла в строку не забыв о php коде в этом файле?
Код:
    public function contentsite() {
        return file_get_contents(");
    }
вывод на главную
Код:
echo $engine->contentsite();

Последний раз редактировалось Visible; 25.07.2013 в 14:40.
Visible вне форума   Ответить с цитированием
Старый 25.07.2013, 15:55   #2
lovepsone
Ученый
 
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
lovepsone Хрен знает что...lovepsone Хрен знает что...
По умолчанию

Для начало разберитесь что делает 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.
lovepsone вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Visible (25.07.2013)
Старый 25.07.2013, 18:55   #3
Nepohelovski
Новичок
 
Регистрация: 25.07.2013
Сообщений: 10
Сказал(а) спасибо: 1
Поблагодарили 2 раз(а) в 2 сообщениях
Nepohelovski На верном пути
По умолчанию

Цитата:
И вообще какой смысл содержать обработчик и и форму в разных функциях(файлах)?Бред какой-то!
Возьмите любой фреймворк работающий по принципу MVC и увидите что код представления, в данном случае форма html будет в одном файле а модель и контроллер будут в других файлах, это и есть грамотное программирование

В случае ТСа тяжело сказать что нужно указать в поле action т.к. самого кода мы не видим и не знаем где находиться обработчик, если обработчик в этом же файле, поле можно оставить пустым.

Цитата:
Имеется ли функция, которая бы читала содержимое файла в строку не забыв о php коде в этом файле?
Не совсем ясно что вы хотите, возможно вы имели ввиду eval
Nepohelovski вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Visible (25.07.2013)
Старый 25.07.2013, 19:20   #4
Visible
Пользователь
 
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
Visible На верном пути
По умолчанию

Реализовал выводом из одной функции в 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();
Но постоянно на каждые страницы начала появляться циферка 1. Не совсем разобрался почему так....
Visible вне форума   Ответить с цитированием
Старый 25.07.2013, 19:30   #5
Nepohelovski
Новичок
 
Регистрация: 25.07.2013
Сообщений: 10
Сказал(а) спасибо: 1
Поблагодарили 2 раз(а) в 2 сообщениях
Nepohelovski На верном пути
По умолчанию

Ну где у вас цифра 1 я не могу знать не видя код) Попробуйте глянуть через
var_dump($engine->getContentPage());
че у вас там в контенте, может где забыли что за комментировать лишнее.
Nepohelovski вне форума   Ответить с цитированием
Старый 25.07.2013, 19:36   #6
Visible
Пользователь
 
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
Visible На верном пути
По умолчанию

Цитата:
Сообщение от Nepohelovski Посмотреть сообщение
Ну где у вас цифра 1 я не могу знать не видя код) Попробуйте глянуть через
var_dump($engine->getContentPage());
че у вас там в контенте, может где забыли что за комментировать лишнее.
через фуньку выводит
Код:
int(1)
Visible вне форума   Ответить с цитированием
Старый 25.07.2013, 19:41   #7
Nepohelovski
Новичок
 
Регистрация: 25.07.2013
Сообщений: 10
Сказал(а) спасибо: 1
Поблагодарили 2 раз(а) в 2 сообщениях
Nepohelovski На верном пути
По умолчанию

http://php.net/manual/ru/function.include.php
Цитата:
Успешные включения, пока это не переопределено во включаемом файле, возвращают значение 1.
Почитайте: Пример #6 Использование буферизинованного вывода для включения PHP файла в строку.

Последний раз редактировалось Nepohelovski; 25.07.2013 в 19:44.
Nepohelovski вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Visible (26.07.2013)
Старый 25.07.2013, 22:54   #8
lovepsone
Ученый
 
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
lovepsone Хрен знает что...lovepsone Хрен знает что...
По умолчанию

Цитата:
Сообщение от Nepohelovski Посмотреть сообщение
Возьмите любой фреймворк работающий по принципу MVC и увидите что код представления, в данном случае форма html будет в одном файле а модель и контроллер будут в других файлах, это и есть грамотное программирование

В случае ТСа тяжело сказать что нужно указать в поле action т.к. самого кода мы не видим и не знаем где находиться обработчик, если обработчик в этом же файле, поле можно оставить пустым.
Не знаю как там, но я делал так! Брал код html и сохранял в буфер(не во всех случаях), а потом где надо выводил + мне это дало возможность создавать панели и выводить так как я хочу. Так я пытался html не юзать в коде пхп. Позже я взял библиотечку smarty...
Или я опять что-то нет так понял?


Цитата:
Сообщение от Nepohelovski Посмотреть сообщение
Не совсем ясно что вы хотите, возможно вы имели ввиду eval
Функцию eval(), как по мне, не юзать! Лучше уже свою попробовать написать.(хотя я автора темы немного не понял)

P.S. Мб кинуть с++&Qt и перейти обратно на пхп?
__________________
sql-language.ru

Последний раз редактировалось lovepsone; 25.07.2013 в 23:05.
lovepsone вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Visible (26.07.2013)
Старый 26.07.2013, 01:03   #9
Nepohelovski
Новичок
 
Регистрация: 25.07.2013
Сообщений: 10
Сказал(а) спасибо: 1
Поблагодарили 2 раз(а) в 2 сообщениях
Nepohelovski На верном пути
По умолчанию

Цитата:
P.S. Мб кинуть с++&Qt и перейти обратно на пхп?
Угу) Но только не на PHP а на C&GTK ))
Цитата:
Функцию eval(), как по мне, не юзать!
Да уже разобрались ему нужен был include просто мы не так поняли.
А я вот никогда не любил шаблонизатор smarty)
Nepohelovski вне форума   Ответить с цитированием
Старый 26.07.2013, 13:43   #10
Visible
Пользователь
 
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
Visible На верном пути
По умолчанию

Спасибо большое, только вот не совсем пойму, реализацию вывода формы и обработчика в одной функции сделал. А как можно сделать ссылку на функцию обработчик в
Код:
<form action='#'
Visible вне форума   Ответить с цитированием
Старый 26.07.2013, 14:11   #11
lovepsone
Ученый
 
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
lovepsone Хрен знает что...lovepsone Хрен знает что...
По умолчанию

Цитата:
Сообщение от Nepohelovski Посмотреть сообщение
А я вот никогда не любил шаблонизатор smarty)
А какие вы предпочитаете шаблонизаторы?

Цитата:
Сообщение от Visible Посмотреть сообщение
Спасибо большое, только вот не совсем пойму, реализацию вывода формы и обработчика в одной функции сделал. А как можно сделать ссылку на функцию обработчик в
Код:
<form action='#'
Попробуйте ссылку на функцию записать в константу зарание, а позже добавить в form action=константа_ваша (естественно кавычки не забывайте)

P.S. Можно ли глянуть вашу работу? Сделайте репозиторий на гит или что-то вроде того! так проще будет нам и вам)
__________________
sql-language.ru

Последний раз редактировалось lovepsone; 26.07.2013 в 14:15.
lovepsone вне форума   Ответить с цитированием
Старый 26.07.2013, 14:18   #12
Visible
Пользователь
 
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
Visible На верном пути
По умолчанию

Цитата:
Сообщение от lovepsone Посмотреть сообщение
А какие вы предпочитаете шаблонизаторы?



Попробуйте ссылку на функцию записать в константу зарание, а позже добавить в form action=константа_ваша (естественно кавычки не забывайте)

P.S. Можно ли глянуть вашу работу? Сделайте репозиторий на гит или что-то вроде того! так проще будет нам и вам)
итак. Только mercurial...ссылка у вас в ЛС, доступ там же. Сейчас попробую как то так сделать
Visible вне форума   Ответить с цитированием
Старый 26.07.2013, 16:58   #13
Nepohelovski
Новичок
 
Регистрация: 25.07.2013
Сообщений: 10
Сказал(а) спасибо: 1
Поблагодарили 2 раз(а) в 2 сообщениях
Nepohelovski На верном пути
По умолчанию

Цитата:
Сообщение от lovepsone Посмотреть сообщение
А какие вы предпочитаете шаблонизаторы?
Никакие, мне нравиться фреймворк Yii.
Nepohelovski вне форума   Ответить с цитированием
Старый 17.10.2013, 18:35   #14
Visible
Пользователь
 
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
Visible На верном пути
По умолчанию

Подскажите пожалуйста, пытаюсь сделать вывод в таблицу данные из 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>';
	}
первая и третья колонка выводится. а вот вторая: Resource id #13. Подскажите как можно сделать поиск по другой таблице в mysql и вывести значение колонки в таблицу?
Visible вне форума   Ответить с цитированием
Старый 17.10.2013, 18:38   #15
Visible
Пользователь
 
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
Visible На верном пути
По умолчанию

разобрался, сделал так:
Код:
	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>';
	}
Но может есть способ проще?
Visible вне форума   Ответить с цитированием
Старый 18.10.2013, 18:45   #16
Visible
Пользователь
 
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
Visible На верном пути
По умолчанию

Подскажите пожалуйста, есть код
Код:
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>
происходит выбор опции, опции подгружаются и таблицы (колонка name)
если отправили форму то вызываем функцию
Код:
	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. Как правильно спрятать форму до выбора опции, и выводить после выбора опции?

Большое спасибо
Visible вне форума   Ответить с цитированием
Старый 18.10.2013, 20:25   #17
lovepsone
Ученый
 
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
lovepsone Хрен знает что...lovepsone Хрен знает что...
По умолчанию

в нутри функции у тебя нету объявления массива $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.
lovepsone вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Visible (19.10.2013)
Старый 19.10.2013, 08:18   #18
Visible
Пользователь
 
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
Visible На верном пути
По умолчанию

Спасибо, но если даже объявить переменную все равно не добавляет...эффект тот же. подставляет пустое значение.
ещё недавно заметил, т.к. я 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.
Visible вне форума   Ответить с цитированием
Старый 19.10.2013, 15:35   #19
Visible
Пользователь
 
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
Visible На верном пути
Радость

Цитата:
Сообщение от lovepsone Посмотреть сообщение
в нутри функции у тебя нету объявления массива $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";
	}
А на счет проверочек, то их много куда пихать надо
уже проблему решил вот так:

Код:
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>';
осталось разобраться с проверочками, да и с отображением на IE... в функцию передается action, выделил жирным. и чуть дописал функцию, теперь она выглядит так:
Код:
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 "не добавлено";
		}
	}
}
Visible вне форума   Ответить с цитированием
Старый 19.10.2013, 16:16   #20
Visible
Пользователь
 
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
Visible На верном пути
По умолчанию

пытался сделать вторичный вывод, на основе первичного, неполучилось(
Код:
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>';
По всей видимости с этим тоже дня два буду мучаться.
Visible вне форума   Ответить с цитированием
Старый 19.10.2013, 18:21   #21
lovepsone
Ученый
 
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
lovepsone Хрен знает что...lovepsone Хрен знает что...
По умолчанию

Скоро я с больнички выпишусь, тогда и помогу... А так интернета фактически нет, а с телефона плохо писать, да и код плохо понимать!
__________________
sql-language.ru
lovepsone вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Visible (19.10.2013)
Старый 19.10.2013, 19:06   #22
Visible
Пользователь
 
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
Visible На верном пути
По умолчанию

Цитата:
Сообщение от lovepsone Посмотреть сообщение
Скоро я с больнички выпишусь, тогда и помогу... А так интернета фактически нет, а с телефона плохо писать, да и код плохо понимать!
Большое спасибо, я уже немного разобрался, после выбора первого выпадающего списка, чтобы подгрузился второй, нужен ajax запрос. фактически без него после выбора первого меню, перезагружаем страницу и только потом подгружается второй список, на основе выбранного первого списка. В действительности подгрузка сейчас происходит по этому методу, но нужно ajax подгрузку. С ним я вообще никак не знаком. пытаюсь вникнуть хоть в что то.
Visible вне форума   Ответить с цитированием
Старый 30.10.2013, 13:29   #23
SergiK_KilleR
Пользователь
 
Аватар для SergiK_KilleR
 
Регистрация: 07.03.2010
Сообщений: 46
Сказал(а) спасибо: 15
Поблагодарили 53 раз(а) в 14 сообщениях
SergiK_KilleR Скоро придёт к известности
По умолчанию

что передает поле $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>
в приведенном мной примере переменная $row должна быть объявлена до вызова функции add_line($name).

Последний раз редактировалось SergiK_KilleR; 30.10.2013 в 13:37.
SergiK_KilleR вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Visible (05.11.2013)
Старый 05.11.2013, 14:42   #24
Visible
Пользователь
 
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
Visible На верном пути
По умолчанию

Цитата:
Сообщение от SergiK_KilleR Посмотреть сообщение
что передает поле $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>
в приведенном мной примере переменная $row должна быть объявлена до вызова функции add_line($name).
спасибо, я уже подумал, лучше не подгружать через функции инсерт в базу, что то мне разонравилось реализация через функции. а с сохранением селекта, очень интересно, попробую разобраться. сейчас все пытаюсь jquery в селект подгружать научиться, динамически создавать запрос и выводить в тег селект.
Visible вне форума   Ответить с цитированием
Старый 06.11.2013, 09:50   #25
Кот ДаWINчи
Умный
 
Аватар для Кот ДаWINчи
 
Регистрация: 07.03.2010
Адрес: Северный Урал (60°сш, 60°вд)
Сообщений: 330
Сказал(а) спасибо: 82
Поблагодарили 398 раз(а) в 119 сообщениях
Записей в дневнике: 30
Кот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человек
Отправить сообщение для Кот ДаWINчи с помощью ICQ Отправить сообщение для Кот ДаWINчи с помощью Skype™
По умолчанию

Цитата:
Сообщение от Visible Посмотреть сообщение
спасибо, я уже подумал, лучше не подгружать через функции инсерт в базу, что то мне разонравилось реализация через функции. а с сохранением селекта, очень интересно, попробую разобраться.

сейчас все пытаюсь jquery в селект подгружать научиться, динамически создавать запрос и выводить в тег селект.
не стоит сравнивать мягкое с соленым! php и "селект" работают на стороне сервера. jquery - отрабатывает на стороне пользователя в браузере. Так что все эти навороты требуют полноценного движка. В котором немалую роль будет занимать согласование между частями самого движка и защита от взлма (или просто неправильных запросов от пользователя рушащих данные).

а вот отказ от функций это шаг назад.

Я бы посоветовал не отказываться от них, а научиться их строить и использовать правильно. Потом же перейти к созданию собственных классов. так как методы в классах - это по своей сути и есть те же самые функции.
Кот ДаWINчи вне форума   Ответить с цитированием
Старый 06.11.2013, 11:52   #26
Visible
Пользователь
 
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
Visible На верном пути
Радость

Я не то чтобы от них отказался, я подумал что использовать функцию в данном случае не рентабельно. Таких функций требуется очень много и все не похожи друг на друга, и тем более кода там по пять десять строчек. Думаю лучше это выводить сразу на страницу. По мере расширения функционала, возможно по требуется их исполтзование. Зато попробывал, получил результат, и научился их исполтзовать. Я понимаю что нужна какая то защита он инекций и т.п. сейчас пробую , верней свой функционал уже перевел под pdo, а авторизацию еще пока не получается перевести. Но вроде уже кое какие мысли пришли как сделать. Хочется полностью перевести на пдо и научиться аяксу или jquery.
Visible вне форума   Ответить с цитированием
Старый 21.11.2013, 18:16   #27
Visible
Пользователь
 
Регистрация: 11.07.2010
Сообщений: 56
Сказал(а) спасибо: 16
Поблагодарили 0 раз(а) в 0 сообщениях
Visible На верном пути
По умолчанию

Подскажите пожалуйста, есть функция
Код:
<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 создается новый селект на основе результата выбора, как в функцию передавать несколько параметров, например после выбора первого селекта создается/заполняется второй, после выбора второго третий и т.д. результат заполнения каждого последующего зависит от выбора предыдущих.
Visible вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функции в С++ 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


Текущее время: 23:04. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot