1 (изменено: VitoS, 2011-03-28 14:10:01)

Тема: добавление записей в бд через форму

Здраствуйте...подскажите пожалуйста как организовать добавление данных через форму в бд..сейчас попробую объяснить что именно требуется и что я сделал уже...мне нужно сделать так, чтобы по нажатию на кнопку открылась другая страница, где расположены поля, которые нужно будет добавлять:

echo '<form action="stud_add.php"  method="post" >';
echo "<input type='submit' name='dobavl' value='Добавить студента'>";
echo '</form>';

в открывшемся окне у меня появляются нужные поля. Форма добавления такая:
<p>

<input name="Fio" type="text" value=""> ФИО </p>

<p>
    <input name="stud_bil" type="text" value=""> № студенческого билета
</p>
<p>
    <input name="zach_kn" type="text" value=""> №зачетной книжки</p>
<p>
    <input name="att" type="text" value=""> №аттестата
</p>
<p>
    <input name="data_att" type="text" value=""> Дата выдачи аттестата</p>
<p>
    <input name="god_r" type="text" value=""> Год рождения</p>
<p>
  <input name="phone" type="text" value="">
    Телефон</p>
<p>
   <input name="gorod" type="text" value="">
    Город</p>
<input type=submit value="ok">
<p>&nbsp;</p>


Далее идет сам обработчик добавления:

<?php
include('db_login.php');
$connection=mysql_connect($db_host,$db_username,$db_password);
//mysql_query('SET NAMES utf8');
if (!$connection)
{
     die('Ошибка подключения к серверу баз данных');
}
$db_select=mysql_select_db($db_database);

if (!$db_select)
{
    die('База данных не найдена или отсутствует доступ');
}

$sex = $_POST['Fio'];
$sex1 = $_POST['stud_bil'];
$sex2= $_POST['zach_kn'];
$sex3= $_POST['att'];
$sex4= $_POST['data_att'];
$sex5= $_POST['god_r'];
$sex6= $_POST['phone'];
$sex7= $_POST['gorod'];


mysql_select_db($db_database);


$result = mysql_query("INSERT INTO studs (Fio, Nom_stud, Nom_zach, Nom_att, Data_doc, Gorod,phone,God_r) VALUES('$sex', '$sex1', '$sex2', '$sex3', '$sex4', '$sex7','$sex6','$sex5')");
if ($result== 'true')
{echo "Ваши данные успешно добавлены";}
else{echo "Ваши данные не добавлены";}
     
?>

но почему-то не происходит добавления...где я ошибся?..и хотел узнать: на добавление записи как-то влияет поле Id_stud, которое типа счетчик?..его надо прописывать при добавлении?

2

Re: добавление записей в бд через форму

Посмотрите как формируется SQL запрос и если запрос в порядке, то какую ошибку выдает при его выполнении. Запрос можно проверить и в phpMyAdmin.

$sql = "INSERT INTO studs (Fio, Nom_stud, Nom_zach, Nom_att, Data_doc, Gorod,phone,God_r) VALUES('$sex', '$sex1', '$sex2', '$sex3', '$sex4', '$sex7','$sex6','$sex5')"
exit($sql); // Первый перехват. Проверка запроса.
$result = mysql_query($sql);
if ($result== 'true')  {
  echo "Ваши данные успешно добавлены";
} else {
  echo "Ваши данные не добавлены. Ошибка: " . mysql_error(); // Проверка ошибки.
}

Если поле Id_stud имеет параметр AUTO_INCREMENT, то указывать его не надо.

3

Re: добавление записей в бд через форму

ну сам запрос вроде формируется правильно...а ошибка следующего типа :Incorrect string value: '\...' for column 'Fio' at row 1...или Incorrect integer value: '\...' for column 'Nom_stud' at row 1

4

Re: добавление записей в бд через форму

с этой ошибкой разобрался, добавляется..спасибо)

5

Re: добавление записей в бд через форму

не подскажите, как сделать так чтобы у меня студент добавлялся сразу в определнную группу...то есть у меня есть выпадающий список с группами и кнопка, которая формирует список группы:

$query="select * from grupps";

$result=mysql_query($query);
if (!$result)
{
  die ("Невозможно исполнить запрос к базе данных:<br/>".mysql_error());
}
echo '<div id=SG> <p align=center><br>Список группы</p> ';
echo '<form method="post" action="">';
echo "<SELECT NAME='NomGrup1'>";
while($row=mysql_fetch_array($result,MYSQL_ASSOC)){
$nomgrup=$row["NomGrup"];
if (isset($_REQUEST['NomGrup1']) && $_REQUEST['NomGrup1'] == $row["NomGrup"]) {
  echo "<option value='$nomgrup' selected='selected'>$nomgrup</option>";
} else {
  echo "<option value='$nomgrup'>$nomgrup</option>";
}
}
echo"</SELECT>";
echo "<input type='submit' name='spisok' value='Показать список' />";

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

6

Re: добавление записей в бд через форму

VitoS сказал:

как сделать так чтобы у меня студент добавлялся сразу в определнную группу

Если под новым окном подразумевается новая страница, то надо передать в нее выбор из выпадающего списка <SELECT NAME='NomGrup1'>. На новой странице необходимо сформировать такой же выпадающий список список и установить на необходимое поле параметр selected='selected'.

7 (изменено: VitoS, 2011-03-28 21:09:33)

Re: добавление записей в бд через форму

немного не понял в какое поле необходимо установить selected='selected'..вот я создал список :


$query="select * from grupps";

$result=mysql_query($query);
if (!$result)
{
  die ("Невозможно исполнить запрос к базе данных:<br/>".mysql_error());
}
echo "<SELECT NAME='NomGrup1' >";
while($row=mysql_fetch_array($result,MYSQL_ASSOC)){
$nomgrup=$row["NomGrup"];
  echo "<option value='$nomgrup'>$nomgrup</option>";
}
echo"</SELECT>";

этот параметр в самом списке?

8

Re: добавление записей в бд через форму

у меня студенты и группы-это разные таблицы...их разве никак не нужно связывать?

9

Re: добавление записей в бд через форму

VitoS сказал:

у меня студенты и группы-это разные таблицы...их разве никак не нужно связывать?

Я понял так:

while($row=mysql_fetch_array($result,MYSQL_ASSOC)){
$nomgrup=$row["NomGrup"];
if (isset($_REQUEST['NomGrup1']) && $_REQUEST['NomGrup1'] == $row["NomGrup"]) {
  echo "<option value='$nomgrup' selected='selected'>$nomgrup</option>";
} else {
  echo "<option value='$nomgrup'>$nomgrup</option>";
}
}

Если это не то, значит я не правильно понял что надо делать.

10

Re: добавление записей в бд через форму

не срабатывает..сейчас попробую объяснить что нужно...есть 3 таблицы Группы и Студенты и одна их связывает...значит, есть список выпадающий и кнопка, нажав на которую получаем список группы, выбранной в списке...далее нужно в эту группу добавить студента...я делаю это с помощью другой страницы, на которой есть различные поля для добавления информации в таблицу студенты..инфо о группе пока там нет...я размещал там выпадающий список, но не получается...как быть подскажите пожалуйста

11

Re: добавление записей в бд через форму

Если группа уже выбрана, то на новой странице нет необходимости делать выпадающий список, просто передайте на страницу то, что выбрано здесь <SELECT NAME='NomGrup1'>.

Внутри формы (тег <form>) делается скрытое поле и в нем сохраняется значение группы. Делается примерно так:

<input type="hidden" name="NomGrup1" value="<?php echo $_POST['NomGrup1']; ?>" />

12

Re: добавление записей в бд через форму

а разве не нужно нигде делать связку 2х таблиц..просто собственно самой привязки студента к группе нигде не делается..или я не прав?

13

Re: добавление записей в бд через форму

вот я тут попробовал сделать, чтобы добавлялась информация сразу и в таблицу stud_grup (они привязывает студента к группе) и studs:

if (isset($_REQUEST['dobav'])){
$sql = "INSERT INTO studs (Fio, Nom_stud, Nom_zach, Nom_att, Data_doc, Gorod,phone,God_r) VALUES('$sex', '$sex1', '$sex2', '$sex3', '$sex4', '$sex7','$sex6','$sex5')";
$result = mysql_query($sql);
if (!$result)
{echo "Ваши данные не добавлены". mysql_error();}

$sql1="select Id_stud,Fio from studs where Fio=$sex";
$result1 = mysql_query($sql1);
if (!$result1) {
echo "невозможно выполнить запрос".mysql_error();}
$row = mysql_fetch_assoc($result1);
$id_stud=$row['Id_stud'];

$sql2="select Id_grup,NomGrup from grupps where NomGrup=" . $_REQUEST['NomGrup1'];
$result2 = mysql_query($sql2);
if (!$result2) {
echo "невозможно выполнить запрос".mysql_error();}
$row1 = mysql_fetch_assoc($result2);
$id_grup=$row1['Id_grup'];

$sql3="Insert into stud_grup (Id_stud,Id_grup) values ('$id_stud','$id_grup')";
$result3 = mysql_query($sql3);
if (!$result3)
{echo "Ваши данные не добавлены". mysql_error();}
}     

я тут находил сами значения идентификаторов группы и добавленного студента, а потом эти идентификаторы добавил в таблицу stud_grup...но у меня не сработало(..так вообще можно делать?

14

Re: добавление записей в бд через форму

VitoS сказал:

а разве не нужно нигде делать связку 2х таблиц..просто собственно самой привязки студента к группе нигде не делается..или я не прав?

Связка таблиц нужна и делается через соответствующее поле (идентификатор группы) в таблице пользователя. То есть: в таблице пользователя должно быть поле хранящее идентификатор группы, значение поля задается при создании пользователя; таким образом получается связь таблицы пользователя и таблицы группы.

15

Re: добавление записей в бд через форму

а вот если делается скрытое поле, которое хранит значение группы так: <input type="hidden" name="NomGrup1" value="<?php echo $_POST['NomGrup1']; ?>" />...а можно как-то обратиться к этому значению?..ну то есть вот в запросе :$sql2="select Id_grup,NomGrup from grupps where NomGrup=".$_POST['NomGrup1']; я правильно обратился?

16 (изменено: VitoS, 2011-03-30 19:24:05)

Re: добавление записей в бд через форму

подскажите пожалуйста как можно решить задачу...есть выпадающий список, в котором содержатся предметы..мне нужно чтобы при выборе определенного предмета определялся его тип (экзамен или зачет) либо в текстовом поле, либо в простом лейбле...создаю выпадающий список:

echo "<SELECT NAME='Predmets'>";
while($row=mysql_fetch_array($result,MYSQL_ASSOC)){
$predmet=$row["Nazv"];
if (isset($_REQUEST['Predmets']) && $_REQUEST['Predmets'] == $row["Nazv"]) {
  echo "<option value='$predmet' selected='selected'>$predmet</option>";
} else {
  echo "<option value='$predmet'>$predmet</option>";
}
}
echo"</SELECT>";

далее я поставил такое условие:

if (isset($_REQUEST['Predmets'])){
$pr="Select * from predmets where Nazv=" . $_REQUEST['Predmets'];
$rest=mysql_query($pr);
$typ=mysql_fetch_assoc($rest);
$type_pred=$typ['type_pred'];
echo '<input name="predmet" type="text" value="$type_pred"> Тип предмета';
}

но ничего не выводится(..помогите пожалуйста

17

Re: добавление записей в бд через форму

VitoS сказал:

то есть вот в запросе :$sql2="select Id_grup,NomGrup from grupps where NomGrup=".$_POST['NomGrup1'];

Примерно для этого значение NomGrup1 и сохраняется, чтобы при создании пользователя (студента) в соответствующее поле таблицы пользователя писать идентификатор группы.

VitoS сказал:

$pr="Select * from predmets where Nazv=" . $_REQUEST['Predmets'];

Если в переменной $_REQUEST['Predmets'] содержится строка, то ее необходимо заключить в кавычки.
$pr="Select * from predmets where Nazv='" . $_REQUEST['Predmets'] . "'";

18

Re: добавление записей в бд через форму

а остальное правильно?..просто все равно не срабатывает...мне нужно чтобы тип выводился динамически, то есть сразу после выбора предмета из списка, снизу или сбоку от выпадающего списка..это нужно делать с помощью javascript или возможно в php?

19

Re: добавление записей в бд через форму

VitoS сказал:

мне нужно чтобы тип выводился динамически, то есть сразу после выбора предмета из списка

Это означает без перезагрузки страницы? Если да, то только JavaScript.

По выводу. У вас этот запрос работает вообще?
$pr="Select * from predmets where Nazv='" . $_REQUEST['Predmets'] . "'";
Выполните его в phpMyAdmin подставив соответствующее значение. Если SQL запрос возвращает необходимые данные, то смотрите как в скрипт приходит $_REQUEST['Predmets']. Для этого достаточно перехватить ее таким образом:

exit($_REQUEST['Predmets']);

20

Re: добавление записей в бд через форму

в phpmyadmin все работает правильно...а что примерно должно содержаться в скрипте?..просто с javascript не очень знаком(

21

Re: добавление записей в бд через форму

VitoS сказал:

в phpmyadmin все работает правильно...а что примерно должно содержаться в скрипте?..просто с javascript не очень знаком(

Если запрос в phpMyAdmin отрабатывает, то проверьте его в скрипте жестко подставив значение.
$pr="Select * from predmets where Nazv='ищем'";

По JavaScript я пока не смог понять задачу. Постарайтесь описать ее максимально просто. Например: из списка №1 выбираем "авыф" и в списке №2 должно появиться "фыва". С пользователями и группами я уже запутался.

22

Re: добавление записей в бд через форму

сейчас попробую объяснить...есть список Predmets, в котором содержатся предметы...из этого списка выбираем предмет и в каком-нибудь объекте(text или label) должен появиться тип этого предмета..то есть выбираем предмет "Мат анализ" и рядом появляется "Тип предмета экзамен"...

у меня список построен, тип предмета я уже тоже загнал в переменную..осталось только вывести его при выборе предмета..

23

Re: добавление записей в бд через форму

VitoS сказал:

у меня список построен, тип предмета я уже тоже загнал в переменную..осталось только вывести его при выборе предмета

Удобнее всего сделать так:
Формируем переменную содержащую идентификатор предмета и значение типа предмета, которое должно появиться.

<script>
var assoc = {
  1:"Экзамен №1",
  2:"Экзамен №2"
};
</script>

Далее создаем функцию обработки при выборе из выпадающего списка предметов.

<script>
function L_onchange(oOption) {
  document.getElementById("label").innerHTML = assoc[oOption.value];
}
</script>
<select onchange="L_onchange(this);">
  <option value="1">Предмет №1</option>
  <option value="2">Предмет №2</option>
</select>
<div id="label"></div>

24

Re: добавление записей в бд через форму

<script>
var assoc = {
  1:"Экзамен №1",
  2:"Экзамен №2"
};
</script>

вот здесь мы указываем идентификатор предмета 1 и 2...а как указать ,если этот идентификатор зависит от выбранного предмета и тип предмета зависит тоже от выбранного предмета...ну, к примеру, я выбираю "мат анализ", определяется его идентификатор "3" и сразу же тип "экзамен"....это получается что список должен строиться раньше, а потом при реализации скрипта вызываться?

25

Re: добавление записей в бд через форму

VitoS сказал:

здесь мы указываем идентификатор предмета 1 и 2...а как указать ,если этот идентификатор зависит от выбранного предмета

Никак у меня не получается вас понять. Попробуйте составить упрощенный пример, приведите html разметку и то как элементы должны взаимодействовать.