2009-08-29 9 views
1

J'utilise le framework Codeigniter et j'ai un formulaire avec des champs de saisie. Quand je veux insérer les valeurs des champs entrées dans la base de données que j'utilise ce codeInsérer des données de foreach à la base de données en PHP

function add($tableName) 
{ 
    $fieldsData = $this->db->field_data($tableName); // to get all fields name of the table like (id,title,post ..) 
    foreach ($fieldsData as $key => $field) 
    { 
     $datacc = array( $field->name => $this->input->post($field->name)); 
     echo $this->input->post($field->name) ; // when I submit the form I get all that data I need like (mySubjet, MyPost...) 
    } // but when I insert the data it insert just the last filed like (cat_id = 3) only !// and the other fields are empty .. 
    $this->db->insert($tableName, $datacc); 
} 

donc je ne reçois que la dernière valeur insérée dans la base de données, mais quand je mets la ligne d'une requête dans la boucle foreach comme:

function add($tableName) 
{ 
    $fieldsData = $this->db->field_data($tableName); 
    $datacc = ""; 
    foreach ($fieldsData as $key => $field) 
    { 
     $datacc = array( $field->name => $this->input->post($field->name)); 
     $this->db->insert($tableName, $datacc); // inside the loop ! 
    } 
} 

insère 15 enregistrements/lignes (le nombre de champs dans la table) et insère une valeur unique pour chaque ligne. Insère le champ TITLE dans la première ligne, le champ POST dans la ligne suivante et le champ dateOfpost dans le troisième et ainsi de suite.

Répondre

2

Vous avez un tableau appelé $ datacc, mais vous le réinitialisez à chaque fois. Vous devez ajouter à cela.

function add($tableName) 
{ 
    $fieldsData = $this->db->field_data($tableName); 
    $datacc = array(); // you were setting this to a string to start with, which is bad 
    foreach ($fieldsData as $key => $field) 
    { 
     $datacc[ $field->name ] = $this->input->post($field->name); 
    } 
    $this->db->insert($tableName, $datacc); 

} 

Ceci insère une ligne, mais construit le tableau $ datacc au fur et à mesure.

Vous devriez jeter un oeil à http://php.net/array pour en savoir plus sur le fonctionnement des tableaux.

+0

WaW! .. Je ne peux pas en croire mes yeux .. Enfin ça marche !! Gregmac Merci SO SO Tellement .. Je me suis fatigué de ce code que j'ai essayé des centaines de fois pendant 3 jours 12 heures/jour! J'apprécie vraiment votre aide .. et je ne l'oublierai pas! :) –

0
function insert_multiple($table,$data) 
{ 
    foreach($data as $values) 
    { 
     $this->db->insert($table, $values); 
    } 
} 
+0

Salut adatapost merci de rejouer .. La solution de Gregmac fonctionne .. merci .. –

Questions connexes