Mise à jour par lot avec CodeIgniter

Je suis en train de faire un petit open CMS avec CodeIgniter et je suis en train de travailler sur le système de catégories.

Je suis vraiment coincé avec ça et après beaucoup d'essais et les post sur le forum je n'ai pas le résoudre.

J'ai 2 TABLES mySQL

  • #1 : ft_categories (liste de toutes les catégories de noms avec 2 champs :
    category_name et id)
  • #2 : ft_upload_data (liste de tous les postes avec des champs comme id, titre, catégorie,
    date et ainsi de suite)

Je veux mettre à JOUR mon #1 TABLE avec les données dans une édition categorie des noms de la forme (ce formulaire est rempli avec des entrées dans une boucle pour modifier plusieurs catégories à la fois)

Ici, il est :

if ($result != NULL) {
echo form_open('admin/update_categories/');
if (isset($result) && $result != NULL) {

    foreach ($result as $row) {
    echo form_input('category_name[]' ,$row->category_name);
    echo anchor("admin/delete_category/$row->category_name", 'Delete category');
    echo '<br /><br />';
    }

    echo '<br /><br />';
    echo form_submit('','Save');
    echo form_close();

} } else { echo 'NO categories'; }

C'est le formulaire avec les données récupérées à partir de la DB, où vous pouvez éditer le nom.

Ok maintenant, lorsque vous modifiez la categorie de noms que vous allez à 'update_categories' CONTRÔLEUR pour faire la demande de mise à JOUR

    function update_categories(){

    $i = 0;
    foreach ($this->input->post('category_name') as $cat)
        $data[$i++]['category_name'] = $cat;
        //The $i++ creates a multi-dimensional array to insert
        //multiple rows into the DB.

    $this->admin_model->update_categories($data);

}

Cette obtiendrez les multiples entrées de champs à mettre à JOUR la DB.
Et maintenant, je vais le MODÈLE pour mettre à JOUR les données dans la DB et VOICI LE PROBLÈME :

    function update_categories($data) {

    ?

Je ne sais pas ce que je peux faire pour mettre à jour les noms correctement avec quelque chose comme un insert_batch mais avec la mise à JOUR, car bien que j'ai besoin de mettre à JOUR la TABLE #1, j'ai également BESOIN de mettre à jour le nom du champ dans la TABLE #2
Double mise à JOUR sur les 2 Tableaux et 1 lot de mise à JOUR dans le TABLEAU n ° 1

Évidemment j'ai essayé d'ajouter un de plus : TABLEAU #3 qui obtient le TABLEAU#1 id de champ et la correspondance avec le TABLEAU#2 id de champ, mais je ne peux pas le comprendre, à faire la connexion entre les 3 tableaux.

Toute aide serait très très apprécié! Merci beaucoup!! (désolé pour mon mauvais anglais)


Merci pour la réponse!

Ok j'ai cette troisième table maintenant, je voudrais récupérer le 'category_name' pour montrer ce à l'intérieur de la 'post'

J'ai ceci :

    $this->db->order_by('rank', 'asc');

$this->db->select('*');
$this->db->from('ft_upload_data');
$this->db->join('ft_categories', 'assigned_categories.ft_categories_id = assigned_categories.ft_upload_data_id');

$query = $this->db->get();



return $query->result();

Mais il dit qu'il est Inconnu de la colonne 'assigned_categories.ft_categories_id' dans 'clause'

(assigned_categories est mon troisième TABLE avec l'id de la poste et de l'id de la catégorie de correspondance)

Une idée?

vous avez oublié tthat vous pouvez faire un simple $data[]='';

OriginalL'auteur ludovic | 2011-06-07