Всякий раз, когда я использую ajax для получения данных из моей текстовой области и вставки их в mysql, разрывы строк не вставляются

#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()

nl2br