|
|
|
| Добрый день.
Есть проблема. Не понимаю почему не вставляется запись в MYSQL
Имеются переменные:
$name_massege
$email_massege
$tema_massege
$massege
|
SQL запрос:
$sql = "INSERT INTO `massege` VALUES (
'$id_massege',
'$name_massege',
'$email_massege',
'$tema_massege',
'$massege',
NOW(),
'$hide');";
|
Не понимаю почему он не вставляет в базу данных запись. | |
|
|
|
|
|
|
|
для: ruler
(28.07.2011 в 08:50)
| | '$id_massege' - это число по идее, а вы его суете как строку, уберите кавычки
кстати разве оно у вас не автоинкремент? если да то просто замените на NULL | |
|
|
|
|
|
|
|
для: Valick
(28.07.2011 в 09:39)
| | Да да, автоинкремент.
Сделал как вы посоветовали, но все равно не вставляет данные в таблицу
$sql = "INSERT INTO `massege` VALUES (NULL,
'$name_massege',
'$email_massege',
'$tema_massege',
'$massege',
NOW(),
'$hide');";
|
Может дело в таблице, может она как то не верно создана?
Создавалась она следующим образом
CREATE TABLE IF NOT EXISTS `massege` (
`id_massege` int(11) NOT NULL AUTO_INCREMENT,
`name_massege` varchar(65) NOT NULL DEFAULT '',
`email_massege` varchar(65) NOT NULL DEFAULT '',
`tema_massege` tinytext NOT NULL,
`massege` text,
`putdate` datetime DEFAULT '0000-00-00 00:00:00',
`hide` enum('show','hide') DEFAULT 'show',
PRIMARY KEY (`id_massege`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
|
Самое интересное если в веб-интерфейсе MYSQL вводить запрос в виде:
INSERT INTO `massege` (`id_massege`, `name_massege`, `email_massege`, `tema_massege`, `massege`, `putdate`, `hide`) VALUES
(1, 'Владимир', 'test@mail.ru', 'Коммерческое предложение', 'Тест', '2010-02-08 09:02:00', 'hide');
|
В этом случае все работает.
Совсем запутался, помогите. | |
|
|
|
|
|
|
|
для: Ruler
(28.07.2011 в 10:02)
| | покажите эхо запроса
__
у меня запрос работает нормально | |
|
|
|
|
|
|
|
для: Valick
(28.07.2011 в 10:15)
| |
INSERT INTO `massege` VALUES (NULL, 'Владимир', 'vova@mail.ru', 'Привет', 'Сообщение', NOW(), 'hide');
|
Я так понимаю что-то с датой не то, она походу не вставляется? | |
|
|
|
|
|
|
|
для: Ruler
(28.07.2011 в 10:21)
| | Этот запрос в Web-интерфейсе тоже выполняется без ошибок?
PS А как вы выполняете запрос в вашем PHP-скрипте? | |
|
|
|
|
|
|
|
для: Ruler
(28.07.2011 в 10:21)
| | с датой все нормально, она подставляется уже в самой базе при выполнении запроса | |
|
|
|
|
|
|
|
для: ruler
(28.07.2011 в 08:50)
| | >Не понимаю почему он не вставляет в базу данных запись.
Функция mysql_error() возвращает какое-нибудь сообщение об ошибке? | |
|
|
|
|
|
|
|
для: cheops
(28.07.2011 в 10:25)
| | нет никаких ошибок не возвращает. Чета не совсем понимаю. Вроде как все должно вставляться. | |
|
|
|
|
|
|
|
для: Ruler
(28.07.2011 в 10:28)
| | строка
$res=mysql_query($sql) or die(mysql_error());
|
присутствует в коде?
к базе конект происходит нормально? | |
|
|
|
|
|
|
|
для: Valick
(28.07.2011 в 10:31)
| | Да код присутствует. и ничего не выдает.
Конект к базе есть, по скольку на других страницах сайта все работает.
По поводу того что конект отличный, в подтверждение могу сказать следующее. На этой же странице выводиться из другой таблицы email адрес на который должно отправляться сообщение и оно нормально приходит, спокойно отправляться.
Самое интересное, если ввести через веб интрефейс базы данных запрос который вывелся при включение echo $sql; все отлично вставляется.
INSERT INTO `massege` VALUES (NULL, 'Владимир', 'vova@mail.ru', 'Привет', 'Сообщение', NOW(), 'hide');
|
| |
|
|
|
|
|
|
|
для: Ruler
(28.07.2011 в 10:37)
| | А приведите несколько строк до и после mysql_query()? Не может быть там каких-то условных операторов или логики, которые не дают выполниться запросу? Других вариантов вроде как не осталось... Если у вас успешно работает phpMyAdmin, значит проблем с связке PHP+MySQL нет - там обычный скрипт, вроде того, который создаете вы. | |
|
|
|
|
|
|
|
для: cheops
(28.07.2011 в 10:44)
| | Соединяемся с базой данных, файл конекта находиться в админке
<?
require_once "admin/config.php";
$config_php = "already_include";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
.........
<?
$action = "";
$action = $_POST["action"];
if (!empty($action))
{
// Проверяем правильность ввода
$_POST["name_massege"] = trim($_POST["name_massege"]); //имя
if (empty($_POST["name_massege"])) links("Отсутствует имя");
$_POST["email_massege"]=trim($_POST["email_massege"]); //e-mail
if(empty($_POST['email_massege'])) links("Не введён e-mail");
if (!preg_match("/[0-9a-z_]+@[0-9a-z-_^\.]+\.[a-z]{2,3}/i", $_POST['email_massege'])) links("Введите e-mail в виде <i>name@domen.com</i>");
$_POST["tema_massege"] = trim($_POST["tema_massege"]); //тема сообщения
if (empty($_POST["tema_massege"])) links("Отсутствует тема сообщения");
$_POST["massege"] = trim($_POST["massege"]); //сообщение
if (empty($_POST["massege"])) links("Текст сообщения отсутствует.");
// Обрабатываем HTML-тэги
$name_massege = substr($_POST["name_massege"],0,52);
$name_massege = htmlspecialchars(stripslashes($name_massege));
$email_massege = substr($_POST["email_massege"],0,52);
$email_massege = htmlspecialchars(stripslashes($email_massege));
$tema_massege = substr($_POST["tema_massege"],0,52);
$tema_massege = htmlspecialchars(stripslashes($tema_massege));
$massege = substr($_POST["massege"],0,1024);
$massege = htmlspecialchars(stripslashes($massege));
// Даем переменной $hide отображать сообщение
$hide = "hide";
$sql = "INSERT INTO `massege` VALUES (NULL,
'$name_massege',
'$email_massege',
'$tema_massege',
'$massege',
NOW(),
'$hide');";
$res=mysql_query($sql) or die(mysql_error());
// запрос к другой таблице для вывода email для отправки на почту сообщения с формы
$query = "SELECT email FROM mailer";
$mal = mysql_query($query);
$row = mysql_fetch_array($mal);
$body="<body>
<h2>Сообщение с сайта</h2>
<strong>Контактные данные:</strong><br />
Имя - $name_massege,<br />
E-mail: $email_massege,<br />
<p><strong>Тема сообщения:</strong><br />
$tema_massege<br />
<p><strong>Содержание письма:</strong><br />
$massege</p>
</body>";
$email = $row['email'];
$header="Content-type: text/html; charset=\"UTF-8\"";
$header.="From: $mail\r\n";
$header.= "Cc: vova@mail.ru\r\n";
//$headers.= "Bcc: vladimir@mail.ru\r\n";
$header.="Content-type: text/html; charset=\"UTF-8\"";
$sucess = mail($email,"Сообщение с сайта www.test.ru от $name_massege", $body, $header);
if ($sucess){
echo '<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
............
</body>
</html>';
exit();
}
}
// это та функция которая выводит сообщение о ошибке при проверке данный links
function links($msge)
{
echo '<body>
<p><b>'.$msge.'</b><br>Поля отмеченые <span>*</span>обязательны для заполнения!</p>
<p><a href=contact.html onClick="history.back()" class=link1>Вернуться к заполнению формы</a></p>
<p><a href=/ class="link">На главную</a></p>
..............................
</body>
</html>';
exit();
}
?>
|
Вот фактически вся страница.
Причем на электронный адрес спокойно выводит и отправляет почту с теми же переменными | |
|
|
|
|
|
|
|
для: Ruler
(28.07.2011 в 10:54)
| | Вряд ли конечно, что-то изменится, но все-таки попробуйте поменять строку
$res=mysql_query($sql) or die(mysql_error());
| на
if(!mysql_query($sql)) die(mysql_error();
|
| |
|
|
|
|
|
|
|
для: cheops
(28.07.2011 в 11:02)
| | Ребята, огромное ВАМ спасибо за помощь.
Я так и не понял если честно,что случилось и почему не работало, но каким то чудесным образом не изменив после этого абсолютно ничего все заработал)
Наверное либо я с ума сошел, либо mysql) | |
|
|
|