[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ругаеться на синтаксис
skyinfo
В общем наваял скрипт из .xls выдерает построчно значения и забивает в базу + выводит (отчет- о то что обновлено, что вновь добавленнно).

и начинает ругаться когда, одна из выдергиваемых ячеек -пустая.

вот кусок вывода:
<tr style="color: green">
<td>
23342</td>
<td>
FORCE Головка торц.3/4" 12-гран. 30мм (2)</td>
<td><b>
9148</b></td>
<td>
163.8</td>
<td>
1</td>
</tr>
<tr
style="color: green">
<td>
23343</td>
<td>
FORCE Головка торц.3/4" 12-гран. 36мм (2)</td>
<td><b>
139</b></td>
<td>
175.95</td>
<td>
1</td>
</tr>

You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near ' 5)' at line 1



кусок скрипта

//Цикл
//

for ($i = 1; $i <= $data->sheets[1]['numRows']; $i++) {
if($data->sheets[1]['cells'][$i][9] != ""){
if($cur_i == 0)

{$cur_i++;}

else
{
//Достаем из базы SKU
$sql = "SELECT * FROM av_product WHERE sku = '".$data->sheets[1]['cells'][$i][2]."'";
$cur_product_query = mysql_query($sql) or die('Query failed: ' . mysql_error());
$cur_product = mysql_fetch_array($cur_product_query);

//Условие определяем является ли числом поле кол-во
if(!is_numeric(trim($data->sheets[1]['cells'][$i][9])))
//Да
{$product_count = 5;}
else
//Нет
{$product_count = $data->sheets[1]['cells'][$i][9];}

//Если есть совпадения по SKU
if
($cur_product['sku'] != ""){

//Торговая наценка
$cena1 = 1.30; //До 100р. = 30%
$cena2 = 1.15; //До 1000р. = 15%
$cena3 = 1.08; //Всё остальное = 8%

//Потолок цен

$potolok = 100;
$potolok1 = 500;
$potolok2 = 1000;
$potolok3 = 3000;

//Логика цен
if ($price <= $potolok) {
$roznica=$cena1;
}
elseif ($price <= $potolok2) {
$roznica=$cena2;
}
else {
$roznica=$cena3;
}

//Заносим
$price = $data->sheets[1]['cells'][$i][8];

//Умножаем на коэффициент
$price1 = $price*$roznica;

//Если есть такой товар, то обновляем цену и кол-во.

$sql = "UPDATE av_product SET sku = '".$data->sheets[1]['cells'][$i][2]."',
price = "
.$price1.",
quantity = "
.$product_count ."
WHERE sku = '"
.$data->sheets[1]['cells'][$i][2]."',
price = "
.$price1.",
quantity = "
.$product_count ."";
mysql_query($sql) or die(mysql_error());
echo '<tr style="color: green">';
echo '<td>'.$data->sheets[1]['cells'][$i][1].'</td>';
echo '<td>'.$data->sheets[1]['cells'][$i][5].'</td>';
echo '<td><b>'.$data->sheets[1]['cells'][$i][2].'</b></td>';
echo '<td>'.$price1.'</td>';
echo '<td>'.$data->sheets[1]['cells'][$i][9].'</td>';

echo '</tr>';

помогите решить с синтаксисом проблему или хотябы подскажите куда смотреть.
ЗЫ. если кому нужна будет реализация покажу.



Спустя 10 минут, 53 секунды (24.07.2012 - 17:47) Winston написал(а):
$sql = "SELECT * FROM av_product WHERE sku = '".mysql_real_escape_string($data->sheets[1]['cells'][$i][2])."'";


И при UPDATE используй mysql_real_escape_string для обработки переменных.

Спустя 4 часа, 8 минут, 33 секунды (24.07.2012 - 21:55) skyinfo написал(а):
Что-то не как не хочет huh.gif с пустыми строчками работать, может условие какое прописать? Или экран какой навесить.

Вот кстати поле в которое бьётся.
Скрытый текст
user posted image

Спустя 1 день, 21 час, 30 минут, 45 секунд (26.07.2012 - 19:26) skyinfo написал(а):
Спасибо ребята, иногда просто не видишь ошибку под ногами, а дело то было всего лишь в кавычка которые надо было поставить)))))
Не правильный вариант был-
 price = ".$price1.",
quantity = ".$product_count ."

Правильный -
 price = '".$price1."',
quantity = '".$product_count ."'



НА будущее... может кому пригодиться, почитайте на досуге.

http://code.google.com/p/php-excel-reader/wiki/Documentation
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.