Comment appeler une requête de base de données de modèles dans une fonction javascript dans une vue?

StackOverflow https://stackoverflow.com/questions/4726934

Question

Sur ma boîte de réception de l'utilisateur de mon système de messagerie de l'utilisateur Je construis une fonction où un utilisateur peut faire un message e-mail un message favori.

J'ai créé 2 méthodes dans mon modèle de messages. Une mise à jour du 0 dans le tableau « messages », colonne « favori » à 1 ce qui voudrait dire que l'utilisateur souhaite que le message soit un favori. Aussi l'image que l'utilisateur clique sur le message pour faire un tour favori de gris à la couleur.

Alors je fais ce même processus si un utilisateur veut faire le message pas un favori. L'une est mise à jour a 0 et les spires de l'image en grisé à nouveau.

Voici mon jquery / javascript qui fait fondamentalement quelque chose si la case est cochée (l'image est en couleur) et autre chose si la boîte n'est pas cochée (l'image grisés).

// 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
        }
  }
});

Ce que je suis en train de comprendre est la meilleure façon de mes 2 requêtes appelé db dans mon modèle:

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'");    
}

Quelle serait la meilleure façon de le faire? Appeler un modèle directement dans une vue est une mauvaise pratique ne l'est pas?

Alors, comment pourrais-je obtenir ce que je voudrais réaliser?

pourrait un acte de contrôleur comme intermédiaire?

Si oui, comment pourrais-je appeler même un contrôleur dans une fonction javascript?

J'apprécie toujours les conseils donnés ici. Merci à l'avance

Était-ce utile?

La solution

Dans le jQuery, vous pouvez utiliser une requête get Ajax à un contrôleur CodeIgniter. Supposons que votre contrôleur est appelé les utilisateurs, et votre fonction est appelée update_favorites. L'appel jQuery pourrait ressembler à ceci:

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

Votre contrôleur serait alors trouver les arguments d'URL pour user_id et message_id, et chargez votre modèle avec ces arguments. Le modèle apporterait des changements à la base de données.

Bonne chance!

Autres conseils

en plus de la méthode .get $ Summer, vous pouvez utiliser la méthode .post () $ jQuery de la même façon. J'aime utiliser poster mieux parce que Codeigniter a été écrit pour favoriser les demandes de poste sur recevoir des demandes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top