проблема такова:
в базе данных есть таблица из двух столбцов: должность(первичный ключ) и соответствующий оклад. Создаю страницу с выводом содержимого этой таблицы, и тремя кнопками (изменить, удалить, добавить). Когда выбираю один 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('ваша-кодировка')
при этом желательно, что бы и скрипт и база были в одной кодировке!
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)."'";