JQuery получить данные MySQL? или использовать PHP как посредника между базой данных и jquery? - PullRequest
0 голосов
/ 16 января 2011

У меня есть столбец в таблице сообщений моей базы данных. Он называется «статус» и в основном обновляется каждый раз, когда пользователь «читает» сообщение, делает сообщение «избранным». По умолчанию для столбца tinyint установлено значение "0".

0 = непрочитано 1 = читать 2 = любимый

У меня есть некоторые jquery и css на моей странице входящих сообщений, которые позволяют пользователю иметь возможность устанавливать все флажки сообщений или нет, если они были выбраны.

Прямо над моими входящими сообщениями находятся эти ссылки "все - нет - прочитано - непрочитано - избранное ...". Это в основном варианты сообщений, которые пользователь может автоматически проверять / выбирать.

Что я хочу сделать

Я бы хотел, чтобы мой jquery взял значения из таблицы сообщений базы данных ... столбец состояния и как их использовать, чтобы определить, прочитано ли сообщение ... не прочитано или было добавлено в избранное.

С PHP я уже сделал нечто подобное с помощью простого оператора if.

  <?php foreach ($query as $row):  ?>
  <tr>
    <td width="5%"><input name="message" id="messages" type="checkbox" value=""></td>
    <td width="5%">fav*</td>
    <td><?php if ($row['status'] == 0) { echo "Unread"; } elseif ($row['status'] == 1) {echo "Read";} elseif ($row['status'] == 3) { echo "Replied";}?></td>
    <td><?php echo $row['from_user']; ?></td>
    <td><?php echo $row['subject'] . " - " . $row['message']; ?></td>
    <td><?php if ($row['date_sent'] == date('Y-m-d')) { echo $row['time_sent']; } else echo $row['date_sent']; ?></td>
  </tr>
  <?php endforeach; ?>

JQuery

 <script type="text/javascript">

$('#links').delegate('a', 'click', function(ev) {
    // reset all checkboxes
    $('input:checkbox').attr('checked', false);

    // get info, what is the user choice
    whichMessages = $(this).attr('id');

    // do our main work - select checkboxes
    switch (whichMessages) {
    case 'all':
        $('input:checkbox').attr('checked', true);
        break;
    case 'read':
        $('input:checkbox.read').attr('checked', true);
        break;
    case 'unread':
        $('input:checkbox.unread').attr('checked', true);
        break;
    case 'fav':
        $('input:checkbox.fav').attr('checked', true);
        break;
    };

    // add some user-frendly markup
    $('#links a').removeClass('active');
    $(this).addClass('active');

    // and standard action to prevent standard link click event
    ev.preventDefault();
});



</script>

HTML

<p id="links">
    <a href="#" id="all" class="pseudo">all</a>,
    <a href="#" id="none" class="pseudo active">none</a>,
    <a href="#" id="read" class="pseudo">read</a>,    
    <a href="#" id="unread" class="pseudo">unread</a>,
    <a href="#" id="fav" class="pseudo">favourite</a>

Ответы [ 2 ]

3 голосов
/ 16 января 2011

Не используйте jQuery для подключения к вашей базе данных, поскольку пользователь может вводить свои собственные запросы и получать нежелательный доступ к вашей базе данных. Однако используйте ваш php-скрипт в качестве посредника, чтобы вернуть нужные значения в объект JSON, а затем получить его с помощью ajax.

1 голос
/ 16 января 2011

Скопируйте оператор if или, что еще лучше, используйте оператор switch, чтобы напечатать правильный класс css в флажке

<?php foreach ($query as $row):  ?>
  <tr>
 <?php switch($row['status']){
  case 0: $status = "Unread"; break;
  case 1: $status = "Read"; break;
  case 3: $status = "Replied"; break;
  default: $status = '';
 }?>   
 <td width="5%"><input name="message" id="messages" type="checkbox" value="" class=<?php echo $status;?>"></td>
    <td width="5%">fav*</td>
    <td><?php echo $status;?></td>
    <td><?php echo $row['from_user']; ?></td>
    <td><?php echo $row['subject'] . " - " . $row['message']; ?></td>
    <td><?php if ($row['date_sent'] == date('Y-m-d')) { echo $row['time_sent']; } else echo $row['date_sent']; ?></td>
  </tr>
<?php endforeach; ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...