[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: проблема с кодировкой
Mawr
доброго дня
проблема такова:
в базе данных есть таблица из двух столбцов: должность(первичный ключ) и соответствующий оклад. Создаю страницу с выводом содержимого этой таблицы, и тремя кнопками (изменить, удалить, добавить). Когда выбираю один radio, и хочу изменить оклад этой должности, выводит ошибку "Ошибка при выполнении запроса: Unknown column 'Стажер' in 'where clause'"
понимаю что проблема с кодировкой, но исправить не могу.
вот сам код:
<?php
$dblocation = "localhost";
$dbname = "ola";
$dbuser = "root";
$dbpasswd = "";
$dbcnx = mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbcnx) exit("<p>К сожалению, не доступен сервер MySQL</p>");
if (!mysql_select_db($dbname,$dbcnx)) exit("<p>К сожалению, не доступна база данных</p>");

if ($_POST['sav'])
{
$NAMED=get_post('NAMED');
$OKLAD=get_post('OKLAD');
$q1="update DOL set OKLAD='".$OKLAD."' where NAMED='".$NAMED."'";
mysql_query($q1);

}
if (($_POST['add']) && ($_POST['NAMED']!='') && ($_POST['OKLAD']!=''))
{
$OKLAD=get_post('OKLAD');
$NAMED=get_post('NAMED');
$q="insert into DOL(NAMED,OKLAD) value('".$NAMED."', '".$OKLAD."')";
mysql_query($q);
}
if (($_POST['rad']) && ($_POST['del']))
{
$q="delete from DOL where NAMED='".$_POST['rad']."'";
mysql_query($q);
}
$query ="select * from DOL order by 2";
$result=MYSQL_QUERY($query)or die ("Ошибка при выполнении запроса: " .mysql_error ());
echo "<h2 align=center> Должности </h2>";
echo "<form name=forma method='post' action='".$_SERVER['PHP_SELF']."' accept-charset='cp1251'>";
echo "<br><br>";
echo "<table border=2 width=20% align=center>";
while ($row = mysql_fetch_array ($result))
{
echo "<tr>";
echo "<td width=3% align=right><input type=radio name='rad' value='".$row['NAMED']."'>";
echo "<td width=25%>"; echo $row ["NAMED"]; echo "</td>";
echo "<td width=72%>"; echo $row ["OKLAD"]; echo "</td>";
echo "</tr>";
}
echo "</table>";

echo "<table border=0 width=30% align=center>";
echo "<tr></tr><tr></tr><tr>";
echo "<td><input type=submit name=upd value='Изменить'> </td>";
echo "<td><input type=submit name=del value='Удалить'></td>";
echo "<td><input type=submit name=add value='Добавить'></td>";
echo "</tr>";
if (($_POST['rad']) && ($_POST['upd'])) //вот тут ошибка
{
$q="select * from DOL where NAMED=".$_POST['rad'];
echo "<tr><td colspan=3 align=left>";
$res=mysql_query($q) or die ("Ошибка при выполнении запроса: " .mysql_error ());
$row = mysql_fetch_array ($res);
echo "<td><input type=submit name=sav value='Сохранить'></td></tr>";
}
echo "</table>";
$qq="Select * from DOL";
$result1=mysql_query($qq) or die ("Ошибка при выполнении запроса: " .mysql_error ());
echo "<pre>Название должности<input type=text name=NAMED value='".$row['NAMED']."'></pre>";
echo "<pre>Оклад<input type=text name=OKLAD value='".$row['OKLAD']."'></pre>";


echo "</form>";

MYSQL_CLOSE();
function get_post($var)
{
return mysql_real_escape_string($_POST[$var]);
}
?>




Спустя 12 минут, 40 секунд (23.06.2012 - 14:46) fdr написал(а):
после выборки базы, попробуйте использовать
mysql_set_charset('ваша-кодировка')
при этом желательно, что бы и скрипт и база были в одной кодировке!

Спустя 15 минут, 22 секунды (23.06.2012 - 15:02) Mawr написал(а):
скрипт в ANSI, база в cp1251_general_ci
видимо, это не одно и тоже?

Спустя 1 час, 51 минута, 9 секунд (23.06.2012 - 16:53) Mawr написал(а):
гм, надо было вместо
$q="select * from DOL where NAMED=".$_POST['rad'];

написать
$q="Select * from DOL where NAMED='".$_POST['rad']."'";

Спустя 1 час, 59 минут, 37 секунд (23.06.2012 - 18:52) fdr написал(а):
Цитата (Mawr @ 23.06.2012 - 12:02)
скрипт в ANSI, база в cp1251_general_ci
видимо, это не одно и тоже?

по миому одно и тоже)))
в вашем случае...
mysql_set_charset('cp1251') будет.
а так на будущее, лучше использовать UTF-8!

Спустя 2 часа, 28 минут, 11 секунд (23.06.2012 - 21:21) vital написал(а):
Цитата (Mawr @ 23.06.2012 - 15:53)
гм, надо было вместо
$q="select * from DOL where NAMED=".$_POST['rad'];

написать
$q="Select * from DOL where NAMED='".$_POST['rad']."'";

надо было написать
q="Select * from DOL where NAMED='".mysql_real_escape_string($_POST['rad'],$db)."'";
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.