|
|
|
|
<?
if (isset($_GET['id'])) {$id = $_GET['id'];}
if (isset($_POST['import'])) {$import = $_POST['import'];}
if (isset($_POST['id'])) {$id = $_POST['id'];}
if (isset ($import))
{
$data = File("admin/csv.csv");
for ($i=0;$i<count($data);$i++)
{
$data_array = explode(";", $data[$i]);
$query = "UPDATE table SET title='".mysql_real_escape_string($title)."',
articul='".mysql_real_escape_string($articul)."',
korpus='".mysql_real_escape_string($korpus)."',
glass='".mysql_real_escape_string($glass)."',
sex='".mysql_real_escape_string($sex)."',
color='".mysql_real_escape_string($color)."',
wr='".mysql_real_escape_string($wr)."',
diameter='".mysql_real_escape_string($diameter)."',
bracelet='".mysql_real_escape_string($bracelet)."',
id_category='".mysql_real_escape_string($id_category)."',
name_category='".mysql_real_escape_string($name_category)."',
id_brand='".mysql_real_escape_string($id_brand)."',
opisanie='".mysql_real_escape_string($opisanie)."',
name_brand='".mysql_real_escape_string($name_brand)."',
dop='".mysql_real_escape_string($dop)."',
price='".mysql_real_escape_string($price)."',
des='".mysql_real_escape_string($des)."',
description='".mysql_real_escape_string($description)."',
opisanie='".mysql_real_escape_string($opisanie)."',
yamarket='".mysql_real_escape_string($yamarket)."',
id_podcat='".mysql_real_escape_string($id_podcat)."',
name_podcat='".mysql_real_escape_string($name_podcat)."',
spec='".mysql_real_escape_string($spec)."' WHERE id='".mysql_real_escape_string($id)."'";
$result = mysql_query( $query);
echo "Успешно";
}
}
else
{
echo '<form action="importer.php" method="post" name="form">
Обновить? <input name="import" type="submit" value="да" />
</form>';
}
?>
|
| |
|
|
|
|
|
|
|
для: scva
(19.04.2010 в 13:30)
| | А что со скриптом не так? Он не работает, работает неправильно? | |
|
|
|
|
|
|
|
для: cheops
(19.04.2010 в 14:35)
| | тупо не обновляет | |
|
|
|
|
|
|
|
для: scva
(19.04.2010 в 13:30)
| | У вас в WHERE-условии используется $id, т.е. в цикле много раз обновляется одна строка. И вообще не понятно откуда берутся переменые вроде $title, $articcul и т.п. В место них вероятно нужно подставить элементы массива $data_array? | |
|
|
|
|
|
|
|
для: cheops
(19.04.2010 в 14:41)
| | так?
articul='.$data_array[1]'
|
включил ошибки
ругается на
]$data = File("admin/csv.csv");[/code
[code]Warning: file(admin/csv.csv) [function.file]: failed to open stream: No such file or directory in
|
| |
|
|
|
|
|
|
|
для: scva
(19.04.2010 в 14:43)
| | >articul='.$data_array[1]'
Вероятно да, только нужно учитывать, что нумерация в массивах начинается с 0
>включил ошибки
>ругается на
Скрипт не может найти файл csv.csv - он где у вас лежит относительно папки admin? | |
|
|
|
|
|
|
|
для: cheops
(19.04.2010 в 15:27)
| | >>articul='.$data_array[1]'
>Вероятно да, только нужно учитывать, что нумерация в массивах начинается с 0
>
>>включил ошибки
>>ругается на
>Скрипт не может найти файл csv.csv - он где у вас лежит относительно папки admin?
C этим разобрался
Сделал массивом начал обновлять но при обновлении стер всю базу и оставил тольку одну запись которая в ксв файле вот скрипт
<?
if (isset($_GET['id'])) {$id = $_GET['id'];}
if (isset($_POST['import'])) {$import = $_POST['import'];}
if (isset($_POST['id'])) {$id = $_POST['id'];}
if (isset ($import))
{
$data = File("admin/1.csv");
for ($i=0;$i<count($data);$i++)
{
$data_array = explode(";", $data[$i]);
unset ($data_array[0]);
$query = "UPDATE tovar SET title='$data_array[1]',
articul='$data_array[2]',
korpus='$data_array[3]',
glass='$data_array[4]',
sex='$data_array[5]',
color='$data_array[6]',
wr='$data_array[7]',
diameter='$data_array[8]',
bracelet='$data_array[9]',
id_category='$data_array[10]',
name_category='$data_array[11]',
id_brand='$data_array[12]',
opisanie='$data_array[13]',
name_brand='$data_array[14]',
dop='$data_array[15]',
price='$data_array[16]',
des='$data_array[17]',
description='$data_array[18]',
opisanie='$data_array[19]',
yamarket='$data_array[20]',
id_podcat='$data_array[21]',
name_podcat='$data_array[22]',
spec='$data_array[23]'" or die("error");
$result = mysql_query( $query);
echo "Успешно";
}
}
else
{
echo '<form action="importer.php" method="post" name="form">
Обновить? <input name="import" type="submit" value="да" />
</form>';
}
?>
|
| |
|
|
|
|
|
|
|
для: scva
(19.04.2010 в 15:30)
| | > unset ($data_array[0]);
Так изощренно еще никто не расправлялся с вопросом индексации массивов с нуля =))
А в базе у вас ничего не удалилось. Все просто обновилось - как вы сказали, так и сделали. Ведь условия WHERE нет. | |
|
|
|
|
|
|
|
для: neadekvat
(19.04.2010 в 15:45)
| | то есть убрать unset ($data_array[0]);)
а WHERE какое условие? where id='.$data_array['id']
чтобы обновлялось по id и не удаляло другие строки | |
|
|
|
|
|
|
|
для: scva
(19.04.2010 в 15:48)
| | Нет, то есть разобраться, какие данные под каким индексом у вас хранятся. Почему так нулевой индекс боитесь? о.О
А id - он должен быть в csv файле, я так понимаю.
И вот сюда посмотрите, на функцию fgetcsv | |
|
|
|
|
|
|
|
для: neadekvat
(19.04.2010 в 15:50)
| | сможеш набросать?
в csv файле 23 столбца по дномером 1 находится id | |
|
|
|
|
|
|
|
для: scva
(19.04.2010 в 16:40)
| | Чтобы посмотреть стуктуру массива, выведите его дамп
<?php
echo "<pre>";
print_r($data_array);
echo "</pre>";
?>
|
В большинстве языков программирования, нумерация в индексных массивах начинается с нуля. | |
|
|
|
|
|
|
|
для: cheops
(19.04.2010 в 17:16)
| | выводит пустой массив
Array
(
) | |
|
|
|
|
|
|
|
для: scva
(19.04.2010 в 17:34)
| | Значит в нём ничего нет и нужно сначала решить проблему с тем, почему в него не попадают данные из файла csv.csv? Вы проверку дампа массива внутри цикла производите? | |
|
|
|
|
|
|
|
для: cheops
(19.04.2010 в 17:53)
| | да.
получается что он не может прочитать csv | |
|
|
|
|
|
|
|
для: scva
(19.04.2010 в 17:59)
| | Выведите дамп массива $data - он содрежит какие-нибудь данные? | |
|
|
|
|
|
|
|
для: cheops
(19.04.2010 в 18:58)
| | пусто | |
|
|
|
|
|
|
|
для: scva
(20.04.2010 в 12:49)
| | А файл admin/1.csv что-нибудь содержит? | |
|
|
|
|
|
|
|
для: cheops
(20.04.2010 в 14:09)
| |
587;Defy Classic Aero;
Механический хронометр с автоподзаводом;
Мужские;
Нержавеющая сталь;белый;ремень;
Сапфировое стекло;WR 300;43;
Корпус и браслет из нержавеющей стали
;;1;Новые;2;Каталог часов;
Defy Classic Aero;13;Zenith;03.0516.4000_01.R642;;y;n
|
во пример одной строки | |
|
|
|
|
|
|
|
для: scva
(20.04.2010 в 15:20)
| | А почему у вас функция file() его не видит? У вас где находится скрипт разбора? В той же директории, где находится папка admin? | |
|
|
|
|
|
|
|
для: cheops
(20.04.2010 в 16:20)
| | естественно, пробывал и абсолютный ставит, все равно никаких изменений | |
|
|
|
|
|
|
|
для: scva
(22.04.2010 в 11:11)
| | Для начала стоит поставить error_reporting(E_ALL); в начало скрипта.
>естественно, пробывал и абсолютный ставит, все равно никаких изменений
Это лишь означает, что и с абсолютным путем Вы ошиблись. | |
|
|
|
|
|
|
|
для: Trianon
(22.04.2010 в 11:51)
| | разобрался в чем было дело
выводит результат
Array
(
[0] => 587
[1] => Defy Classic Aero
[2] => Механический хронометр с автоподзаводом
[3] => Мужские
[4] => Нержавеющая сталь
[5] => белый
[6] => ремень
[7] => Сапфировое стекло
[8] => WR 300
[9] => 43
[10] => Корпус и браслет из нержавеющей стали, механизм El Primero 4000SC
[11] =>
[12] => 1
[13] => Новые
[14] => 2
[15] => Каталог часов
[16] => Defy Classic Aero
[17] => 13
[18] => Zenith
[19] => 03.0516.4000_01.R642
[20] =>
[21] => y
[22] => n
)
успешно
|
но ничего не обновляется, вот обработчик
<?
$data = file("../admin/1.csv");
for ($i=0;$i<count($data);$i++)
{
$data_array = explode(";", $data[$i]);
//unset ($data_array[0]);
$query = "UPDATE `tovar` SET
'$data_array[0]',
'$data_array[1]',
'$data_array[2]',
'$data_array[3]',
'$data_array[4]',
'$data_array[5]',
'$data_array[6]',
'$data_array[7]',
'$data_array[8]',
'$data_array[9]',
'$data_array[10]',
'$data_array[11]',
'$data_array[12]',
'$data_array[13]',
'$data_array[14]',
'$data_array[15]',
'$data_array[16]',
'$data_array[17]',
'$data_array[18]',
'$data_array[19]',
'$data_array[20]',
'$data_array[21]',
'$data_array[22]' WHERE id='$data_array[0]'" or print 'Ошибка работы с БД: '.mysql_error();
$result = mysql_query($query);
echo "<pre>";
print_r ($data_array);
echo "</pre>";
echo "успешно";
?>
|
| |
|
|
|
|
|
|
|
для: scva
(22.04.2010 в 18:18)
| | Впрос снят, проблему решил | |
|
|
|
|
|
|
|
для: scva
(23.04.2010 в 11:01)
| | Имеет смысл написать, в чем же состояла неприятность. | |
|
|
|
|
|
|
|
для: scva
(23.04.2010 в 11:01)
| | Надо было элементы массива присваивать полям
id='$data_array[0]',
title='$data_array[1]',
des='$data_array[2]',
................
|
и еще прикол в том что, в такой конструкции
$query = "UPDATE `tovar` SET "
id= '$data_array[0]', " or print 'Ошибка работы с БД: '.mysql_error();
$result = mysql_query($query);
|
скрипт не работал
а вот сделав так
$query = mysql_query("UPDATE `tovar` SET
id= '$data_array[0]', ").........
|
все заработало | |
|
|
|
|
|
|
|
для: scva
(19.04.2010 в 15:48)
| | У вас же индексный массив, откуда в нём возьмется элемент с ассоциативным ключом 'id'? Выведите дамп массива, чтобы было проще ориентироваться, под каким номером, что находится. | |
|
|
|