Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] Сохранение данных в MySQL через php (http://forum.oszone.net/showthread.php?t=116618)

FoXLee 08-09-2008 20:04 893977

Сохранение данных в MySQL через php
 
Здравствуйте уважаемые камрады, вот уже замучался задачку решать, сразу скажу, что я новичок, только недавно поднял апач, mysql, php и не получается заставить данные пересылаться в базу данных через веб-интерфейс.

Код:

<HTML>
<HEAD>
<TITLE>Добавление вакансий</TITLE>
</HEAD>
<BODY>
<H1>Добавление записей в список вакансии</H1>
<FORM METHOD="post" ACTION="add_vac.php">
<P><STRONG>Номер вакансии :</STRONG><BR>
<INPUT TYPE="text" NAME="vac_id" SIZE=5 MAXLENGHT=5></p>
<P><STRONG>Должность :</STRONG><BR>
<INPUT TYPE="text" NAME="vac_name" SIZE=100 MAXLENGTH=150</p>
<P><STRONG>Возраст :</STRONG><BR>
<INPUT TYPE="text" NAME="age" SIZE=20 MAXLENGTH=100</p>
<P><STRONG>Образование :</STRONG><BR>
<INPUT TYPE="text" NAME="formation" SIZE=100 MAXLENGTH=150</p>
<P><STRONG>Опыт работы :</STRONG><BR>
<INPUT TYPE="text" NAME="exp" SIZE=100 MAXLENGTH=150</p>
<P><STRONG>Обязанности :</STRONG><BR>
<TEXTAREA NAME="duties" COLS=50 ROWS=3 WRAP=virtual></TEXTAREA></p>
<P><STRONG>Условия :</STRONG><BR>
<TEXTAREA NAME="conditions" COLS=50 ROWS=3 WRAP=virtual></TEXTAREA></p>
<P><STRONG>Контакты :</STRONG><BR>
<INPUT TYPE="text" NAME="contacts" SIZE=100 MAXLENGTH=150</p>
<P><STRONG>Дата добавления вакансии (ГГГГ-ММ-ДД) :</STRONG><BR>
<INPUT TYPE="text" NAME="date" SIZE=10 MAXLENGTH=10</p>
<P><INPUT TYPE="SUBMIT" NAME="submit" VALUE="Добавить"></P>
</FORM>
</BODY>
</HTML>

Код:

<?
if ((!$vac_id) || (!$vac_name) || (!$conditions) || (!$contacts) || (!$date)) {
header("Location: http://localhost/add_vac.html");
exxit;
}
$db_name = "goDB";
$table_name = "vacancies";
$connection = @mysql_connect("localhost", "root", "qwerty")
or die("Невозможно подключиться MySQL.");
$db = @mysql_select_db ($db_name, $connection)
or die ("Невозможно выбрать базу данных.");
$sql = "INSERT INTO $table_name
(vac_id, vac_name, age, formation, exp, duties, conditions, contacts, date)
VALUES
(\"$vac_id\", \"$vac_name\",\"$age\",\"$formation\",\"$exp\",\"$duties\",\"$conditions\",\"$contacts\", \"$date\")";
$result = mysql_query ($sql, $connection)
or die ("Невозможно выполнить запрос.");
?>
<HTML>
<HEAD>
<TITLE>Добавление вакансии</TITLE>
</HEAD>
<BODY>
<H1>Добавление записей в <? echo "$table_name"; ?></H1>
<p><STRONG>Номер вакансии: </STRONG><BR>
<? echo "$vac_id"; ?></p>
<p><STRONG>Должность: </STRONG><BR>
<? echo "$vac_name"; ?></p>
<p><STRONG>Возраст: </STRONG><BR>
<? echo "$age"; ?></p>
<p><STRONG>Образование: </STRONG><BR>
<? echo "$formation"; ?></p>
<p><STRONG>Опыт работы: </STRONG><BR>
<? echo "$exp"; ?></p>
<p><STRONG>Обязанности: </ STRONG><BR>
<? echo stripslashes ($duties); ?></p>
<p><STRONG>Условия: </ STRONG><BR>
<? echo stripslashes ($conditions); ?></p>
<p><STRONG>Контакты: </STRONG><BR>
<? echo "$contacts"; ?></p>
<p><STRONG>Дата добавления вакансии: </STRONG><BR>
<? echo "$date"; ?></p>
<p><a href="add_vac.html">Добавить ещё одну вакансию</a></p>
</BODY>
</HTML>


Coutty 08-09-2008 20:22 893988

Цитата:

Цитата FoXLee
exxit; »

Тут опечатка.

И какую ошибку выдаёт?

engwar 08-09-2008 20:47 894005

Цитата:

Цитата FoXLee
if ((!$vac_id) || (!$vac_name) || (!$conditions) || (!$contacts) || (!$date)) »

замени на if ((!$_POST['vac_id']) || (!$_POST['vac_name']) || (!$_POST['conditions']) || (!$_POST['contacts']) || (!$_POST['date']))

Цитата:

Цитата FoXLee
(\"$vac_id\", \"$vac_name\",\"$age\",\"$formation\",\"$exp\",\"$duties\",\"$conditions\",\"$contacts\", \"$date\")"; »

В базе все поля типа Varchar?

FoXLee 08-09-2008 21:34 894042

Господи, так спешил, что забыл главное.. Ошибку выдает - Невозможно выполнить запрос, т.е. ошибка в блоке $sql.

Спасибо, завтра попробую. Как-то на "exxit" не обратил внимания, столько вариантов других пробовал.

Цитата:

Цитата engwar
В базе все поля типа Varchar?
------- »

нет, пару varchar, 1 поле дата, и там где textarea - поля text.

timon4ik 08-09-2008 21:46 894056

FoXLee,
перед строчкой
PHP код:

$result mysql_query ($sql$connection

проверьте правильность запроса:
PHP код:

echo $sql


FoXLee 09-09-2008 11:16 894411

Цитата:

Цитата timon4ik
проверьте правильность запроса:
PHP код: »

Выдает:
INSERT INTO vacancies (vac_id, vac_name, age, formation, exp, duties, conditions, contacts, date) VALUES ("4343", "43434343","43434343","43434343","43434343","4343","434343434343","4343", "43434343")Невозможно выполнить запрос.


43- это я вбивал в поля.

FoXLee 09-09-2008 12:43 894467

Переделал исходя из этой темы:
Код:

<?
if ((!$vac_id) || (!$vac_name) || (!$conditions) || (!$contacts) || (!$date)) {
header("Location: http://localhost/add_vac.html");
exit;
}
if (isset($_POST['submit'])) {

$db = mysql_connect("localhost", "root", "qwerty");
$table_name = 'vacancies';
mysql_select_db("GoDB", $db);
$vac_id = mysql_real_escape_string($_POST['vac_id']);
$vac_name = mysql_real_escape_string($_POST['vac_name']);
$age = mysql_real_escape_string($_POST['age']);
$formation = mysql_real_escape_string($_POST['formation']);
$exp = mysql_real_escape_string($_POST['exp']);
$duties = mysql_real_escape_string($_POST['duties']);
$conditions = mysql_real_escape_string($_POST['conditions']);
$contacts = mysql_real_escape_string($_POST['contacts']);
$date = mysql_real_escape_string($_POST['date']);

$sql = "insert into vacancies VALUES ('$vac_id', '$vac_name', '$age', '$formation', '$exp', '$duties', '$conditions', '$contacts', '$date')";
$result = mysql_query ($sql);
echo "Thx u.\n";
} else
?>
<HTML>
<HEAD>
<TITLE>Добавление вакансии</TITLE>
</HEAD>
<BODY>
<H1>Добавление записей в <? echo "$table_name"; ?></H1>
<p><STRONG>Номер вакансии: </STRONG><BR>
<? echo "$vac_id"; ?></p>
<p><STRONG>Должность: </STRONG><BR>
<? echo "$vac_name"; ?></p>
<p><STRONG>Возраст: </STRONG><BR>
<? echo "$age"; ?></p>
<p><STRONG>Образование: </STRONG><BR>
<? echo "$formation"; ?></p>
<p><STRONG>Опыт работы: </STRONG><BR>
<? echo "$exp"; ?></p>
<p><STRONG>Обязанности: </ STRONG><BR>
<? echo stripslashes ($duties); ?></p>
<p><STRONG>Условия: </ STRONG><BR>
<? echo stripslashes ($conditions); ?></p>
<p><STRONG>Контакты: </STRONG><BR>
<? echo "$contacts"; ?></p>
<p><STRONG>Дата добавления вакансии: </STRONG><BR>
<? echo "$date"; ?></p>
<p><a href="add_vac.html">Добавить ещё одну вакансию</a></p>
</BODY>
</HTML>

Ошибок нет, но в БД не добавляется (смотрел через phpmyadmin) БД mysql и phpmyadmin принимают данные, а вот нужная никак не хочет.

engwar 09-09-2008 12:45 894471

Цитата:

Цитата FoXLee
$result = mysql_query ($sql, $connection) or die ("Невозможно выполнить запрос."); »

замени на
PHP код:

$result mysql_query ($sql$connection) or die (mysql_errno() . ": " mysql_error()); 


Цитата:

Цитата FoXLee
Ошибок нет, но в БД не добавляется »

Не факт что ошибок нет, просто может сообщение о них не выдается.

FoXLee 09-09-2008 13:03 894486

engwar, Заработало, спасибо!
После замены этого куска кода выдало:
1292: Incorrect date value: '42424' for column 'date' at row 1

Заполнил поле "Дата" правильно - добавилось в таблицу. Я и до этого писал дату правильно но иногда просто ставил туда числа - не думал, что из-за одной колонки не добавится вся.


Время: 19:35.

Время: 19:35.
© OSzone.net 2001-