|
 61.4 Кб |
|
| Грамотные люди, помогите пожалуйста!
В базе данных имеется две связных таблицы (тип таблиц InnoDB MySQL)
1) orgs:
* id_org (a_inc)
name_org
adress
.....
2) users:
*id_user (a_inc)
fio_user
.....
id_org
orgs.id_org* является внешним ключом для users.id_org
Необходимо чтобы в разрабатываемой форме ввода данных "users" при вводе информации поле id_org выводилось в виде раскрывающегося списка с перечнем организаций (name_org), а не первичных ключей *id_org. При этом в таблицу users должны вноситься только id_org.
Посмотрите приложенное изображение, там яснее будет.
Посоветуйте способ реализации новичку. | |
|
|
|
|
|
|
|
для: romu4-
(28.04.2009 в 02:18)
| | Вот ведь нравятся мне такие формулировки.
Вы напишите код, который строит этот раскрывающийся список пусть даже с перечнем первичных ключей.
Уверяю Вас, чтобы исправить его на перечень наименований организаций, нужно будет в одном месте заменить id_org на name_org и ничего больше. | |
|
|
|
|
|
|
|
для: Trianon
(28.04.2009 в 07:59)
| |
<?php
//"Защита от хостингов не поддерживающих прямую передачу переменных"
if (isset($_POST['fio_user']))
{
$fio_user = $_POST['fio_user'];
}
if (isset($_POST['contact']))
{
$contact = $_POST['contact'];
}
if (isset($_POST['id_org']))
{
$id_org = $_POST['id_org'];
}
//Соединение с базой даных
require_once ("config.php");
//Посылка запроса и ввод информации
$query = "INSERT INTO users ( fio_user, contact, id_org) VALUES
( '$fio_user', '$contact', '$id_org')";
// id_org в таблице orgs является первичным ключом
$result = mysql_query ($query, $dbcon);
if ($result == 'true')
{
echo "Информация о новом пользователе оборудования успешно добавлена!!!";
}
else
{
echo "Ошибка! Информация о новом пользователе оборудования не добавлена!!!";
}
?>
------------------------------------------------------------------------------------------------------------------------------
А это форма для ввода информации в таблицу Users
<body>
<form action="/users_insert.php" method="post" name="form">
<p>Ф.И.О. пользователя оборудования<br> <input name="fio_user" type="text" size="50" maxlength="50" />
</p>
<p>Контактная информация пользователя оборудования<br> <textarea name="contact" cols="50" rows="5"></textarea>
</p>
<p>Организация пользователя оборудования<br> <select name="id_org">
// Здесь нужно сформировать динамически строящийся выпадающий список с перечнем названий организаций. При выборе имени организации необходимо чтобы в таблицу user вносилось не имя организации а ее id_org.
</select> </p>
<p><input name="submit" type="submit" value="Добавить пользователя" /> </p>
</form>
|
| |
|
|
|
|
|
|
|
для: romu4-
(28.04.2009 в 11:01)
| |
<?php
$res = mysql_query($sql = "SELECT * FROM orgs");
if(!$res) exit("Error in $sql : ". mysql_error());
while( $row = mysql_fetch_assoc($res) )
echo "<option value =\"$row[id_org]\">".htmlspecialchars($row['name_org'])."</option>\r\n";
?>
|
| |
|
|
|
|
 26 Кб |
|
|
для: Trianon
(28.04.2009 в 12:15)
| | Спасибо огромное, Trianon, все отлично работает!!!
Все просто оказалось а я там такое понавыдумывал...
<form action="/users_insert.php" method="post" name="form">
<p>Ф.И.О. пользователя оборудования<br> <input name="fio_user" type="text" size="50" maxlength="50" />
</p>
<p>Контактная информация пользователя оборудования<br> <textarea name="contact" cols="50" rows="5"></textarea>
</p>
<p>Организация пользователя оборудования<br>
<select name="id_org">
<?php
// Соединение с базой даных
require_once ("config.php");
$sql = "SELECT * FROM orgs";
$res = mysql_query($sql, $dbcon);
if(!$res) exit("Error in $sql : ". mysql_error());
while( $row = mysql_fetch_assoc($res) )
echo "<option value =\"$row[id_org]\">".htmlspecialchars($row['name_org'])."</option>\r\n";
?>
</select> </p>
<p><input name="submit" type="submit" value="Добавить пользователя" /> </p>
</form>
|
| |
|
|
|
|
 40.8 Кб |
|
|
для: Trianon
(28.04.2009 в 12:15)
| | Trianon,
подскажите в чем проблема!
Я пытаюсь на форме ввода данных использовать два динамически формирующихся меню SELECT. Использую тот же метод, что вы мне показали ранее, но данные не добавляются в БД. Происходит ошибка. Может быть нельзя дважды применять функцию "mysql_fetch_assoc"? Если это так, то мне наверное следует применять функцию "mysql_fetch_array"?
Привожу два листинга, чтобы Вам было яснее...
Форма для ввода данных:
<body>
<div align="center"><span class="стиль1">Добавление нового зарядного устройства</span></div>
<form action="/charger_insert.php" method="post" name="form">
<p>Инвентарный номер зарядного устройства <br> <input name="num_inv" type="text" size="30" maxlength="30" /> </p>
<p>Модель зарядного устройства <br>
<select name="c_model">
<?php
// Соединение с базой даных
require_once ("config.php");
$sql = "SELECT c_model FROM c_models";
$res = mysql_query($sql, $dbcon);
if(!$res) exit("Error in $sql : ". mysql_error());
while( $row = mysql_fetch_assoc($res) )
echo "<option value =\"$row[c_model]\">".htmlspecialchars($row['c_model'])."</option>\r\n";
?>
</select> </p>
<p>Дата ввода в эксплуатацию зарядного устройства <br> <input name="date_fu" type="text" size="30" maxlength="30" /> </p>
<p>Дата вывода из эксплуатации зарядного устройства <br> <input name="date_lu" type="text" size="30" maxlength="30" /> </p>
<p>Статус зарядного устройства <br>
<select name="status">
<option value="Выдано">Выдано</option>
<option value="Готово к выдаче">Готово к выдаче</option>
<option value="Проходит ТО">Проходит ТО</option>
<option value="Не исправно">Не исправно</option>
<option value="Списано">Списано</option>
</select> </p>
<p>Пользователь зарядного устройства <br>
<select name="id_user">
<?php
// Соединение с базой даных
require_once ("config.php");
$sqlu = "SELECT id_user, fio_user FROM users";
$resu = mysql_query($sqlu, $dbcon);
if(!$resu) exit("Error in $sqlu : ". mysql_error());
while( $rowu = mysql_fetch_assoc($resu) )
echo "<option value =\"$rowu[id_user]\">".htmlspecialchars($rowu['fio_user'])."</option>\r\n";
?>
</select> </p>
<input name="submit" type="submit" value="Добавить" />
</form>
</body>
|
Файл РНР для записи данных в БД, получает данные из формы. В нем я специально применил вывод полученной информации на экран, чтобы увидеть, что данные до формы доходят. Они до формы доходят! Сделал скриншот, поглядите. Но при выполнении запроса возникает какая-то ошибка и данные не вносятся в БД.
<body>
<?php
//"Защита от хостингов не поддерживающих прямую передачу переменных"
if (isset($_POST['num_inv']))
{
$num_inv = $_POST['num_inv'];
}
if (isset($_POST['c_model']))
{
$c_model = $_POST['c_model'];
}
if (isset($_POST['date_fu']))
{
$date_fu = $_POST['date_fu'];
}
if (isset($_POST['date_lu']))
{
$date_lu = $_POST['date_lu'];
}
if (isset($_POST['status']))
{
$status = $_POST['status'];
}
if (isset($_POST['id_user']))
{
$id_user = $_POST['id_user'];
}
echo $num_inv;
echo $c_model;
echo $date_fu;
echo $date_lu;
echo $status;
echo $id_user;
//Cоединение с базой даных
require_once("config.php");
//Добавление информации в базу данных
$query = "INSERT INTO charger (num_inv, c_model, date_fu, date_lu, status, id_user)
VALUES('$num_inv', '$c_model', '$date_fu', '$date_lu', '$status', '$id_user')";
$result = mysql_query ($query, $dbcon);
if ($result == 'true')
{
echo "Информация о новом зарядном устройстве для радиостанций успешно добавлена!!!";
}
else
{
echo "Ошибка! Информация о новом зарядном устройстве для радиостанций не добавлена!!!";
}
?>
</body>
|
| |
|
|
|
|
|
|
|
для: romu4-
(01.05.2009 в 12:46)
| | После последнего вызова mysql_query (INSERT) нужно проверять результат запроса точно также, как я показал для запросов (SELECT) | |
|
|
|
|
 44.1 Кб |
|
|
для: Trianon
(01.05.2009 в 12:55)
| | Пишет следующую ошибку:
" Incorrect date value: '' for column 'date_lu' at row 1"
Действительно, когда я ввожу дату в поле date_lu запись происходит нормально.
Это странно , ведь. значение данного поля может иметь пустое значение, т.к. при создании таблицы БД я пометил его как NULL (см. фото структуры таблицы)
Может при присвоении нулевого значения переменной $date_lu в нее прописывается пустая строчка не DATE-типа? | |
|
|
|
|
|
|
|
для: romu4-
(01.05.2009 в 13:41)
| | пустая строка и неопределенное значение - разные вещи.
вместо фото лучше приклеивать дамп. | |
|
|
|
|
|
|
|
для: Trianon
(01.05.2009 в 16:13)
| | А как мне этот дамп увидеть и передать Вам?
Извините за глупый вопрос, но студенты везде одинаковы. ;-)
Знакомлюсь с MySQL и PHP две недели - пишу диплом, поэтому много разных вопросов и недопониманий. | |
|
|
|
|
|
|
|
для: romu4-
(01.05.2009 в 22:27)
| | Дамп базы MySQL - это текстовый файл содержащий набор SQL запросов.
В вашем случае INSERT INTO charger VALUES (...);
Я недавно здесь задавал похожий вопрос по проблеме не отправления данных в базу и позволю себе совет.
1) выведите сам SQL запрос, хотя бы print ($query); и посмотрите что вы реально отправляете в базу
2) неплохо бы привести SQL выражение создающее нужную вам таблицу, может проблемы с полями таблицы
3) проверте кодировку таблицы в базе. | |
|
|
|
|
|
|
|
для: romu4-
(01.05.2009 в 22:27)
| | Увидеть дамп можно в phpMyAdmin в разделе Экспорт.
В его терминах дамп структуры представляет собой набор операторов CREATE TABLE
Дамп данных - набор операторов INSERT
Полный дамп включает в себя и те и другие операторы.
Архив с дампом можно прикрепить к посту. | |
|
|
|
|
|
|
|
для: Trianon
(03.05.2009 в 08:17)
| | Теперь понял, я уже делал прежде экспорт базы данных на второй ПК.
Под дампом в терминологии БД понимается ее структура, я так и подумал изначально, но засомневался в некоторый момент.
Википедия гласит "Термин дамп используется в отношении баз данных для выдачи информации, достаточной для её создания «с нуля» (дамп базы данных)"
При добавлении данных через phpMyAdmin с пустым полем date_lu в запросе передается значение NULL.
Вот так:
INSERT INTO `trunksys`.`charger` (`num_inv`, `c_model`, `date_fu`, `date_lu`, `status`, `id_user`) VALUES ('ацуауц', 'dsf45geh', '2009-05-14', NULL, 'оке', '4');
|
Нужно сделать чтобы из формы form значение ' ' текстового поля date_lu преобразовывалось к виду NULL, как я понял...
С датами я разобрался (временно) путем ввода значения по-умолчанию 0000-00-00 вместо "NULL" (хотя это далеко не хороший результат), тк появились более важные первоочередные задачи.
Дамп приложу к посту с новым возникшим вопросом.
Спасибо Вам! | |
|
|
|
|
 5.5 Кб |
|
|
для: Trianon
(01.05.2009 в 12:55)
| | Здравствуйте, Trianon!
У меня возникла сложность, не могли бы Вы мне снова помочь? Это связано с выпадающим списком select , с которым Вы мне помогли ранее.
Не могу сообразить как сузить набор значений в нем по первоначальным символам. Создавал тему, но там никто серьезный не побывал...
[url]
http://softtime.ru/forum/read.php?id_forum=1&id_theme=64859&page=1
[/url]
Столкнулся с такой сложной для меня задачей.
Помогите, пожалуйста, кто сталкивался с подобным или имеет большой опыт в программировании на PHP.
Есть некоторый динамически формирующийся элемент SELECT. Свое содержимое он берет в связной таблице БД. Предположим, что в некоторый момент элементов списка SELECT стало чрезмерно много, так что выбор элемента стал не удобен. Возникает необходимость сузить существующий огромный список элементов. Это можно сделать , например, осуществив фильтрацию элементов по названию. Т.е. я хочу получить такой список SELECT в котором можно до нажатия стрелочки выбора ввести пару символов, в результате чего в списке будут содержаться только элементы, имеющие в названии такой же порядок символов, что я и ввел.
Встречал подобное в Delphi и C-Builder, а как осуществить в PHP не имею представления ввиду двухнедельного опыта программирования на этом языке.
Привожу код, где хотелось бы получить подобную функцию:
<?php
include ("menu_top.php");
?>
<div align="center" class="StyleForHeader"> <p> <br> </p> <p> Добавление нового пользователя оборудования </p> </div>
<form action="/users_insert.php" method="post" name="form">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="11%" align="left" valign="baseline"> </td>
<td width="32%" align="left" valign="baseline">Ф.И.О. пользователя оборудования</td>
<td width="32%" align="left" valign="baseline"><input name="fio_user" type="text" size="50" maxlength="50" /></td>
<td width="25%" align="left" valign="baseline"> </td>
</tr>
<tr>
<td align="left" valign="baseline"> </td>
<td align="left" valign="baseline"> </td>
<td align="left" valign="baseline"> </td>
<td align="left" valign="baseline"> </td>
</tr>
<tr>
<td align="left" valign="baseline"> </td>
<td align="left" valign="top">Контактная информация пользователя оборудования</td>
<td align="left" valign="baseline"><textarea name="contact" cols="50" rows="5"></textarea></td>
<td align="left" valign="baseline"> </td>
</tr>
<tr>
<td align="left" valign="baseline"> </td>
<td align="left" valign="baseline"> </td>
<td align="left" valign="baseline"> </td>
<td align="left" valign="baseline"> </td>
</tr>
<tr>
<td align="left" valign="baseline"> </td>
<td align="left" valign="baseline">Организация пользователя оборудования</td>
<td align="left" valign="baseline"><select name="id_org">
<?php
// Соединение с базой даных
require_once ("config.php");
$sql = "SELECT * FROM orgs";
$res = mysql_query($sql, $dbcon);
if(!$res) exit("Error in $sql : ". mysql_error());
while( $row = mysql_fetch_assoc($res) )
echo "<option value =\"$row[id_org]\">".htmlspecialchars($row['name_org'])."</option>\r\n";
?>
</select></td>
<td align="left" valign="baseline"> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="38%" align="center" valign="baseline"> </td>
<td width="24%" align="center" valign="baseline"> </td>
<td width="38%" align="center" valign="baseline"> </td>
</tr>
<tr>
<td align="center" valign="baseline"> </td>
<td align="center" valign="baseline"><input name="submit" type="submit" value="Добавить пользователя" /></td>
<td align="center" valign="baseline"> </td>
</tr>
</table>
</form>
|
| |
|
|
|
|
|
|
|
для: romu4-
(06.05.2009 в 10:59)
| | >Есть некоторый динамически формирующийся элемент SELECT. Свое содержимое он берет в связной таблице БД. Предположим, что в некоторый момент элементов списка SELECT стало чрезмерно много, так что выбор элемента стал не удобен. Возникает необходимость сузить существующий огромный список элементов. Это можно сделать , например, осуществив фильтрацию элементов по названию. Т.е. я хочу получить такой список SELECT в котором можно до нажатия стрелочки выбора ввести пару символов, в результате чего в списке будут содержаться только элементы, имеющие в названии такой же порядок символов, что я и ввел.
php не работает ни с какими select'ами , opiion'ами и прочими атрибутами html-страницы. php - серверный язык.
страница отображается браузером. на клиентской машине. Соответствующий язык - JS . Соответствующий раздел форума - правее. | |
|
|
|