как исправить ошибку зацикливания после переименования файла на codeigniter - PullRequest
0 голосов
/ 01 января 2019

Я создал новую функцию для изменения имени файла для загрузки.Теперь я успешно изменил имя файла.но в моем коде перед тем, как он перебирает файлы в обычном режиме, он выдает ошибку.

У меня есть 5 файловых входов, где ввод находится в 1 форме.

Не было проблем перед добавлением моей функции, но после добавления функции переименования мой цикл стал грязным, но мой старый код работал правильно.

вот мой старый код:

public function proses_upload()
{

    $gambar = array();
    $jumlah = count($_FILES['userfile']['name']);

    for ($i=0; $i < $jumlah; $i++) 
    { 
        $file_name = $_FILES['userfile']['name'][$i];
        $tmp_name = $_FILES['userfile']['tmp_name'][$i];        
        move_uploaded_file($tmp_name, "file/".$file_name);
        $gambar[$i] = $file_name;                 
    }

    $nama_file1 = $gambar[0];
    $format_p2ptm =1; 
    $tanggal = date("Y-m-d H:i:s");
    $jenis ='p2ptm';

    $nama_file2 = $gambar[1];
    $format_p2ptm2 =2; 
    $jenis ='p2ptm';

    $nama_file3 = $gambar[2];
    $format_p2ptm3 =3;
    $jenis ='p2ptm';

    $nama_file4 = $gambar[3];
    $format_p2ptm4 =4;
    $jenis ='p2ptm';

    $nama_file5 = $gambar[4];
    $format_p2ptm5 =5; 
    $jenis ='p2ptm';

    if (!$nama_file1 == "") {
        $this->app_model->insert_data('penyakit', $format_p2ptm, $tanggal,$nama_file1,$jenis, $this->session->userdata('id_puskesmas'));
    }
    if(!$nama_file2 == ""){
        $this->app_model->insert_data('penyakit', $format_p2ptm2, $tanggal,$nama_file2,$jenis,$this->session->userdata('id_puskesmas'));
    }
    if(!$nama_file3 == ""){
        $this->app_model->insert_data('penyakit', $format_p2ptm3, $tanggal,$nama_file3,$jenis,$this->session->userdata('id_puskesmas'));
    }
    if(!$nama_file4 == ""){
        $this->app_model->insert_data('penyakit', $format_p2ptm4, $tanggal,$nama_file4,$jenis,$this->session->userdata('id_puskesmas'));
    }
    if(!$nama_file5 == ""){
        $this->app_model->insert_data('penyakit', $format_p2ptm5, $tanggal,$nama_file5,$jenis,$this->session->userdata('id_puskesmas'));
    }

    redirect('puskesmas/view_puskesmas');

}

Вот мой новый код с ошибками:

public function proses_upload()
{

    $gambar = array();
    $jumlah = count($_FILES['userfile']['name']);

    for ($i=0; $i < $jumlah; $i++)
    { 

        $file_name = $_FILES['userfile']['name'][$i];
        $explode = explode('.',$file_name);
            // die(print_r($explode));
        $ekstensi = pathinfo($file_name, PATHINFO_EXTENSION);
        $bulan = date('M');
        $tahun = date('y') ;
        $kode  = $this->session->userdata('kode_puskesmas');
        $new_file_name = $explode[1].'_'.$kode.'_'.$bulan.$tahun.'.'.$ekstensi;
        $tmp_name = $_FILES['userfile']['tmp_name'][$i];        
        move_uploaded_file($tmp_name, "file/".$new_file_name);
        $gambar[$i] = $new_file_name;                 
    }

    $nama_file1 = $gambar[0];
    $format_p2ptm =1; 
    $tanggal = date("Y-m-d H:i:s");
    $jenis ='p2ptm';

    $nama_file2 = $gambar[1];
    $format_p2ptm2 =2; 
    $jenis ='p2ptm';

    $nama_file3 = $gambar[2];
    $format_p2ptm3 =3;
    $jenis ='p2ptm';

    $nama_file4 = $gambar[3];
    $format_p2ptm4 =4;
    $jenis ='p2ptm';

    $nama_file5 = $gambar[4];
    $format_p2ptm5 =5; 
    $jenis ='p2ptm';

    if (!$nama_file1 == "") {
        $this->app_model->insert_data('penyakit', $format_p2ptm, $tanggal,$nama_file1,$jenis, $this->session->userdata('id_puskesmas'));
    }
    if(!$nama_file2 == ""){
        $this->app_model->insert_data('penyakit', $format_p2ptm2, $tanggal,$nama_file2,$jenis,$this->session->userdata('id_puskesmas'));
    }
    if(!$nama_file3 == ""){
        $this->app_model->insert_data('penyakit', $format_p2ptm3, $tanggal,$nama_file3,$jenis,$this->session->userdata('id_puskesmas'));
    }
    if(!$nama_file4 == ""){
        $this->app_model->insert_data('penyakit', $format_p2ptm4, $tanggal,$nama_file4,$jenis,$this->session->userdata('id_puskesmas'));
    }
    if(!$nama_file5 == ""){
        $this->app_model->insert_data('penyakit', $format_p2ptm5, $tanggal,$nama_file5,$jenis,$this->session->userdata('id_puskesmas'));
    }

    redirect('puskesmas/view_puskesmas');
}

Вот моя форма просмотра:

<?php echo form_open_multipart('puskesmas/proses_upload');?>

<br><br><br>
<p>
    <h4>1. Form Lap PTM</h4>
</p>
<p>
    <label>FORMAT : </label> 
    <input type="text" name="format"  style="width:230px; height:25px; border:2;  " 
    placeholder="Form Lap PTM" readonly>
</p>
<label >Input file : </label> 
<input type="file" name="userfile[]">
<br><br><br>



<p>
    <h4>2. Form Lap Posbindu</h4>
</p>
<p>
    <label>FORMAT : </label> 
    <input type="text" name="format2"  style="width:230px; height:25px; border:2;  "
    placeholder="Form Lap Posbindu " readonly =>

</p>

<label>Input file : </label> 
<input type="file" name="userfile[]">

<br><br><br>




<p>
    <h4>3. Form Lap IVA</h4>
</p>
<p>
    <label>FORMAT : </label> 
    <input type="text" name="format3"  style="width:230px; height:25px; border:2;  "
    placeholder="Form Lap IVA " readonly>

</p>

<label>Input file : </label> 
<input type="file" name="userfile[]">
<br><br><br>




<p>
    <h4>4. Form Lap Jiwa</h4>
</p>
<p>
    <label>FORMAT : </label> 
    <input type="text" name="format4"  style="width:230px; height:25px; border:2;  "
    placeholder="Form Lap Jiwa" readonly>

</p>

<label>Input file : </label> 
<input type="file" name="userfile[]">
<br><br><br>



<p>
    <h5>5. Form Lap Indera dan Gimul</h5>
</p>
<p>
    <label>FORMAT : </label> 
    <input type="text" name="format5"  style="width:230px; height:25px; border:2;  "
    placeholder="Form Lap Indera_dan Gimul" readonly>
</p>

<label>Input file : </label> 
<input type="file" name="userfile[]">
<br><br><br>




<!-- <button class="" type="submit">Upload</button> -->
<input class="btn btn-primary btn-lg" type="submit" value="Upload">
<?php echo form_close() ?>

, если я загружаю файлы, один из 5 входных данных для столбца, который я заполняю, является верным, но почему остальные4 других входа также вводят данные?хотя я только вводил 1 ввод

это мой phpmyadmin foto input

1 Ответ

0 голосов
/ 01 января 2019

Всегда будет отправлено 5 файлов из-за отправки 5 входов, вам нужно проверить, являются ли они пустыми или заполненными.

$jumlah = count(array_filter($_FILES['userfile']['name']));

Даст вам истинное значение количества загруженных файлов, удалив пробелы.Вам нужно будет обновить оставшуюся часть кода, чтобы он соответствовал только x количеству значений массива.

Чтобы сохранить текущий код с минимальными изменениями, вы можете добавить оператор if, чтобы проверить, не является ли имя пустым

$file_name = $_FILES['userfile']['name'][$i];
$gambar[$i] = ''; //set it to blank by default for your checks further down
if($file_name != ''){
    $explode = explode('.',$file_name);
        // die(print_r($explode));
    $ekstensi = pathinfo($file_name, PATHINFO_EXTENSION);
    $bulan = date('M');
    $tahun = date('y') ;
    $kode  = $this->session->userdata('kode_puskesmas');
    $new_file_name = $explode[1].'_'.$kode.'_'.$bulan.$tahun.'.'.$ekstensi;
    $tmp_name = $_FILES['userfile']['tmp_name'][$i];        
    move_uploaded_file($tmp_name, "file/".$new_file_name);
    $gambar[$i] = $new_file_name;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...