#mysql
#mysql
Вопрос:
Я использую ajax для вставки формы с помощью GET . Когда эта форма отправляется, она попадает в базу данных mysql. Я знаю, что ошибка возникает, когда эти данные отправляются в mysql, а не когда я их извлекаю. Моя проблема в том, что все разрывы строк и при нажатии клавиши «enter» не передаются в базу данных. Весь текст просто вводится в виде прямой строки без разрывов или чего-либо подобного. Я был бы признателен за любую помощь, чтобы выяснить, как заставить эти разрывы фактически вставляться в mysql, потому что это большая проблема для моего сайта. Любая помощь очень ценится.
Вот код для ajax, который я использую
$echovar400=
"
<script language='javascript' type='text/javascript'>
function ajaxFunction(){
var ajaxRequest;
try{
// Opera 8.0 , Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e) {
try{
ajaxRequest = new ActiveXObject('Microsoft.XMLHTTP');
} catch (e){
// Something went wrong
alert('Your browser broke!');
return false;
}
}
}
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
var ajaxDisplay = document.getElementById('pagecomments');
ajaxDisplay.innerHTML = ajaxRequest.responseText;
}
}
var age = document.getElementById('age').value;
var wpm = document.getElementById('wpm').value;
var queryString = '?age=' age 'amp;wpm=' wpm;
ajaxRequest.open('GET', 'ajaxprofilechat.php' queryString, true);
ajaxRequest.send(null);
}
</script>
<form name='myForm' method='GET' >
<textarea rows='4' name='message' class='comment' maxlength='250' id='age' wrap='hard'> </textarea><br><h40>
<input type='hidden' id='wpm' value='$profilename'/>
<input type='button' onclick='ajaxFunction()' value='Comment' />
</form>
";
}
?>
Я понимаю, что это не начало php, но остальное неважно.
here is the code for ajaxprofilechat
$age = strip_tags($_GET['age']);
$wpm = $_GET['wpm'];
// Escape User Input to help prevent SQL Injection
$wpm = mysql_real_escape_string($wpm);
$chatname6 = ($_SESSION['username']);
$message6 = $_GET['site_message'];
$month6 = date("F");
$dayofmonth6 = date("d");
$year6 = date("Y");
$date10 = "$month6 $dayofmonth6 $year6";
$hours6 = date("g");
$min6 = date("i");
$sec6 = date("s");
$amorpm6 = date("A");
$time6 = "$hours6:$min6 $amorpm6";
if (strlen($age)>4)
{
mysql_connect("","","") or die($error);
mysql_select_db("") or die($error);
mysql_query("INSERT INTO guestbook VALUES ('','$wpm','$chatname6','$age','$date10','$time6')");
echo "amp;nbsp;<h80><b>Comment Posted</b></h80<p><p>";
}
else
{
echo "amp;nbsp;<h80><b>Your comment must be greater than four characters</b></h80><p>";
}
?>
Любая помощь была бы отличной. Спасибо!
если вам нужно зайти на мой сайт, чтобы посмотреть на ошибку, вот ссылка на страницу моего профиля http://www.pearlsquirrel.com/profile.php?u=eggo
Ребята, я буквально перепробовал все, что вы мне сказали, и всеми возможными способами. Однако я все еще сталкиваюсь с той же проблемой. Должен ли я попытаться использовать метод POST ajax вместо GET? У вас есть какие-либо другие предложения? И спасибо вам за помощь до сих пор.
Ответ №1:
Попробуйте $message6 = nl2br($_GET['site_message']);
, тогда вам не придется беспокоиться о n
or rn
в вашей записи MySQL, поскольку она будет сохранена как HTML <br />
и будет отображаться по назначению во время вывода. Если вам нужно поместить его обратно в текстовое поле для редактирования, вы просто используете br2nl()
.
function br2nl($str)
{
return preg_replace('#<brs*?/?>#i', "n", $str);
}
Комментарии:
1. да, я знаю о nl2br. Но моя проблема заключается в том, что код вставляется в базу данных. Код вставляется как одна длинная строка, даже если в текстовой области есть разрыв. Я только что потратил 4 часа, пробуя каждое решение и те, которые вы, ребята, опубликовали. Я почти уверен, что ошибка поступает в базу данных, а не извлекает данные. Пожалуйста, любые другие предложения. На этом этапе я собираюсь сдаться…
2. Что такое тип поля? Извините, но я все еще новичок в программировании. Но я точно знаю, что проблема возникает, когда данные вставляются в базу данных.
3. о, лол, nvm тип поля — текст. Извините, у меня был небольшой мозговой пердеж.
Ответ №2:
попробуйте обернуть данные POST из текстовой области с помощью функции nl2br()