2011-01-18 9 views
0

У меня есть контроллер: сообщения способ, в этом контроллере: favourite_checked() переменная, которая хранит messages_id из моей таблицы сообщений в моей базе данныхвызова к контроллеру внутри яваскрипта функции

Этот URL производится

mysite.com/messages/favourite_checked/1 mysite.com/controller/method/message_id

Когда этот URL успешно называется он подключается к моей модели и обновляет столбец в моей таблице сообщений называется «любимым». 0 в этой колонке обновляются до 1.

0 = коробочный снят (не любимые почтовых ящика сообщений) - неактивно изображение 1 = коробочные проверяются (конкретное выбранный пользователь сообщение, как любимое сообщение) - Цветные изображения

Во всяком случае Я как-то хочу, чтобы этот URL был загружен в мою (ischecked) функцию в моем javascript. Проблема заключается в необходимости также загружать правильную message_id в определенную строку, на которую нажимается.

message_id = id ... из моей таблицы сообщений, которая захватывается из базы данных и добавляется в конец URL-адреса, и в основном это то, что мой метод контроллера хранится в переменной и переходит к модели в качестве аргумента и используется в sql-запросе в модели, чтобы убедиться, что исправлена ​​строка в базе данных.

В следующем коде я делаю то же самое для своих сообщений в папке «Входящие». Работает отлично.

<?php foreach ($query as $row): ?> 
    <tr> 
    <?php switch($row['status']){ 
     case 0: $status = "unread"; break;    
     case 1: $status = "read"; break; 
     case 2: $status = "replied"; break; 
     case 3: $status = "fav"; break; 
     default: $status = '';   
    }?> 

    <td width="5%"><input name="message" id="messages" type="checkbox" value="" class="<?php echo $status; ?>"/></td> 
    <td width="5%"><input name="sunny" id="" type="checkbox" value="" class="favourite" checked="checked" /></td> 
    <td><?php echo $status; ?></td> 
    <td><?php echo $row['from_user']; ?></td> 
    <td><div id="test"><a href="<?php echo site_url("messages/read_message/".$row['id']); ?>"><?php echo $row['subject'] . " " . $row['message']; ?></a></a></div></td> 
    <td><?php if ($row['date_sent'] == date('Y-m-d')) { echo $row['time_sent']; } else echo $row['date_sent']; ?></td> 
    </tr> 
<?php endforeach; ?> 

Я только некоторые, как нужно иметь URL выше идентификатор схватился от моей загрузки базы данных после того, как флажок, так запрос может запустить и обновить конкретный столбец в моей базе данных

и сделать то же самое когда поле снова не отмечено.

Мне также нужен цикл foreach внутри функции javascript, потому что каждое сообщение в их почтовом ящике должно быть доступно для того, чтобы они могли делать сообщения любимыми сообщениями.

Вот мой Javascript

// favourite check box 
    $('input.favourite:checkbox').simpleImageCheck({ 
    image: '<?php echo base_url()?>images/messages/check.png', 
    imageChecked: '<?php echo base_url()?>images/messages/unchecked.png', 
    afterCheck: function(isChecked) { 
    if (isChecked) { 



    //query to db from php to update favourite number to 1 
    $.post(''); 

    } 
// else (!isChecked) 
//  { 
//   //query to db from php to update favourite number to 0 
//    $.post(''); 
//  } 
    } 
}); 

Помощь оценили заранее спасибо.

ответ

1

Вы можете сохранить идентификатор сообщения как data attribute в html. Например,

<tr data-message-id="<?php echo $id_goes_here; ?>"> 

вместо простого

<tr> 

Затем в обработчике события, вы можете получить идентификатор сообщения, как этот

$(this).closest('tr').attr('data-message-id') 

Я предполагаю, что this указывает на элемент нажал (или любой элемент DOM внутри этой строки)

PS С недавней версией jquery (1.4.4 , Я думаю), вы также можете заменить .attr('data-message-id') на .data('message-id').

+0

Работал отлично – LondonGuy