Добавить запрос SQL в Jquery аккордеонный заголовок - PullRequest
2 голосов
/ 12 ноября 2011

Я использую аккордеон jquery, чтобы перечислить все полученные / отправленные письма.Заголовок (h3 + a) показывает объект, содержимое (div) - текст письма.

HTML аккордеон:

<div id="accordion">
      <div>
            <h3><a href="#">object 1</a></h3>
            <div>mail 1 text</div>
      </div>
      <div>
            <h3><a href="#">object 2</a></h3>
            <div>mail 2 text</div>
      </div>
      <div>
            <h3><a href="#">object 3</a></h3>
            <div>mail 3 text</div>
      </div>
</div>

Функция скрипта аккордеона:

$(function() {
        $( "#accordion" ).accordion({
            autoHeight: false,
            header: "h3",
            navigation: true
        });
    });

Проблема:

Я хотел бы запрашивать свою базу данных SQL только тогда, когда я нажимаю на заголовок письма и избегаю предварительной загрузки всех писем.Другая проблема, очень важная в моем случае, состоит в том, чтобы пометить письмо как «прочитанное» или «непрочитанное».Для этого в базе данных SQL есть столбец.Поэтому, когда я нажимаю на заголовок его аккордеона, почта должна перейти в состояние «чтение».

Перед использованием аккордеона я использовал простую ссылку, которая перезагружала всю страницу.У меня нет проблем с PHP / SQL, но я не очень хорош в javascript / jquery или ajax ...

SQL-запрос (упрощенный):

$sql = "SELECT mail_object, mail_text FROM table_mail ";
$req = mysql_query($sql);

SQL обновлениесостояние чтения (упрощенно):

$sql_2 = "UPDATE table_mail SET mail_read=1 ";
$req_2 = mysql_query($sql_2);

Итак, есть ли способ выполнить этот код, когда я нажимаю на заголовок?

После этого я спрошу вас, как изменитьстиль заголовка для различения прочитанного / непрочитанного письма (например, жирным шрифтом или изменения фонового изображения / цвета).

Спасибо.++

Ответы [ 2 ]

1 голос
/ 12 ноября 2011

что по этому поводу

$("a").one('click', function(){
    $.post("url_where_php_query_db_and_update_at_the_same_time", 
     $(this).text(),
     function(xhr){
       var mailText = xhr.responseText;
       $(this).next("div").text(mailText);  //update the mail content
       //now set your mail to another class  
       $(this).addClass("read"); 
       //you need to have css to set "read" class to different style
       //e.g. a.read { font-weight: normal;}
    });
0 голосов
/ 13 ноября 2011

Хорошо, функция post отлично работает при нажатии на заголовок гармошки:

<div id="accordion">
  <div>
        <h3><a onclick=$.post('update_to_read.php') href="#">object 1</a></h3>
        <div>mail 1 text</div>
  </div>

Теперь я попытаюсь добавить запрос для содержимого почты.

ТНХ.

...