Возможно ли из MySQL возвращать в хтмл значение поля select?

emeli

Guest
Фанат, нет не уверена, но уже было достаточно ошибок, когда переменную ссесии, мы никак не хотели вводить... Только после ввода кода
<?
session_start();
?>
перед основным кодом, он стал заносить переменную имени пользователя нормально, а не через раз!

Фанат, может ты можешь идею внести в данную ситуацию?
 

chira

Новичок
emeli
PHP:
<?php
//....
$query = "select count(*) from tabl1 where login = '$login'";
// если делаешь count, то это значение нужно прочитать

$result = mysql_query( $query );
$row=mysql_fetch_array($result);
if($row[0] > 0)
{
echo 'Такая запись уже есть. Она обновится.';
$query = "update tabl1 set (login = '$login', v1 = '$v1', v2 = '$v2', v3 = '$v3', v4 = '$v4', v5 = '$v5', v6 = '$v6', v7 = '$v7', v8 = '$v8', v9 = '$v9', v10 = '$v10', v11 = '$v11', v12 = '$v12', v13 = '$v13', v14 = '$v14', v15 = '$v15') where login ='$login'"; 
/// ????????  точно нужен exit;
}else{
//Если все нормально, сохранить информацию в БД
$query = "insert into tabl1 values ('$login', '$v1', '$v2', '$v3', '$v4', '$v5', '$v6', '$v7', '$v8', '$v9', '$v10', '$v11', '$v12', '$v13', '$v14', '$v15')"; 
}

$result = mysql_query($query);
if ($result)
{
echo 'Данные сохранены.';
echo '<p><a href="login.php">Веронуться к списку таблиц</a></p>'; 
}else echo mysql_error();

?>
 

emeli

Guest
chira, большое спасибо за этот код! Но с v15, никак не хотел обновлять! Я удалила эту запись везде, все получилось. Вписала заново ее и в html коде и в базу, теперь обновление работает!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Всем кто проявил внимание огромное спасибо!!!
 

Фанат

oncle terrible
Команда форума
Могу, конечно.
Причина, по которой переменная в сессию заносится через раз, состоит в том, что мы во-первых, не понимаем, что такое сессия, и как она работает, а во-вторых, лепим опечатки в больших количествах, а мотом пытаемся спихнуть на механизм. (Денвер, сессии и так далее)

Поэтому чем раньше ты поймёшь, что "не работает" у тебя только из-за криво написанного ТОБОЙ кода, (и будешь соответственно, искать ошибку именно там, где она есть) - тем быстрее у тебя заработает твоя система.

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

emeli

Guest
Хочется вернуться к вопросу по поводу «возможно ли из 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>';
}
}
?>
 

yugene

Отошел от дел
Автор оригинала: emeli
Название диплома довольно мудренное... Разработка сайта по изучению методики внедрения SAP R/3 на РЖД...
emeli , если не секрет, в каком ВУЗе ты учишься и на какой специальности?
 

yugene

Отошел от дел
Автор оригинала: emeli
yugene, МИИТ, ПО, а чем вызван интерес?
Спасибо за ответ. Имею представление о SAP\R3, хотелось узнать, в каком ВУЗе имеют дело с такой серьезной системой :)
 

emeli

Guest
yugene, с такой серьезной системой дело думаю ни в одном вузе не имеют, просто я сама интересуюсь данной системой, и надеюсь, что сумею устроиться в IBS по данному направлению. 2 месяца назад пришлось отказаться от этой работы, потому что поняла, что не потяну с написанием диплома. А о SAP узнала благодаря своему вузу, что данная система внедрена на ЖД(МИИТ это железнодорожный вуз.)

Вновь хочу вернуться к своей проблеме... насколько я понимаю в html меняю форму вопросов на

<TR>
<TD ALIGN="left">1</TD>
<TD ALIGN="left">Как долго рассматривается ERP- система продается именно этим поставщиком? </TD>
<TD ALIGN="left">
<SELECT name="v1" size="1">
<OPTION selected value=1>Нет ответа</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>
</TD>
</TR>

То есть в базу подаются значения в виде номеров ответа.
На сколько я понимаю делаю такой запрос из базы
$query = "select v1, v2, v3... from tabl1 where login = '$login'";

где v1,v2,v3... и так далее сколько там полей надо передать...
Как ответ в данном случае поместить в $v1, $v2 и т.д. И передавать это в обратно форму... Не мог бы кто-нибудь пояснить наглядным кодом, дело в том, что не понимаю, как это можно вернуть в форму :-/ Очень рассчитываю на помощь специалистов!
 

Фанат

oncle terrible
Команда форума
Как ответ в данном случае поместить в $v1, $v2 и т.д. И передавать это в обратно форму... Не мог бы кто-нибудь пояснить наглядным кодом,
Код тебе не поможет.
Ты должна для начала понять, что такое пхп.
Почитай, пожалуйста, внимательно и в думчиво, вот этот текст: PHP FAQ: Самые основы. Как работает PHP.
В особенности - про то, что является результатам работы пхп.
А дальше сама догадаешься, что тебе делать и как "вставлять" в форму.
 

SelenIT

IT-лунатик :)
emeli
Чем вывести атрибут selected у опции с заранее известным значением труднее, чем вывести его у опции со значением 1 ("Нет ответа")?
 

emeli

Guest
SelenIT, я не совсем поняла вопрос. Задача состоит в том, чтобы пользователь сохранив данные, смог их отредактировать. Поэтому необходимо возвращать старое значение, необязательно "Нет ответа", это поле стоит по умолчанию, если данные вопрос не заполнен. Я не понимаю структуру присваивания как это сделать.
 

Фанат

oncle terrible
Команда форума
Ответь сначала на один вопрос.
Ты можешь выделить нужный элемент с помощью html?
Можешь руками написать html, который будет выглядеть именно так, как тебе надо? Чистый html, без пхп?
можешь?
 

SelenIT

IT-лунатик :)
ОК, разобъем задачу на части.
1) Как ты извлекаешь старые ответы из базы?
2) Как ты присваиваешь атрибут selected значению по умолчанию? (см. подсказку Фаната)
 

emeli

Guest
Не знаю к правильному ли решению я пришла. Переход к таблицам я решила сделать, как tabl_1.php… Туда же вставлять код php, проверяющий наличие записи. Вот кусок скрипта

<script Language="php">
// пропущена проверка подключения к базе

mysql_select_db("miit");
$result = mysql_query("select * from tabl1 where login='$login'");
if (!$result)
echo 'Данная запись не присутствует в таблице, ее не надо возвращать';
else
{
echo 'Данная запись присутствует, нам надо ее вернуть!';
$tb1 = mysql_query("select * from tabl1 where login='$login'");
$row = mysql_fetch_array($tb1);
// а вот дальше?
}
Таким образом получается создается массив данных из таблицы tabl1 со всеми значениями столбцов. Далее идет сама форма
<FORM NAME = "tabl_1" METHOD="post" ACTION="tabl1.php";>
.
.
.
<TR>
<TD ALIGN="left">1</TD>
<TD ALIGN="left">Как долго рассматривается ERP- система продается именно этим поставщиком? </TD>
<TD ALIGN="left">
<SELECT name="v1" size="1">
<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>
</TD>
</TR>
.
.
.
// и т.д.
</FORM>

Получается, что если пользователь впервые заполняет данную таблицу, то ему отображается обычный вариант, а если уже заполнял, то надо передать значения имеющихся записей. Вопрос, как организовать присвоение каждому полю, поля именованы, как v1,v2 и т.д. и выводить это в форму?
 

SelenIT

IT-лунатик :)
Выводить selected у той опции каждого поля, значение которой равно значению соответствующего поля из базы. И только если нет значения из базы - то у опции по умолчанию. Сравнение значений, надеюсь, проблем не вызовет?
 

Фанат

oncle terrible
Команда форума
emeli
Поскольку это слишком сложно для твоего понимания, давай пока не будем заполнять поле селект.
Давай ты сначала попробуешь вывести значение у поля типа text.
 

morti

Новичок
emeli я бы посоветовал в следующий раз полный запрос использовать, ну так мол на будущее ж-)))

INSERT INTO table (Поле1, Поле2, Поле3) VALUES(Знач1, Знач2, Знач3);
 

SelenIT

IT-лунатик :)
emeli
Так и быть... Вот жутко неоптимальный код, который, тем не менее, отвечает на поставленный вопрос и иллюстрирует общий принцип:
PHP:
<SELECT name="v1" size="1">
<OPTION value=1<? if (empty($v1) || 1==$v1) echo ' selected'; ?>>Нет ответа</OPTION>
<OPTION value=2<? if (!empty($v1) && 2==$v1) echo ' selected'; ?>>Ранее</OPTION>
<OPTION value=3<? if (!empty($v1) && 3==$v1) echo ' selected'; ?>>С 2001 года</OPTION>
И еще, почитай про [m]mysql_query[/m] - что и в каких случаях она возвращает, в частности, в каком случае она возвращает FALSE.
 

emeli

Guest
Саму форму я поменяла на
<SELECT name="v1" size="1">
<OPTION value=1<? if (empty($v1) || 1==$v1) echo ' selected'; ?>>Нет ответа</OPTION>
<OPTION value=2<? if (!empty($v1) && 2==$v1) echo ' selected'; ?>>Ранее</OPTION>
<OPTION value=3<? if (!empty($v1) && 3==$v1) echo ' selected'; ?>>С 2000 года</OPTION>
<OPTION value=4<? if (!empty($v1) && 4==$v1) echo ' selected'; ?>>С 2001 года</OPTION>
<OPTION value=5<? if (!empty($v1) && 5==$v1) echo ' selected'; ?>>С 2002 года</OPTION>
<OPTION value=6<? if (!empty($v1) && 6==$v1) echo ' selected'; ?>>С 2003 года</OPTION>
<OPTION value=7<? if (!empty($v1) && 7==$v1) echo ' selected'; ?>>С 2004 года</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 выводится правильно, а вот данные не меняются в форме. Может я что-то не правильно поняла?
 
Сверху