2016-12-16 10 views
0

Я пытаюсь написать из своей базы данных на мою страницу, используя один эффект. Цель состоит в том, когда он пишет мой комментарий на странице, покажите его с эффектом.Как вставить jqueryUi (Show Effect -> Drop) в php-страницу

<?php 
    if(count($_POST) > 0){ 
     echo '<script language="javascript">'; 
     echo '$("#toggle").toggle("drop");'; 
     echo '</script>'; 

     $db = new mysqli("localhost", "root", "usbw", "trab_projeto"); 

     $qr = $db->query("INSERT INTO comments(comment) VALUES ('{$_POST['mensagem']}')"); 

     echo "<fieldset id='toogle'>"; 
     echo "<p>"; 
     $row = $db->query("SELECT * FROM comments ORDER BY comment_id DESC LIMIT 1")->fetch_assoc(); 
     echo $row["comment"]; 
     echo "</p>"; 
     echo "</fieldset>"; 
    } 
?> 

Часть скрипта не работает. Этот код выполняется, когда я нажимаю на форму отправки.

<div class="cadastro"> 
    <form action="" id="form-msg" method="post" enctype="multipart/form-data"> 
     <fieldset> 
      <p> 
       <span><b>Escreva aqui o seu comentário:</b></span><br> 
       <textarea name="mensagem" style="margin: 0px; width: 511px; height: 119px;"></textarea> 
      </p> 
      <input type="submit" value="Enviar"> 
     </fieldset> 
    </form>  
</div> 
+0

У вас есть проблема с безопасностью, связанной с атаками SQL Injection. [Посмотрите, как это исправить] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php?rq=1). – KDOT

+0

Спасибо! Но это не совсем то, что я хочу. Я могу вставить в базу данных, но мне бы хотелось, чтобы комментарий появился с эффектом. Http: //jqueryui.com/show/ –

+0

Использование опции «Drop» –

ответ

0

Чтобы вернуть ответ JSON, вы должны сначала поместить это в header(). В верхней части сценария Append:

header('Content-type: javascript/json'); 

Двигаясь дальше, чтобы предотвратить ваши инъекции SQL я изменил драйвер PDO который можно найти в документации по.

header('Content-type: javascript/json'); 
$driver = new PDO('mysql:host=localhost;dbname=trab_projeto', 'root', 'password'); 
$state = false; 
if(
    !isset($_POST['mensagem']) && 
    !empty($_POST['mensagem']) 
) { 
    $driver->Prepare('INSERT INTO comments (comment) VALUES (?)'); 
    $state = $driver->execute(array($_POST['mensagem'])); 
} 
if($state) 
{ 
    echo json_encode(array('status' => true)); 
    exit; 
} 
echo json_encode(array('status' => false)); 
exit; 

Для будущего уведомления этот «комментарий» не прикреплен к какой-либо области «нить». Если у вас есть несколько сообщений, вы должны дать каждому сообщению уникальный идентификатор и перекрестно ссылаться на идентификатор сообщения с комментарием, чтобы вы могли загрузить комментарии для этого конкретного сообщения.

Вы можете использовать JQuery для отправки запросов, как так:

$(document).ready(function() { 
    var form = $('#form-msg'); 
    comment = form.closest('textarea').val(); 
    $.post('the_file_path.php', { mensagem: comment }) 
     .done(function(response) { 
      if(response.status) { 
       // todo: success using the effect below 
      } 
     }); 
}); 

Обратите внимание на следующий код выше нужен click(), прикрепленный к вашей кнопку отправки. Попробуйте удалить эту строку кода:

И использование:

<button type='button'>Enviar</button> 

Таким образом, вы можете ориентировать его через форму следующим образом:

form.closest('button').click(function() { 
    // ... 
} 

Вы можете использовать эффект при показе комментарий к пользовательскому концу, например:

var commentToAdd = document.createElement('p'); 
commentToAdd.innerHTML = comment; 
$('#comments').append(commentToAdd); 
commentToAdd.show('slow');