[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с записью в базу MySQL
sweetopium
Добрый день, есть простенький скрипт, который записывает в базу данных, введенный в форму e-mail. Все вроде работало, но сейчас тестирую на хостинге, он вроде создает новую запись, но она пустая. Менял кодировки, может в этом дело, или в чем то еще? (в этих делах нуб, поэтому спрашиваю)

Вот так работает скрипт:

<form id="submit_leave_email">
<input
id="input_leave_email" type="text" class="input_bg" value=""/>
<button
type="submit" class="button">Подписаться!</button>


<?php
if(isset($_POST['input_leave_email'])){
/* Connection to Database */
include('config.php');
/* Remove HTML tag to prevent query injection */
$email = strip_tags($_POST['input_leave_email']);

$sql = 'INSERT INTO email (email) VALUES(
"'
.$email.'")';
mysql_query($sql);
echo $email;
} else { echo '0'; }
?>


Кодировка сейчас utf-8





Спустя 10 минут, 42 секунды (7.06.2011 - 20:45) quickxyan написал(а):
можно попробовать так.


<input id="input_leave_email" name="input_leave_email" type="text" class="input_bg" value=""/>


Спустя 1 минута, 39 секунд (7.06.2011 - 20:46) quickxyan написал(а):
даже так


<form id="submit_leave_email" method="POST">
<input
id="input_leave_email" name="input_leave_email" type="text" class="input_bg" value=""/>
<button
type="submit" class="button">Подписаться!</button>

Спустя 11 минут, 16 секунд (7.06.2011 - 20:58) sweetopium написал(а):
Попробовал, но все ровно так же...
user posted image

Спустя 3 минуты, 3 секунды (7.06.2011 - 21:01) sweetopium написал(а):
Раньше причем работало, записывались адреса как надо, а потом пустота

Спустя 5 минут, 22 секунды (7.06.2011 - 21:06) quickxyan написал(а):

if(isset($_POST['input_leave_email'])){
/* Connection to Database */
include('config.php');
/* Remove HTML tag to prevent query injection */
$email = strip_tags($_POST['input_leave_email']);

$sql = 'INSERT INTO email (email) VALUES(
"'
.$email.'")';
$result = mysql_query($sql);
$mysql_fetch_assoc($result);
echo $email;
} else { echo '0'; }
?>

Спустя 1 минута, 37 секунд (7.06.2011 - 21:08) inpost написал(а):
sweetopium
name="input_leave_email" - передаёт $_POST, а не id. Показывай код свой снова.
Да и переменные можно полегче назвать: name="email", и добавлять `email` = '".$_POST['email']."'

Спустя 2 минуты, 4 секунды (7.06.2011 - 21:10) sweetopium написал(а):
Сейчас так

<form id="submit_leave_email" method="POST">
<input
id="input_leave_email" name="input_leave_email" type="text" class="input_bg" value=""/>
<button
type="submit" class="button">Подписаться!</button>
</form>



<?php
if(isset($_POST['input_leave_email'])){
/* Connection to Database */
include('config.php');
/* Remove HTML tag to prevent query injection */
$email = strip_tags($_POST['input_leave_email']);

$sql = 'INSERT INTO email (email) VALUES(
"'
.$email.'")';
$result = mysql_query($sql);
$mysql_fetch_assoc($result);
echo $email;
} else { echo '0'; }
?>




и пустота опять

Спустя 4 минуты, 30 секунд (7.06.2011 - 21:14) inpost написал(а):
Ай-да копи-паст:
<?php
if(!empty($_POST['go']))
{
include './config.php';
mysql_query("INSERT INTO `email` SET
`email = '"
.mysql_real_escape_string($_POST['email'])."'`
"
) or die(mysql_error());
}
?>
<form action="" method="post">
<
input type="text" name="email" /><br />
<
input type="submit" name="go" value="ogogog" />
</
form>

Спустя 4 минуты, 29 секунд (7.06.2011 - 21:19) sweetopium написал(а):
Пусто, а имена переменных так сделаны, потому что там еще через Juqery вылазит сообщение

Спустя 5 минут, 11 секунд (7.06.2011 - 21:24) inpost написал(а):
sweetopium
Какой jQuery? Мы говорим о чистом файле, без всяких сторонник приложений. Создай чистый test.php и туда скопипасти следующий код. В начале можешь даже дописать: print_r($_POST); , и когда нажмёшь на кнопку - покажи, что вывелось у тебя там.

Спустя 5 минут, 9 секунд (7.06.2011 - 21:29) sweetopium написал(а):
Создал, проверил, все ровно пусто в базе данных, может это проблемы с хостом или я как то косо создал базу?

Пишет такое - Array ( [email] => dasdasd )

Спустя 21 минута, 44 секунды (7.06.2011 - 21:51) inpost написал(а):
sweetopium
А теперь покажи код этого файла test.php полностью сюда.

Спустя 4 минуты, 52 секунды (7.06.2011 - 21:56) sweetopium написал(а):
<!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">
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
Untitled Document</title>
</head>
<body>
<?php

print_r($_POST);
if(!empty($_POST['go']))
{
include './config.php';
mysql_query("INSERT INTO `email` SET
`email = '"
.mysql_real_escape_string($_POST['email'])."'`
"
) or die(mysql_error());
}
?>
<form
action="" method="post">
<input
type="text" name="email" /><br />
<input
type="submit" name="go" value="ogogog" />
</form>
</body>
</html>



Почему то стал сейчас так писать-
Array ( [email] => testmail@mail.ru [go] => ogogog ) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2

Спустя 17 минут, 36 секунд (7.06.2011 - 22:13) inpost написал(а):
`email = '".mysql_real_escape_string($_POST['email'])."'` - синтаксическая ошибка, smile.gif
`email` = '".mysql_real_escape_string($_POST['email'])."' - вот так надо

Спустя 4 минуты, 56 секунд (7.06.2011 - 22:18) sweetopium написал(а):
Теперь добавляет, но как сделать чтобы на моей странице (уже с дизайном и juqery ) работало?


<form id="submit_leave_email" method="POST">
<input
id="input_leave_email" name="input_leave_email" type="text" class="input_bg" value=""/>
<button
type="submit" class="button">Подписаться!</button>
</form>

<?php

print_r($_POST);
if(isset($_POST['input_leave_email'])){
/* Connection to Database */
include('config.php');
/* Remove HTML tag to prevent query injection */
$email = strip_tags($_POST['input_leave_email']);

$sql = 'INSERT INTO email (email) VALUES(
"'
.$email.'")';
mysql_query($sql);
echo $email;
} else { echo '0'; }
?>




Спустя 5 минут, 52 секунды (7.06.2011 - 22:24) inpost написал(а):
sweetopium
берёшь мой код и вставляешь к себе.

Спустя 7 минут, 43 секунды (7.06.2011 - 22:32) sweetopium написал(а):
Как я понял, нужно было сделать так:

<form action="" method="post" id="submit_leave_email">
<input
id="input_leave_email" name="input_leave_email" type="text" class="input_bg" value="" /><br />
<input
type="submit" name="go" value="Подписаться" />
</form>

<?php

print_r($_POST);
if(!empty($_POST['go']))
{
include './config.php';
mysql_query("INSERT INTO `email` SET
`email` = '"
.mysql_real_escape_string($_POST['input_leave_email'])."'
"
) or die(mysql_error());
}
?>


но теперь он даже пустую не создает, где я опять накосячил?)

Спустя 2 часа, 16 минут, 1 секунда (8.06.2011 - 00:48) Invis1ble написал(а):
<form action="" method="post" id="submit_leave_email">
<
input id="input_leave_email" name="input_leave_email" type="text" class="input_bg" value="" /><br />
<
input type="submit" name="go" value="Подписаться" />
</
form>

<?php
if (isset($_POST['go'], $_POST['input_leave_email']))
{
die('OK');
include './config.php';
mysql_query("INSERT INTO `email` SET
`email` = '"
.mysql_real_escape_string($_POST['input_leave_email'])."'
"
) or die(mysql_error());
}

Если высветится OK, удали строку die('OK') и проверь, что получится.

Спустя 8 минут, 14 секунд (8.06.2011 - 00:56) Админ написал(а):
Вроде понятно где косяк - но спать охота. Просто проблема в том, что лучше для понимания разбить всё на переменные нежели чем всё пихать в запрос. Так проще.

Спустя 2 часа, 51 минута, 22 секунды (8.06.2011 - 03:47) inpost написал(а):
sweetopium
Ещё раз, твои другие скрипты перебивают запрос. Откуда я знаю, что там делает jQuery, может он весь на аяксе подпитан...

Спустя 1 час, 20 минут, 18 секунд (8.06.2011 - 05:08) Invis1ble написал(а):
Цитата
Ещё раз, твои другие скрипты перебивают запрос. Откуда я знаю, что там делает jQuery, может он весь на аяксе подпитан

Скорее всего так и есть. Он button на submit поменял, jQuery перехватывать событие перестал и теперь скрипт, вызываемый ранее с помощью AJAX, попросту не запускается.

Спустя 1 час, 1 минута, 14 секунд (8.06.2011 - 06:09) sweetopium написал(а):
Вот код со скриптами:


<!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">
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
title</title>
<link
rel="stylesheet" href="style.css" type="text/css" />
<link
rel="stylesheet" href="reveal.css">
<script
type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script
type="text/javascript" src="http://code.jquery.com/jquery-1.6.min.js"></script>
<script
type="text/javascript" src="js/countdown.js"></script>
<script
type="text/javascript" src="jquery.reveal.js"></script>
<script
type="text/javascript">
var
_gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-23828956-1']);
_gaq.push(['_trackPageview']);

(
function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

</script>
<script
type="text/javascript">
$(document).ready(function(){
$("form#submit_leave_email").submit(function() {

var input_leave_email = $('#input_leave_email').attr('value');

$.ajax({
type: "POST",
url: "insert.php",
data: "input_leave_email="+ input_leave_email,
success: function(){
$("#submit_leave_email").fadeOut();
$("#update_success").fadeIn();
}
}
);
return false;
});
});
</script>
<script
type="text/javascript" src="http://vkontakte.ru/js/api/share.js?11" charset="windows-1251"></script>
</head>
<body>
<div
id="central_header">

<div
id="leave_email">
<form
action="" method="post" id="submit_leave_email">
<input
id="input_leave_email" name="input_leave_email" type="text" class="input_bg" value="" />
<button
type="submit" class="button" name="go">Подписаться!</button>
</form>
</div>
</body>
</html>


insert.php

<?php
print_r($_POST);
if(isset($_POST['input_leave_email'])){
/* Connection to Database */
include('config.php');
/* Remove HTML tag to prevent query injection */
$email = strip_tags($_POST['input_leave_email']);

$sql = 'INSERT INTO email (email) VALUES(
"'
.$email.'")';
mysql_query($sql);
echo $email;
} else { echo '0'; }
?>



Спустя 12 минут, 28 секунд (8.06.2011 - 06:21) inpost написал(а):
sweetopium
Ну и где ты переделал insert.php так, как я тебе показывал? Где кавычки, где функция обработки входящих данных mysql_real_escape_string ? Я это для кого рассписывал, как правильно должен выглядеть sql запрос? А ты снова свои strip_tags лепишь...

И какой ещё BUTTON? <input type="submit">! Ты в jQuery перехватываешь событие: ("form#submit_leave_email").submit(function() { , именно событие submit, а не простое нажатие кнопки button.

Спустя 20 минут, 11 секунд (8.06.2011 - 06:42) sweetopium написал(а):
inpost
Это изначальный вариант (который работал, но потом почему то перестал), вчера я уже показывал вариант, который давал ты, он вообще даже пустую запись не делал в базе данных.

Спустя 1 час, 40 минут, 55 секунд (8.06.2011 - 08:22) Invis1ble написал(а):
не знаю насчет сабмита, может так тоже канает, но вот запрос точно корявый... Имена таблицы и поля в кавычки обратные не взяты, между VALUES и скобкой пробела нет... Вобщем, здается мне, что там синтаксическая ошибка ), и скорее всего изза отсутствия пробела, т.к. мускул интерпретирует скорее всего VALUES как функцию.. Отсюда вытекает предположение, что на локалхосте и хостинге различные верси мускула, из-за чего на локалхосте запрос срабатывал. Ну это все мое имхо.

Спустя 11 минут, 8 секунд (8.06.2011 - 08:34) inpost написал(а):
sweetopium
Ну как я тебе буду помогать, если я даю тебе код, ты его коряво копируешь, 1 символ лишний ставишь - выходит ошибка. Ты вместо того, чтобы убрать лишний символ выставляешь свой старый код и заявляешь: "да твоё не работало вообще, не хочу думать, вот моё, исправьте и дайте готовенькое".

Спустя 23 минуты, 33 секунды (8.06.2011 - 08:57) sweetopium написал(а):
Я полнейший нуб в php для меня не понятны эти символы все кавычки, где как они правильно стоять должны. А мой программист уехал, могу заплатить, чтобы кто нить написал как должно быть, чтобы работало )

Спустя 14 минут, 54 секунды (8.06.2011 - 09:12) Invis1ble написал(а):
Так тебе показали уже, как должно быть, ну если хошь - стукни мне в асю ***

Спустя 1 час, 44 секунды (8.06.2011 - 10:13) sweetopium написал(а):
Сделал вроде как показывали, но он ничего не добавляет теперь вообще, где ошибка моя так и не пойму.

<!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">
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<link
rel="stylesheet" href="style.css" type="text/css" />
<link
rel="stylesheet" href="reveal.css">
<script
type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script
type="text/javascript" src="http://code.jquery.com/jquery-1.6.min.js"></script>
<script
type="text/javascript" src="js/countdown.js"></script>
<script
type="text/javascript" src="jquery.reveal.js"></script>
<script
type="text/javascript">
var
_gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-23828956-1']);
_gaq.push(['_trackPageview']);

(
function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

</script>
<script
type="text/javascript">
$(document).ready(function(){
$("form#submit_leave_email").submit(function() {

var email = $('#email').attr('value');

$.ajax({
type: "POST",
url: "insert.php",
data: "email="+ email,
success: function(){
$("#submit_leave_email").fadeOut();
$("#update_success").fadeIn();
}
}
);
return false;
});
});
</script>
<script
type="text/javascript" src="http://vkontakte.ru/js/api/share.js?11" charset="windows-1251"></script>
</head>
<body>
<div
id="central_header">

<div
id="leave_email">
<form
action="" method="post" id="submit_leave_email">
<input
id="email" name="email" type="text" class="input_bg" value="" />
<input
type="submit" name="go" value="Подписаться" class="button" />
</form>


<?php
print_r($_POST);
if(!empty($_POST['go']))
{
include './config.php';
mysql_query("INSERT INTO `email` SET
`email` = '"
.mysql_real_escape_string($_POST['email'])."'
"
) or die(mysql_error());
}
?>

Спустя 2 минуты, 42 секунды (8.06.2011 - 10:15) inpost написал(а):
sweetopium
А ты разве уже не договорился с человеком? Как-то уже некрасиво помогать smile.gif

Спустя 6 минут, 15 секунд (8.06.2011 - 10:22) sweetopium написал(а):
Человек спать пошел, а мне надо сейчас сделать, если не найдется решение заплачу человеку.

Спустя 9 минут, 40 секунд (8.06.2011 - 10:31) Invis1ble написал(а):
Помагайте народ, если не получится, то уже вечером я займусь
Быстрый ответ:

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