|
|
|
| Кто-нибудь может мне подсказать, возможно ли из MySQL возвращать в хтмл значение поля select? Заданы таблицы, пользователь их заполняет и когда он вновь заходит на сайт он может редактировать заполненные таблицы. Ему должны высвечиваться данные выбранные им в прошлый раз. Как это можно сделать? И такой же вопрос с кнопками radiobutton... | |
|
|
|
|
|
|
|
для: emeli
(30.04.2005 в 13:24)
| | Да это возможно, для этого следует извлечь информацию из базы данных при помощи оператора SELECT, поместить её в HTML-форму и после редактирования обновить в базе данных при помощи оператора UPDATE.
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=1427
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=1523
PS Темы посвящённые MySQL лучше сразу размещать в соответствующем разделе форума http://www.softtime.ru/forum/index.php?id_forum=3 | |
|
|
|
|
|
|
|
для: cheops
(30.04.2005 в 13:33)
| | Спасибо за ссылки, но пока что не могу разобратьсяс другим... А на счет раздела приму во внимание :) | |
|
|
|
|
|
|
|
для: emeli
(30.04.2005 в 18:32)
| | А какова структура вашей базы данных? | |
|
|
|
|
|
|
|
для: cheops
(30.04.2005 в 22:53)
| | Структура такая:
Структура пользовательской таблицы
CREATE TABLE 'user' (
'surname' varchar(25) NOT NULL default '',
'name' varchar(25) NOT NULL default '',
'login' varchar(25) NOT NULL default '',
'email' varchar(25) NOT NULL default '',
'pass' varchar(25) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COMMENT='Таблица пользователей';
Структура Таблицы 1 с результатами ответов.
CREATE TABLE 'tabl1' (
'login' varchar(25) NOT NULL default '',
'v1' varchar(100) NOT NULL default '',
'v2' varchar(100) NOT NULL default '',
'v3' varchar(100) NOT NULL default '',
'v4' varchar(100) NOT NULL default '',
'v5' varchar(100) NOT NULL default '',
'v6' varchar(100) NOT NULL default '',
'v7' varchar(100) NOT NULL default '',
'v8' varchar(100) NOT NULL default '',
'v9' varchar(100) NOT NULL default '',
'v10' varchar(100) NOT NULL default '',
'v11' varchar(100) NOT NULL default '',
'v12' varchar(100) NOT NULL default '',
'v13' varchar(100) NOT NULL default '',
'v14' varchar(100) NOT NULL default '',
'v15' varchar(100) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COMMENT='Данные таблицы 1';
--
-- Дамп данных таблицы 'tabl1'
--
INSERT INTO 'tabl1' VALUES ('bukachu', 'Нет ответа', 'Нет ответа', 'Нет ответа', 'Нет ответа', 'Нет ответа', 'Нет ответа', 'Нет ответа', 'Нет ответа', 'Нет ответа', 'Нет ответа', 'от 200 до 250 человек', 'Нет ответа', 'Нет ответа', 'Нет ответа', 'Данная система уже внедрена этим поставщиком'); | |
|
|
|
|
|
|
|
для: cheops
(30.04.2005 в 22:53)
| | Упс, 2 раза одно и то же остослала.... сорри | |
|
|
|
|
|
|
|
для: emeli
(30.04.2005 в 13:24)
| | Хочется вернуться к вопросу по поводу «возможно ли из MySQL возвращать в хтмл значение поля select?» Дело в том что есть такая форма на хтмл
<FORM NAME = "tabl_1" METHOD="post" ACTION="tabl1.php";>
<TABLE WIDTH="100%" BORDER=2 CELLSPACING=1 CELLPADDING=1 BORDERCOLOR="#8FBC8F">
<TR>
<TD ALIGN="left">1</TD>
<TD ALIGN="left">Как долго рассматривается ERP- система продается именно этим поставщиком? </TD>
<TD ALIGN="left">
<SELECT name="v1" size="1">
<OPTION selected>Нет ответа</OPTION>
<OPTION>Ранее</OPTION>
<OPTION>С 2001 года</OPTION>
<OPTION>С 2002 года</OPTION>
<OPTION>С 2003 года</OPTION>
<OPTION>С 2004 года</OPTION>
<OPTION>С 2005 года</OPTION>
</SELECT>
</TD>
</TR>
.
. ..аналогичных вопросов в этой таблице 15
.
</TABLE>
<P ALIGN= CENTER><INPUT TYPE="submit" VALUE="Сохранить" ></TD></P>
</FORM>
При сохранении данные отправляются в обработчик php, который определяет обновить запись или дописать в базу данные. Для пользователя запускается сессия и по имени определяется есть он в базе или нет. Если он есть, необходимо вернуть выбранные поля, которые он сохранял в предыдущие разы… Не понимаю, как это возможно сделать, с помощью каких средств, если не трудно на примере можно продемонстрировать, как это сделать. Буду очень признательна. Как вариант думаю, что делать это стоит в коде, где происходит авторизация.
<?
session_start();
if (!$login || !$pass)
{
echo "Вы не ввели все необходимые данные.<br>"
."Пожалуйста вернитесь назад и заполните все необходимые поля.";
exit;
}
if(!isset($HTTP_POST_VARS['login'])&&!isset($HTTP_POST_VARS['pass']))
{
// Подключение к mysql
$mysql = mysql_connect( "localhost", "miit", "miit" );
if(!$mysql)
{
echo 'Невозможно подключиться к базе данных.';
exit;
}
// Выбор соответствующей базы данных
$mysql = mysql_select_db( "miit" );
if(!$mysql)
{
echo 'Невозможно выбрать базу данных.';
exit;
}
// Запрос к базе данных с целью выяснения существования соответствующей записи
$query = "select count(*) from user where
login = '$login' and
pass = '$pass'";
$result = mysql_query( $query );
if(!$result)
{
echo 'Невозможно выполнить запрос.';
exit;
}
$count = mysql_result( $result, 0, 0 );
if ( $count > 0 )
{
// Комбинация имени и пароля посетителя верна
$HTTP_SESSION_VARS['username']=$login;
echo '<h1>Вы на месте!</h1>';
echo '<p><a href="tabl1.html">Таблица 1</a></p>';
}
else
{
// Комбинация имени и пароля посетителя не верна
echo '<h1>Вы не имеете прав доступа к данному ресурсу!</h1>';
echo '<p><a href="reg.html">Зарегистрироваться</a></p>';
}
}
?> | |
|
|
|
|
|
|
|
для: emeli
(01.05.2005 в 20:55)
| | Обычно блок
<OPTION selected>Нет ответа</OPTION>
<OPTION>Ранее</OPTION>
<OPTION>С 2001 года</OPTION>
<OPTION>С 2002 года</OPTION>
<OPTION>С 2003 года</OPTION>
<OPTION>С 2004 года</OPTION>
<OPTION>С 2005 года</OPTION>
|
организуют следующим образом
<OPTION value=1 selected>Нет ответа</OPTION>
<OPTION value=2>Ранее</OPTION>
<OPTION value=3>С 2001 года</OPTION>
<OPTION value=4>С 2002 года</OPTION>
<OPTION value=5>С 2003 года</OPTION>
<OPTION value=6>С 2004 года</OPTION>
<OPTION value=7>С 2005 года</OPTION>
|
Это позволяет вместо текста передавать числа, которые и заносятся в базу данных. Если пользователь авторизовался и его пароль совпадает с тем, что хранится в базе данных - можно подставить значения в форму для этого они извлекаются из базы перед формой при помощи SELECT (пусть ответ помещается в $v1), а сама форма переписывается примерно следующим образом
<OPTION value=1 <? if($v1 == 1) echo "selected"; ?>>Нет ответа</OPTION>
<OPTION value=2 <? if($v1 == 2) echo "selected"; ?>>Ранее</OPTION>
<OPTION value=3 <? if($v1 == 3) echo "selected"; ?>>С 2001 года</OPTION>
<OPTION value=4 <? if($v1 == 4) echo "selected"; ?>>С 2002 года</OPTION>
<OPTION value=5 <? if($v1 == 5) echo "selected"; ?>>С 2003 года</OPTION>
<OPTION value=6 <? if($v1 == 6) echo "selected"; ?>>С 2004 года</OPTION>
<OPTION value=7 <? if($v1 == 7) echo "selected"; ?>>С 2005 года</OPTION>
|
И так со всеми остальными 15 полями.
PS Важный момент атрибут action тэга <form> необходимо динамически менять в зависимости от того добавляем мы новую запись или редактируем старую - обычно создают два обработчика на которые и переключаются в зависимости от о того, требуется выполнить INSERT или UPDATE. | |
|
|
|
|
|
|
|
для: cheops
(02.05.2005 в 01:56)
| | cheops, у меня предусмотрено при сохранении таблицы будет она обновляться или нет, выбирается в зависимости от ситуации INSERT или UPDATE.
В login.php, после определения есть ли пользователь в базе, при положительном результате проверяется есть ли уже запись в таблице1, 2... и так далее
На сколько я понимаю запрос такой
$query = "select v1, v2, v3... from tabl1 where login = '$login'";
v1,v2,v3... и так далее сколько там полей надо передать...
Как ответ в данном случае поместить в $v1, $v2 и т.д. И передавать это в обратно форму... Не мог бы ты пояснить наглядным кодом, дело в том, что не понимаю, как это можно вернуть в форму :-/ | |
|
|
|
|
|
|
|
для: emeli
(02.05.2005 в 17:01)
| | Да, запрос $query = "select v1, v2, v3... from tabl1 where login = '$login'"; следует передать функции mysql_query
<?php
$tbl = mysql_query($query);
if(!$tbl) exit(mysql_error());
?>
|
Используя полученый дескриптор $tbl следует вернуть значения v1, v2, v3 и т.д.
<?php
$res = mysql_fetch_array($tbl);
?>
|
Ассоциативный массив $res содержит нужную информацию - $res['v1'], $res['v2'], $res['v3'],...
На самом деле предыдущий мой пост содержит пример передачи информации обрабтно в форуму, но для более конкретного ответа мне нужно знать что находится в полях v1, v2, v3...
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=3803 | |
|
|
|
|
 5.5 Кб |
|
|
для: cheops
(03.05.2005 в 03:32)
| | Cheops, проблема еще в том, что непонятно в каком случае передавать эти данные. Структура такова. В начале пользователь авторизуется. Для этого у меня файл login.php. После чего он по задумке этот же файл(login) обеспечивает ссылки на имеющиеся таблицы, пока она одна, далее будет больше. Не ясно есть ли смысл возвращать значения всем таблицам, ведь не факт, что пользователь зайдет во все таблицы, целесообразно видимо выводить данные лишь в том случае, когда пользователь непосредственно перешел к какой-то таблице, в данном случае он может перейти к tabl1.html. Структуры баз данных я приводила выше, на три ответа выше. Получается, что данные нужно передавать на tabl1.html, до сих пор, наверное, проблема и состояла в том, что как это организовать. В insert.php, reg.html для регистрации, а test.html непосредственно вход в систему. Непонятка в том, что таблицы у меня a формате html, может смысл их в php изменить, или в html, передать данные тоже можно? Просто при нажатии на ссылку как запускать обработчик? Буду очень благодарна за помощь. | |
|
|
|
|
|
|
|
для: emeli
(03.05.2005 в 22:46)
| | Да HTML-формы следует либо переименовать в PHP, либо создать файл .htaccess в котором указать интерпретировать html-файлы как php. Как это сделать описывается в теме по ссылке.
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1599 | |
|
|
|
|
|
|
|
для: cheops
(04.05.2005 в 23:52)
| | Cheops, файл я переменовала в php, перед формой идет php сценарий .
А саму форму я поменяла
<SELECT name="v1" size="1">
<OPTION selected value=1>Нет ответа</OPTION>
<OPTION value=2 <?=($v1==2) ? "SELECTED": ""?>>Ранее</OPTION>
<OPTION value=3 <?=($v1==3) ? "SELECTED": ""?>>С 2000 года</OPTION>
<OPTION value=4 <?=($v1==4) ? "SELECTED": ""?>>С 2001 года</OPTION>
<OPTION value=5 <?=($v1==5) ? "SELECTED": ""?>>С 2002 года</OPTION>
<OPTION value=6 <?=($v1==6) ? "SELECTED": ""?>>С 2003 года</OPTION>
<OPTION value=7 <?=($v1==7) ? "SELECTED": ""?>>С 2004 года</OPTION>
<OPTION value=8 <?=($v1==8) ? "SELECTED": ""?>>С 2005 года</OPTION>
</SELECT>
Перед кодом хтмл, у меня идет код PHP
if (mysql_num_rows($result)>0)
{
echo 'Данная запись присутствует, нам надо ее вернуть!';
$tb1 = mysql_query("select * from tabl1 where login='$login'");
$row = mysql_fetch_array($tb1);
echo htmlspecialchars( stripslashes($row["v1"]));
v1 выводится правильно, а вот данные не меняются в форме. Может я что-то не правильно поняла? | |
|
|
|
|
|
|
|
для: cheops
(03.05.2005 в 03:32)
| | удалено | |
|
|
|
|
|
|
|
для: emeli
(04.05.2005 в 17:50)
| | Скажу честно весь топик я не прочел а просто просмотрел главные части и обратил внимание на примеры. Несколько советов в алгоритме, предлагаю при нажатии на кнопку проверять есть ли пользователь если его нету то делать update. Дальше, предлагаю HTML страничку генерировать из php в этом случае вы можете выводить то что вы хотите. Хотя я не совсем понимаю где проблема? Если не трудно то можно кратко сказать что хотите и что не получается, а то разбирать такой огромный код не совсем приятное дело :-)
Желаю удачи | |
|
|
|
|
|
|
|
для: Flash5
(04.05.2005 в 18:01)
| | >предлагаю при нажатии на кнопку
>проверять есть ли пользователь если его нету то делать
>update.
При каком нажатии кнопки? Пользователь нажимает на ссылку и ему выдается таблица. Нужно перед выдачей документа проверять заполнял ли пользователь таблицу или нет. На счет генерации в php... генерировать саму таблицу с формой как php и выводить?
Задача заключается в том, что если пользователь впервые заполняет таблицу, он сохрагяется, если повторно, то она обнавляется. Это все работает. Необходимо возвращать значения выбранных селектов, если пользователь заволнял, то есть должны выводится значения полей, которые были выбраны в последний раз. В этом и заключается проблема | |
|
|
|
|
|
|
|
для: emeli
(04.05.2005 в 18:32)
| | Вот сегодня с утра отдохнувший прочел весь топик и понял что у вас за проблема. Я тоже сталкивался с похожей проблемой.
Первое что хочу посоветовать так это отделить файл авторизации от фала который отвечает за добавление, изменения данных в файл.
Во вторых вы сначала должны получать данные из базы а у только потом выводить HTML код пользователю.
Также предлагаю использовать hidden переменную
<input type="hidden" name="MyHiddenVarible" value="Update">
и смотря что вы хотите сделать по нажатию кнопки Update, Insert, Add меняете динамически, а потом из скрипта проверяете значение.
Мне кажется это поможет, или я не правильно понял ваш вопрос | |
|
|
|
|
|
|
|
для: Flash5
(04.05.2005 в 23:33)
| | Все, нашла проблему, все работает и изменяется! Огромное спасибо за проявленное внимание и помощь! | |
|
|
|
|