Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2011, 13:44   #1
yfnf3
Пользователь
 
Регистрация: 04.02.2011
Сообщений: 16
Стрелка htmlspecialchars в PHP

Здравствуйте уважаемые!
У меня такая проблема! В одной из форм моей СУБД в SQL таблицу вносятся разные поля(фамилия, имя, отчество, должность, отдел).Дело в том чтоЭта самая форма внесения представлена в следующем виде:Все поля текстовые, а "должность" и "отдел" представлены в виде выпадающего списка,который берёт данные из другой таблицы!Ну так вот в чём загвостка?Дело в том, что в ЭТОЙ самой форме "должность" и "отдел" выносятся корректно(корректно - это значит с пробелом,в моём случае),а когда нажимаешь кнопочку "отправить"(Submit),то в SQL вносится лишь слово ДО ПРОБЕЛА,остальное просто рубится!Я знаю,что нужно записать значения в htmlspecialchars,только вот смог это сделать лишь для другой формы(редактирование с текстовыми полями)
Вот код, прошу, скажите,где нужно разместить эту функцию,чтобы в SQL всё вносилось корректно:

PHP код:
<?
echo"<body bgcolor = \"0d6666\">";
$connection mysql_connect("***""***","***") or die("Could not connect");
mysql_select_db("stat_forms") or die("Could not select database");

////!!!ВОТ моя форма выпадающего списка из другой таблицы!
{
$query1="SELECT dolzhnost FROM dolzhnost";
$result1=mysql_query($query1,$connection) or die (mysql_error($connection));

$form_dolj="
<form action=add_sotr.php method=POST>
<select type=class name=dolzhnost>"
;
while (
$num_dolj=mysql_fetch_array($result1MYSQL_ASSOC))
{
   
    
$form_dolj.="<option value=$num_dolj[dolzhnost]>$num_dolj[dolzhnost]</option>\n"//выпадающий список должностей
    
    
}
mysql_free_result($result1);
}
///Вторая форма списка для поля "отдел"!!    
{    
$query_otd="SELECT otdel FROM otdel";
$result_otd=mysql_query($query_otd,$connection) or die (mysql_error($connection));
    
$form_otd="
<form action=add_sotr.php method=POST>
<select type=class name=otdel>"
;
while (
$num_otd=mysql_fetch_array($result_otdMYSQL_ASSOC))
{
    
$form_otd.="<option value=$num_otd[otdel]>$num_otd[otdel]</option>\n"//выпадающий список отделов
    
}
mysql_free_result($result_otd);
}
$form=
<form action=add_sotr.php method=POST>
<center><table border=5><tr><basefont face=\"Arial, fantasy\" size=2>"

//форма ниже
$form.="
</select></td></tr><br><br><br><br>
        <tr><td colspan=2 align=center>
            <font color=\"77dd77\"><font size=\"4px\"><b>Введите данные сотрудника:</b></font></font></td></tr>
        <tr><td><font color=\"00cccc\"><font size=\"3px\">Фамилия:</font></font></td><td><input type=text size=50 name=oldfam></td>
        <tr><td><font color=\"00cccc\"><font size=\"3px\">Имя:</font></font></td><td><input type=text size=50 name=oldname></td>
        <tr><td><font color=\"00cccc\"><font size=\"3px\">Отчество:</font></font></td><td><input type=text size=50 name=oldotch></td>
        

        <tr><td colspan=3><font color=\"00cccc\"><font size=\"3px\">Должность:</font></font> 
$form_dolj. </td>
        <tr><td colspan=3><font color=\"00cccc\"><font size=\"3px\">Отдел:</font></font>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 
$form_otd. </td>


    <tr><td colspan=3 align=center><input type=checkbox name=prav value=prav>&nbsp&nbsp<font color=\"77dd77\"><font size=\"3px\">Данные верны</font></font></td></tr>
<tr><td colspan=2  align=center><basefont face=\"Arial, fantasy\" size=2><input type=submit name=acres value=\"Отправить\">&nbsp&nbsp&nbsp<input type=reset value=\"Сбросить\"></basefont>
</td></tr></table></center>
</form>"
;
if (
$_POST['acres'])
{
if (
$_POST['prav'] == "prav")
{        
//выборка должности        
{    
$query_add="SELECT id FROM dolzhnost WHERE dolzhnost='$_POST[dolzhnost]'";
$result_add=mysql_query($query_add$connection) or die(mysql_error($connection));
while (
$dol2 mysql_fetch_array($result_addMYSQL_ASSOC))
    {
    
$name_dolj htmlspecialchars($dol2['dolzhnost']);
}
mysql_free_result($result_add);
}
//выборка отдела
{    
$query_add_otd="SELECT id FROM otdel WHERE otdel='$_POST[otdel]'";
$result_add_otd=mysql_query($query_add_otd$connection) or die(mysql_error($connection));
    
while (
$otd2 mysql_fetch_array($result_add_otdMYSQL_ASSOC))
{
$name_otd htmlspecialchars($otd2['id']);
}
mysql_free_result($result_add_otd);
}    
    
    
$query_add_in_name="INSERT INTO name (`dolzhnost`,`otdel`,`fam`,`name`,`otch`) VALUE('$_POST[dolzhnost]','$_POST[otdel]','$_POST[oldfam]', '$_POST[oldname]', '$_POST[oldotch]')";
    
$result_add_in_name=mysql_query($query_add_in_name,$connection) or die(mysql_error($connection));
    
///Пришлось остальное вырезать ибо у ВАС ограничение на форуме по вводу!Но код рабочий всё равно!! Проверил!
}
else
{
print 
"<br><br><br><br><br><br><br><br><font color=\"red\"><font size=\"4px\"><center>Ошибка: не подвержденны правильность ввода данных</font></font>";
                print 
"<br><br><br><br><input type=button value=\"Вернуться\" onClick='javascript:history.go(-1)'></center>";
            }    
mysql_close($connection);

    } 
    else 
    {
    echo 
"$form";
    echo 
"</body>";
    }
?>
Где должна быть размещена эта функция htmlspecialchars??
Изображения
Тип файла: jpg Add.jpg (61.2 Кб, 132 просмотров)
yfnf3 вне форума Ответить с цитированием
Старый 04.02.2011, 13:56   #2
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
По умолчанию

Код:
$query_add_in_name="INSERT INTO name (`dolzhnost`,`otdel`,`fam`,`name`,`otch`) VALUE('$_POST[dolzhnost]','$_POST[otdel]', '$_POST[oldfam]', '$_POST[oldname]', '$_POST[oldotch]')";
При внесении данных в базу вместо VALUE используется VALUES. Хотя, если ваш вариант работает...

Функция htmlspecialchars() для внесения данных в базу - не нужна. Она необходима при выводе данных в браузер, чтобы он отображал теги как текст.

А вообще, крайне не нравится, как вы относитесь к кавычкам и другим спецсимволам.

Код:
$query1="SELECT dolzhnost FROM dolzhnost";
желательно, например, заменить на:
Код:
$query1="SELECT `dolzhnost` FROM `dolzhnost`";
Код:
$query_add_in_name="INSERT INTO name (`dolzhnost`,`otdel`,`fam`,`name`,`otch`) VALUE('$_POST[dolzhnost]','$_POST[otdel]','$_POST[oldfam]', '$_POST[oldname]', '$_POST[oldotch]')";
Бедные массивы... Попробуйте так:

Код:
$dolzhnost = $_POST["dolzhnost"];
$otdel = $_POST["otdel"];
$oldfam = $_POST["oldfam"];
$oldname = $_POST["oldname"];
$oldotch = $_POST["oldotch"];

$query_add_in_name="INSERT INTO `name` (`dolzhnost`,`otdel`,`fam`,`name`,`otch`) 
                              VALUES('$dolzhnost', '$otdel', '$oldfam', '$oldname', '$oldotch')";
No name. Just Linel.
Linel вне форума Ответить с цитированием
Старый 04.02.2011, 15:11   #3
yfnf3
Пользователь
 
Регистрация: 04.02.2011
Сообщений: 16
Лампочка

Спасибо, гляну как будет работать
А на счёт синтаксиса.. да, вы правы, я всегда криво всё делал :D
yfnf3 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
htmlspecialchars сгодится для защиты гостевой книги? Valio PHP 1 15.01.2011 09:59
что не так с php кдом или с настройками MySQL+PHP Jimmi Помощь студентам 2 27.12.2010 09:03
htmlspecialchars gufon PHP 5 21.12.2010 17:59
PHP test.php?a=1&b=1 не работает передача параметров бедный_студент PHP 5 25.08.2010 23:08
Не работает htmlspecialchars() SwiP PHP 19 27.03.2009 10:52