Domanda

Sulla mia casella di posta utente dal mio sistema di messaggistica user Sto costruendo una caratteristica in cui un utente può dare un messaggio di posta elettronica un messaggio preferito.

Ho creato 2 metodi nel mio modello messaggi. Uno aggiornamenti il ??0 nella tabella 'messaggi', colonna 'preferito' a 1 che significherebbe l'utente vuole il messaggio di essere un favorito. Anche l'immagine l'utente fa clic su per rendere il messaggio a giri preferiti dal grigio al colore.

Poi faccio questo stesso processo di nuovo se un utente vuole rendere il messaggio non è un favorito. Il 1 viene aggiornato ad un 0 e le curve di immagini in grigio di nuovo.

Di seguito è riportato il mio jquery / javascript che fa fondamentalmente qualcosa se la casella è selezionata (immagine è a colori) e qualcos'altro se la casella non è selezionata (immagine in grigio).

// 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
    }
    else (!isChecked)
        {
            //query to db from php to update favourite number to 0
        }
  }
});

Quello che sto cercando di capire è il modo migliore per chiamati i miei 2 query db nel mio modello:

public function favourite_checked($message_id)
{
    $username = $this->session->userdata('username');
    return $this->db->query("UPDATE messages SET favourite = 1 WHERE id = $message_id AND to_user = '$username'");    
}

    public function favourite_unchecked($message_id)
{
    $username = $this->session->userdata('username');
    return $this->db->query("UPDATE messages SET favourite = 0 WHERE id = $message_id AND to_user = '$username'");    
}

Quale sarebbe il modo migliore per farlo? Chiamare un modello direttamente in una vista è cattiva pratica non è vero?

Così come avrei potuto ottenere ciò che mi piacerebbe raggiungere?

Può un atto di controllo come un mezzo uomo?

Se sì, come dovrei anche chiamare un controller in una funzione javascript?

Ho sempre apprezzato i consigli forniti qui. Grazie in anticipo

È stato utile?

Soluzione

In jQuery, è necessario utilizzare una richiesta GET Ajax a un controller di CodeIgniter. Dire il controller si chiama gli utenti, e la vostra funzione è chiamata update_favorites. La chiamata jQuery potrebbe essere simile a questo:

$.get('http://mysite.com/users/update_favorites/user_id/message_id');

Il controller sarebbe poi trovare gli argomenti URL user_id e message_id, e caricare il vostro modello con tali argomenti. Il modello sarebbe apportare modifiche al database.

In bocca al lupo!

Altri suggerimenti

in aggiunta a metodo $ .get di estate, è possibile utilizzare il metodo di jQuery $ .post () più o meno allo stesso modo. Mi piace usare postare meglio perché Codeigniter è stato scritto per favorire le richieste POST su richieste GET.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top