Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.08.2015, 13:46
Интересующийся
Отправить личное сообщение для krasnov8953 Посмотреть профиль Найти все сообщения от krasnov8953
 
Регистрация: 04.08.2015
Сообщений: 17

Как сделать чтобы не перекидывало на другую страницу при отправке сообщения?
Есть скрипт гостевой книги который записывает данные с формы в таблицу c помощью ajax без перезагрузки страницы выглядит так
<script>
    function show_messages(Page)
    {
        $.ajax({
            url: "show.php?page=" + Page,
            success: function(data){
            $(".messages").html(data);
            }
        });
    }
                            
    $(document).ready(function(){   
    show_messages();
    $("#form").submit(function(){
        var name = $("#name").val();
        var email = $("#email").val();
        var msg  = $("#message").val();
        $.ajax({
            type: "POST",
            url: "action.php",
            data: "username="+name+"&email="+email+"&msg="+msg+"&action=add",
            success: function(msg){
            show_messages();
            }   
        });
        $("#name,#email,#message").val('');             
    return false;   
    });
    });
    </script>



файл который выводит сообщения выводит на страницу с формой show.php выглядит так
<?php
    include ("dbconnect.php");
    $show_messages=5;
    $page=$_GET['page'];
    $count_messages=mysql_query("SELECT COUNT(*) FROM gb");
    $messages=mysql_result($count_messages,0);
    $total_pages = intval(($messages - 1) / $show_messages) + 1;
    $page = intval($page);
    if(empty($page) or $page < 0) $page = 1;  
    if($page > $total_pages) $page = $total_pages;
    $start = $page * $show_messages - $show_messages;
 
    $c=0;
    $r=mysql_query ("SELECT * FROM gb ORDER BY id DESC LIMIT $start,$show_messages"); 
    while ($row=mysql_fetch_array($r))
    {
?>
                <div class="guestbook_item">
                <div id="guestbook_name"><?php echo $row['username']; ?></div>
                <div id="guestbook_email"><?php echo $row['email']; ?></div>
                <div id="guestbook_message"><?php echo $row['msg']; ?></div>
                </div>
<?php
    $c++;
    }
    if ($c==0)
        echo "Гостевая книга пуста!<br>";
?>
<?
echo "<div id='gb_pagination'>";
for($p=1;$p<=$total_pages;$p++) {
  if($p==$page){
     echo '<b>'.$p.'</b>';
  }else{ ?>
  <a href="gb.php?page='<?= $p ?>'" onclick="show_messages(<?= $p ?>); return false;" ><?= $p ?></a>
<? 
}}
 
echo "</div>"; ?>


Если я нахожусь на 2 странице при нажатии на клавишу отправить меня перекидывает опять на 1 страницу с новым сообщением, подскажите пожалуйста как этого избежать?
Ответить с цитированием
  #2 (permalink)  
Старый 29.08.2015, 15:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

$c=0;
$r=mysql_query
while
$c++;
if ($c==0) echo "Гостевая книга пуста!<br>";


А для чего тогда блок, который получает всего записей для навигатора?


Сообщение от krasnov8953
при нажатии на клавишу отправить меня перекидывает опять на 1 страницу
И где, и что за кнопка?

PS. А запрос страниц всегда без параметров, чего же вы хотите?

Последний раз редактировалось laimas, 29.08.2015 в 15:26.
Ответить с цитированием
  #3 (permalink)  
Старый 29.08.2015, 16:35
Интересующийся
Отправить личное сообщение для krasnov8953 Посмотреть профиль Найти все сообщения от krasnov8953
 
Регистрация: 04.08.2015
Сообщений: 17

А для чего тогда блок, который получает всего записей для навигатора?--->
мне что убрать его, как же выводить навигацию?
И где, и что за кнопка? это кнопка с формы, форма так выглядит
<form id="form">
								<p>Введите ваше имя:<span>*</span>
								<input id="name" name="username" required pattern="^[А-яа-яa-zA-Z]+$" maxlength="60"></p>
								<p>Введите Ваш Email:<span>*</span>
								<input id="email" name="email" type="email" pattern="[^@]+@[^@]+\.[a-zA-Z]{2,6}" required maxlength="60"></p>
								Введите Ваше Сообщение:<span>*</span>
								<textarea id="message" name="msg" cols="57" rows="5" required maxlength="1000"></textarea>
								<input id="submit" type="submit" value="Отправить" >
					</form>

А запрос страниц всегда без параметров, чего же вы хотите? ---> параметры же передаются через ajax иначе бы страницы не переключались! Как по твоему это тогда можно решить?
Ответить с цитированием
  #4 (permalink)  
Старый 29.08.2015, 17:04
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

$count_messages=mysql_query("SELECT COUNT(*) FROM gb");
$messages=mysql_result($count_messages,0);

Так смело можно поступать только в том случае, если есть глобальный обработчик ошибок, который в случае неудачного запроса к базе выведет ошибку и закончит работу скрипта. Иначе нужно обязательно проверять результат запроса.

"SELECT COUNT(*) - возвращает число записей, а значит уже известно есть ли записи в базе или нет, зачем же $c=0; и $c++;? Должно быть так:

if($q = mysql_query("SELECT COUNT(*) FROM gb")) {
    if($count_messages = mysql_num_rows($q)) {
        //вывод записей
    } //иначе записей нет
} //иначе ошибка запроса


А запросы на вывод записей у вас всегда без указания страницы - show_messages(). И надо переходить на PDO или mysqli.
Ответить с цитированием
  #5 (permalink)  
Старый 29.08.2015, 17:22
Интересующийся
Отправить личное сообщение для krasnov8953 Посмотреть профиль Найти все сообщения от krasnov8953
 
Регистрация: 04.08.2015
Сообщений: 17

А запросы на вывод записей у вас всегда без указания страницы - show_messages()
ка же без указания страницы?

<a href="gb.php?page=<?=$p?>" onclick="show_messages('<?= $p ?>'); return false;" ><?= $p ?></a>
Ответить с цитированием
  #6 (permalink)  
Старый 29.08.2015, 17:28
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Это запрос страницы из навигатора, а жалоба на что - при нажатии на клавишу отправить меня перекидывает опять на 1 страницу?

А это что?
....
success: function(msg){
show_messages();
Ответить с цитированием
  #7 (permalink)  
Старый 29.08.2015, 17:29
Интересующийся
Отправить личное сообщение для krasnov8953 Посмотреть профиль Найти все сообщения от krasnov8953
 
Регистрация: 04.08.2015
Сообщений: 17

ок переделал как вы сказали, но проблема все равно осталась
Ответить с цитированием
  #8 (permalink)  
Старый 29.08.2015, 17:30
Интересующийся
Отправить личное сообщение для krasnov8953 Посмотреть профиль Найти все сообщения от krasnov8953
 
Регистрация: 04.08.2015
Сообщений: 17

т.е в success нужно переменную Page передать?
Ответить с цитированием
  #9 (permalink)  
Старый 29.08.2015, 17:35
Интересующийся
Отправить личное сообщение для krasnov8953 Посмотреть профиль Найти все сообщения от krasnov8953
 
Регистрация: 04.08.2015
Сообщений: 17

пробую так
success: function(Page){
            show_messages('<?= $p ?>');
            }
но без результатов
Ответить с цитированием
  #10 (permalink)  
Старый 29.08.2015, 18:00
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Откуда здесь:
success: function(Page) { show_messages( может появиться '<?= $p ?>'); ?

Запросили в навигаторе страницу N, и это текущая страница, запомнили (или получать из навигатора при отправке формы), этот номер и нужно передавать в функцию и JS.
Иначе сервер должен помнить текущую страницу.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать, чтобы при вводе числа в поле добавлялись разделители групп разрядов? Hurray Элементы интерфейса 13 18.02.2015 14:07
как сделать что бы при открытии страницы сразу открылось большое фото oksanaweb Общие вопросы Javascript 1 05.06.2013 02:17
Как сделать чтобы не закрывать актиыный див при открытии другого дива dimas15 Общие вопросы Javascript 53 21.08.2012 23:27
Как сделать, чтобы музыка <embed> на странице не играла только при первом посещении? Bad Request Общие вопросы Javascript 22 27.07.2009 19:44
Как сделать, чтобы 2 ссылки отображались как hover при наведении мышкой на любую? Ava Элементы интерфейса 5 19.05.2009 23:24