|
|
|
| Здраствуйте.
Есть таблица в базе данных, в которую надо через форму добавить данные( которые в файле csv) . Искала этот вопрос в гугле очень много разных вариантов решения которые меня больше запутали. Можете мне помочь написать скрипт на php, желательно с комментариями. Хочу понять сам процесс скрипта. | |
|
|
|
|
|
|
|
для: Dasha1997
(17.10.2016 в 15:51)
| |
if (isset($_FILES['failed_csv']['tmp_name']) && $_FILES['failed_csv']['tmp_name'] != "") { /// esli vibran file
$filename = $_FILES['failed_csv']['name'];
$filesize = $_FILES['failed_csv']['size'];
$filetype = $_FILES['failed_csv']['type'];
$temp_filename = $_FILES['failed_csv']['tmp_name'];
if(is_uploaded_file($nm=$temp_filename)) {
$counter = 0;
$buffer = file_get_contents($nm);
// delaem massiv iz stroki dannwx
$file_array = explode("\r\n", $buffer);
//nachalo perebora massiva
foreach ($file_array as $line_num => $line) {
//// zagryzka
$sql = "UPDATE `afm_phones` SET failed=1 where `phone` = '".trim($line)."'";
// run SQL
//echo $sql."<br>";
$result = mysqli_query($g_link, $sql) or die(mysqli_error());
$counter++;
}
//exit;
}
}
|
Только здесь у меня простой csv грузится - одна строка, одно поле. Могу поискать и более сложный вариант. | |
|
|
|
|
|
|
|
для: Dasha1997
(17.10.2016 в 15:51)
| | Тут у меня греческий закрался, не обращайте внимания.
$filename = $_FILES["userfile"]["tmp_name"];
$fp = fopen($filename,"r"); //открываем нужный нам файл на чтение в бинарном режиме, если это дело происходит под виндой
$fsize = filesize($filename); //Узнаём размер исходного файла
$cicl = ceil($fsize/256) + 1; //узнаём кол-во циклов (можно и поменьше 512K)
$grammes=0;
for($i = 0; $i < $cicl; $i ++) { //запускаем цикл
if ($i == 0) {
fseek ( $fp, 0 ); //ну на первом цикле переходим естественно в начало файла
} else {
fseek ( $fp, ftell ( $fp ) ); //бегаем по файлу
}
$text = fread ( $fp, 256000 ); //читаем файл по 512кб
///$text = syn_text ( $text ); //тут я синонимизирую текст, вы можете делать с ним что то своё
//echo "<pre>";
//echo $text; exit;
// delaem massiv iz stroki dannwx
$file_array = explode("<br />",nl2br(iconv("windows-1251", "utf-8", $text)));
//echo "<pre>";
//print_r($file_array); exit;
//nachalo perebora massiva so vtoroy stroki
$i=1;
foreach ($file_array as $line_num => $line) {
//razbivaem stroky na polya i formiruem zapros
$line_exp = explode(";", str_replace("\"", "", $line));
$line_exp[1] = addslashes(trim($line_exp[1]));
$line_exp[2] = addslashes(trim($line_exp[2]));
$line_exp[3] = addslashes(trim($line_exp[3]));
$line_exp[4] = addslashes(trim($line_exp[4]));
$line_exp[5] = addslashes(trim($line_exp[5]));
$line_exp[6] = addslashes(trim($line_exp[6]));
//$line_exp[7] = addslashes(trim($line_exp[7]));
$line_exp[7] = addslashes(trim(str_replace(",", ".", str_replace(" €", "",$line_exp[7])))); //// NEO POSO
//echo "<pre>";
//print_r($line_exp);
if (isset($line_exp[6])) $im_liksis = date_to_timestamp_4($line_exp[6]);
if (preg_match( '/AMTRUST.*/', $line_exp[1])) $etairia = "AM TRUST";
else $etairia = $line_exp[1];
$grammes++;
if ($line_exp[7] > 0){ /// ean valane neo poso
//id //onoma //phone //mobile //tk //poli //odos //dimos //pinakida //etairia //symvolaio //date_exp //poso //delete //
$update_query = "UPDATE ".$db_prefix."pelates set
poso ='".str_replace(",", ".", $line_exp[7])."' WHERE
onoma LIKE '".$line_exp[2]."' AND
pinakida LIKE '".$line_exp[4]."' AND
symvolaio LIKE '".$line_exp[5]."' AND
date_exp = '".$im_liksis."' AND
etairia LIKE '%".$etairia."%'";
//echo $update_query.";<br>";
//exit;
$result = mysql_query($update_query) or die(" $update_query <b>failed!</b><br>".mysql_error());
$i++;
}
}
header("Location: clients.php?start=".$_POST["start"]."&end=".$_POST["end"]);
flush ();
if (feof ( $fp ) == true) { //когда достигаем конца файла прекращаем выполнение цикла
break;
}
}
fclose ( $fp ); //закрываем файлы
|
| |
|
|
|
|
|
|
|
для: elenaki
(17.10.2016 в 16:27)
| | Нельзя так производит загрузку файлов и есть fgetcsv(). | |
|
|
|
|
|
|
|
для: confirm
(17.10.2016 в 18:52)
| | а мне нужно по частям, у меня большие файлы. | |
|
|
|
|
|
|
|
для: elenaki
(18.10.2016 в 09:30)
| | Ну это еще не факт что всем так громоздко надо. | |
|
|
|