подскажите пожалуйста, необходимо сделать цикл, который будет проверять определенный столбец передаваемого файла с условием, есть ли в данном столбце значение больше 0.
То есть приходит файл, там идут значения 0 0 0 1 видит 1, значит все нормально, гружу данные в БД
если приходит файл со значениями 0 0 0 0 то данные в БД не загружаю.
вот у меня реализовано пока так, но в данном случае, как только видит данные с нулем, сразу выбивает ошибку.
function upload($p_file){
$uploaddir = './load/';
// yyyy/mm/dd
$uploaddir .= date('Y/n/d/');
mkdir($uploaddir, 0777, true);
$uploadfile = $uploaddir . date("dmYHis", time()) . '_' . rnd(10) . '_' . basename($p_file['name']);
if (move_uploaded_file($p_file['tmp_name'], $uploadfile)) {
} else {
$error_string = "Не могу скопировать файл в load директорию";
$error = true;
return;
}
$file_name = $uploadfile;
$csv = array();
$f = fopen($file_name, "rt");
while (($buffer = fgets($f, 10000)) !== false) {
$buffer = trim($buffer,"\n\r");
$data = str_getcsv($buffer,";");
$csv[] = $data;
}
fclose($f);
$sql = "call web_t(?)";
$stmt = mysqli_prepare($page->mysqli_handle, $sql);
foreach($csv as $key => $csv_row){
if($key > 0)
{
$clm = floatval(str_replace(',', '.', $csv_row[3]));
if($clm == 0)
{
$error_string = "Все данные равны нулю";
$error = true;
return;
}
// грузим в базу.
mysqli_stmt_bind_param($stmt, 'd', $clm);
$result = mysqli_stmt_execute($stmt);
if ($result == false)
{
$error_string = "ERROR[web_t($key)]: " . mysqli_error($page->mysqli_handle);
$error = true;
return;
}
}
}
А необходимо чтобы весь файл проверяло на значение больше нуля, если есть хоть одно значение больше 0, тогда данные загружаем.
Если есть варианты как это реализовать без цикла, тоже приветсвуется.
$num = "0101";
$len = strlen($num);
for($i = 0; $i < $len; $i++){
if($num[$i] > 0 ){
$exist = true;
break;
}
}
if($exist) echo "была найдена единица";
Если неподходит то напишите и я поправлю
Надеюсь, правильно вас понял.
$array = array(0, 0, 1, 0); //Пришедшие данные
foreach($array as $key => $value) { //Идем по массиву
if($value) { //Если текущее значение не ноль. Учтите, если придет отрицательное число, то условие выполнится; если Вас это не устраивает - используйте ($value > 0)
//Здесь используйте код для загрузки массива на сервер
break;
}
}
Попробуйте так:
function upload($p_file) {
$uploaddir = './load/';
$uploaddir .= date('Y/n/d/');
mkdir($uploaddir, 0777, true);
$uploadfile = $uploaddir . date("dmYHis", time()) . '_' . rnd(10) . '_' . basename($p_file['name']);
if(!move_uploaded_file($p_file['tmp_name'], $uploadfile)) {
$error_string = "Не могу скопировать файл в load директорию";
$error = true;
return;
}
$csv = null;
$f = fopen($file_name, "rt");
while (($buffer = fgets($f, 10000)) !== false) {
$buffer = trim($buffer,"\n\r");
$data = str_getcsv($buffer,";");
$csv += $data;
}
fclose($f);
$sql = "call web_t(?)";
$stmt = mysqli_prepare($page->mysqli_handle, $sql);
for($i = 0; $i < strlen($csv); i++) {
if($csv[i] > 0) {
mysqli_stmt_bind_param($stmt, 'd', $csv);
if(!mysqli_stmt_execute($stmt)) {
$error_string = "ERROR[web_t($key)]: " . mysqli_error($page->mysqli_handle);
$error = true;
return;
}
}
}
$error_string = "Все данные равны нулю";
$error = true;
return;
}
Спасибо всем большое. А так же отдельное спасибо @Marionette Сделал по своему.. Вообщем как я и писал ранее, когда грузят файл, я его передаю в переменную. В этой переменной есть нужные мне элементы которые мне надо проверять на наличие числа больше 0. Вообще создал отдельную функцию на проверку нулей.
function check_zeros($p_csv){
foreach ($p_csv as $row ) {
if($row[3] != 0)
{
return true;
}
if($row[5] != 0)
{
return true;
}
}
return false;
}
И далее я ее вызываю с проверкой на false.
if(check_zeros($csv) == false)
{
$error_string = "Все значения равны нулю";
$error = true;
return;
}
Выходит то, что мне требовалось, если есть значения больше нуля, то все нормально, файл проходит проверку и загружается.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Появилась проблема, вовремя обучения Laravel у меня появилась проблема которую не могу разобрать, прошу посмотреть: `
Есть модели Рецепт и Пост - commentable, и модель Комментарии с полиморфной связьюПодскажите, как в случае полиморфных связей создать фабрику для...