< <From csv to array to database issue: not loading entire fail or failing

91
9

Мне нужна помощь здесь... то, что я пытаюсь сделать, это прочитать файл csv (который уже преобразован из xls), затем получить все строки и поместить каждое поле строки в db

name,lastname,idprod
name,lastname,idprod
name,lastname,idprod

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

$row["productid"]." - ". $productid.""; начинает выдавать пустое значение

here -

для остальных линий

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

<?php
$rowe = 0;
$exploded;
$data;
$ass = 0;
$hardcore[0][0];
$swag = 0;
if (($handle = fopen("price_list_EN.csv", "r")) !== FALSE) {
$ass = 0;
$swag++;
while (($linebyline = fgetcsv($handle, 1000, ",")) !== FALSE) {

//$linebyline = explode(",", $linebyline);

$hardcore[$rowe][$ass] = $linebyline[$ass];
//echo $linebyline[$ass];
$exploded[$rowe][$ass] = $hardcore[$rowe][$ass];
//echo $exploded[$rowe][$ass];

//while (($explode = fgetcsv($linebyline, 1000, ",")) !== FALSE)
{
$num = count($data);
if ($ass == count($linebyline)){
echo "<br>";
$ass = 0;
$rowe++;
}else{
$ass++;
}
}
//}
fclose($handle);
}
//$linebyline = explode("\n", $_POST['message']);
//$linebyline = explode("\n", $data2);
//echo count($data2);
$imo=0;
$normovalue=0;
$normovalue2=0;
$normovalue3=0;
for ($i=0;$i<30000;$i++){
if ($exploded[$i][0] == ''){
$imo = $i;
}
}

for ($rowe=0;$rowe<$imo;$rowe++){
for ($ass=0;$ass<9;$ass++){
//$exploded = explode(";", $linebyline[$i]);
$link = mysql_connect('localhost', 'root', '');
if (!$link) {
die('Not connected : ' . mysql_error());
}

// make foo the current db
$db_selected = mysql_select_db('moday', $link);
if (!$db_selected) {
die ('Can\'t use foo : ' . mysql_error());
}
}
if ($exploded[$rowe][0] !== "" || $exploded[$rowe][4] !== "" ||
$exploded[$rowe][3] !== "" || $exploded[$rowe][1] !== ""){
$productid = $exploded[$rowe][0];
$price = round($exploded[$rowe][4],2);
$disponibilita = $exploded[$rowe][3];
$indir = "null";
$descrizione = $exploded[$rowe][1];

$conn = new mysqli("localhost", "root", "", "moday");

$sql = "SELECT productid from data where productid='$productid'";
$result = $conn->query($sql);

if ($result->num_rows == 0) {
mysql_query("INSERT INTO
data(productid,price,disponibilita,indir,descrizione)
values('$productid','$price','$disponibilita','$indir','$descrizione')")
or die("Query non valida: " . mysql_error());
$normovalue++;
}else{

// output data of each row
while($row = $result->fetch_assoc()) {
if ($row["productid"] == $productid){
echo "here ". $row["productid"] ." - ". $productid ."";
if ("$exploded[$rowe][0] == '' || $exploded[$rowe][1] ==
'' || $exploded[$rowe][3] == '' || $exploded[$rowe][4] == '' ||
$exploded[$rowe][2] == ''|| $exploded[$rowe][5] hh "){
echo $exploded[$rowe][0];
echo $rowe;

}
echo "<br /> \n";
$sql2 = "UPDATE data SET price='$price',
disponibilita='$disponibilita' where productid='$productid'";
$normovalue2++;
$result2 = $conn->query($sql2);

}else{
}
}
}

/*$risultato = mysql_query("INSERT INTO
data(productid,price,disponibilita,indir,descrizione)
values('$productid','$price','$disponibilita','$indir','$descrizione')")
or die("Query non valida: " . mysql_error());
*/
//echo "<br /> \n"
}
}
$normovalue3 = $normovalue + $normovalue2;
echo "N.1 is $normovalue 2 is $normovalue2 3 is $normovalue3";
?>

спросил(а) 2017-11-16T23:23:00+03:00 2 года, 11 месяцев назад
1
Решение
90

Положите $result в базу данных, как вы пожелаете:

<?php
$csv = "Chris,Garcia,1\nJohn,Doe,2\nJames,Smith,3";

foreach(explode("\n", $csv) as $key => $value) {
$result = explode(",", $value);

echo "Name: " . $result[0] . ", Lastname: " . $result[1] . ", ID: " . $result[2] . "\n";
}

exit();
?>

ответил(а) 2017-11-16T23:43:00+03:00 2 года, 11 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема