2017-02-03 3 views
1

Здесь я использую чтение xls-файла в php, он работает отлично, я делаю одну логику, файл xls Я получаю номер значка (4565) и месяц (01-2017)) теперь я хочу проверить, есть ли номер значка и уже существующие данные месяца, предположим, что данные являются exixts, поэтому я не должен позволять вставлять новую запись, а не выходить, значит, я хочу разрешить вставить новую запись, как это сделать , я запутался из-за листа xls.Как проверить условие с помощью файла xls в php

<?php 
include 'excel_reader.php';// include the class 
$groupfile ='test.xls'; 
$excel = new PhpExcelReader; 
$excel->read($groupfile); 
function sheetData($sheet) { 
    $result = ''; 
    $row = 2; 
    while($row <= $sheet['numRows']) { 
     $id = isset($sheet['cells'][$row][1]) ? $sheet['cells'][$row][1] : ''; 
     $loan_month = isset($sheet['cells'][$row][2]) ? $sheet['cells'][$row][2] : ''; 
     $badge_number = isset($sheet['cells'][$row][3]) ? $sheet['cells'][$row][3] : ''; 
     $name = isset($sheet['cells'][$row][4]) ? $sheet['cells'][$row][4] : ''; 
     $pf_amount = isset($sheet['cells'][$row][5]) ? $sheet['cells'][$row][5] : ''; 
     $loan_amount = isset($sheet['cells'][$row][6]) ? $sheet['cells'][$row][6] : ''; 
     $date_format=date('d/m/Y'); 
     $status=0; 
     $explode_date=explode("/",$loan_month) ; 
     $month = $explode_date[1].'-'.$explode_date[2] ; 
     $sql = mysql_query("INSERT INTO loan_history(pf_month,badge_number,first_name,pf_amount,loan_amount,reg_date,status)VALUES('$month','$badge_number','$name','$pf_amount','$loan_amount','$date_format','$status')"); 
     if($sql){ 
      echo "success" ; 
     }else{ 
      echo mysql_error(); 
     } 
     $row++; 
    } 
} 
$nr_sheets = count($excel->sheets); 
for($i=0; $i<$nr_sheets; $i++) { 
    sheetData($excel->sheets[$i]); 
} 
?> 
+0

Так есть таблица в БД, где «badge_number» и «MONTH_YEAR» являются первичные столбцы? – Borjante

+0

Мое требование - это тот же месяц и тот же badge_number, тогда только я хочу остановиться, предположим, что тот же badge_number, но месяц другой означает, что я хочу вставить значения, как это сделать –

ответ

0

Исправьте меня, если это не так, но я понимаю, что ограничение, которое у вас есть, делает его идеальным для создания первичного ключа с несколькими столбцами на столе.

  1. Вы делаете новое ограничение на таблицу:

    ALTER TABLE foo 
    ADD CONSTRAINT pk_badge_month PRIMARY KEY (badge_number, month) 
    
  2. Теперь вы можете делать то, что мы называем upsert, это гораздо лучше, исполнительская, чем чтение и принятие решения, если нам нужно обновить или вставить.

    INSERT INTO foo (badge_number,month,other_column) VALUES (1,'one','won'), (2,'two','too') 
    
+0

Мое требование - это тот же месяц и тот же badge_number, что и я хочу остановиться, предположим, что тот же badge_number, но месяц другой означает, что я хочу вставить значения, как это сделать –

+0

См. отредактированный, в основном, если у вас есть DB управлять этим для вас, ваша жизнь будет проще. Это на тот случай, если у вас есть доступ к БД и вы можете управлять им – Borjante

+0

Можете ли вы, пожалуйста, обновить мой ответ, я не могу вас достать –

Смежные вопросы