J'ai besoin de vos conseils pour insérer des données de CSV dans ma base de données en Codeigniter, j'ai réussi avant mais pas dans ce cas. Donc, dans ce cas, je dois d'abord sélectionner l'identifiant d'une autre table et saisir sa valeur,

voici mon contrôleur:

function imports($aid)
{
  $file_data = $this->csvimport->get_array($_FILES["csv_file"]["tmp_name"]);
  foreach(array_slice($file_data, 1) as $row)
  {
    $pid = $this->m_csvimport->getid($row["nip"]);
    $array [] =array(
      'aid' => $aid,
      'pid' => $pid,
      'kodeunik' => '',
      );
  }
  $this->m_csvimport->inserts($array);
}

Voici mon modèle:

function getid($nip)
{
    $this->db->select('id');
    $this->db->from('or_peserta');
    $this->db->where('nip',$nip);
    $query = $this->db->get();

    return $query->result();
}

function inserts($array)
{
    $this->db->insert_batch('or_tr_pa',$array);
}

Comment puis-je obtenir un identifiant basé sur la ligne Csv, puis l'utiliser dans mon tableau. Veuillez m'aider à réparer mon erreur.

-1
Christianus Andre 23 mai 2018 à 13:34

3 réponses

Meilleure réponse

J'espère que cela vous aidera:

Vous ne devez renvoyer que l'identifiant de votre modèle comme ceci:

public function getid($nip)
{
    $this->db->select('id');
    $this->db->from('or_peserta');
    $this->db->where('nip',$nip);
    $query = $this->db->get();

    return $query->row()->id;
}

Votre contrôleur restera tel quel

public function imports($aid)
{
  $file_data = $this->csvimport->get_array($_FILES["csv_file"]["tmp_name"]);
  foreach(array_slice($file_data, 1) as $row)
  {
    $pid = $this->m_csvimport->getid($row["nip"]);
    $array [] =array(
      'aid' => $aid,
      'pid' => $pid,
      'kodeunik' => '',
      );
  }
  /* print_r($array) to check the data */

  $this->m_csvimport->inserts($array);
}
1
Pradeep 23 mai 2018 à 11:02
     Please Try this one

   html file
        ---------------------------------------------------
        <form method="post" id="import_form" enctype="multipart/form-data">
                    <p><label>Select Excel File</label>
                    <input type="file" name="file" id="file" required ></p>
                    <br />
                    <input type="submit" name="import" value="Import" class="btn btn-info" />
        </form>

        Jquery
        --------------------------------------------------------------------

        $(document).ready(function(){

        $('#import_form').on('submit', function(event){
                event.preventDefault();
                        $.ajax({
                    url:"<?php echo base_url(); ?>index.php/Controller/import",
                    method:"POST",
                    data:new FormData(this),
                    contentType:false,
                    cache:false,
                    processData:false,
                    success:function(data){

                        $('#file').val('');
                         $('#omrs').html('<span style="color: green;">'+data+"</span>");

                    }
                })
            });

        });

        Controller
        --------------------------------------------------------------
    function import()

    {


        if(isset($_FILES["file"]["name"]))

        {

            $path = $_FILES["file"]["tmp_name"];

            $object = PHPExcel_IOFactory::load($path);

            foreach($object->getWorksheetIterator() as $worksheet)

            {

                    $highestRow = $worksheet->getHighestRow();

                    $highestColumn = $worksheet->getHighestColumn();

                    for($row=0; $row<=$highestRow; $row++)

                    {
                        $student_fk = $worksheet->getCellByColumnAndRow(0, $row)->getValue();

                    $student_subject_name = $worksheet->getCellByColumnAndRow(1, $row)->getValue();

    $data[] = array(

                            'student_fk'=>$student_fk,

        'student_subject_name'=>$student_subject_name




        );

            }

        }

        $this->Model->insertt($data);

        echo 'Data Imported successfully';

        }   

    }




        Model
        --------------------------------------------------------------

          public function insertt($data) 

           {

        $this->db->insert_batch('student_result', $data);


          return;

         }
0
Roshima Manoharan 23 mai 2018 à 12:17

Vous pouvez utiliser un compteur dans la boucle foreach comme $ i = 1 et l'insérer dans le tableau puis à la fin de la boucle foreach l'incrémenter de 1

3
m b 23 mai 2018 à 10:50