За последние 24 часа нас посетили 22043 программиста и 987 роботов. Сейчас ищут 664 программиста ...

Экспорт товара в CSV

Тема в разделе "PHP для новичков", создана пользователем MR.TOR, 26 мар 2012.

  1. MR.TOR

    MR.TOR Активный пользователь

    С нами с:
    26 мар 2012
    Сообщения:
    3
    Симпатии:
    0
    Привет всем. Нужно экспортировать в файл export_price.csv все содержимое базы, но с такой последовательностью:
    Название категории;ID товара;Название товара;Атрибут;Цена;Опубликовано или нет (Y/N)
    потом новая строка с новым товаром в такой же последовательности
    Сейчас в файл export_price.csv пишется только одна строчка.
    Немогу понять почему...

    Прошу подсказать в чем может быть проблема.
    Заранее благодарен


    <?php
    // подключение файлов соединения с базой
    .....
    .....
    $handle = fopen("export_price.csv", "w+");


    $mysql_query_category = mysql_query("SELECT category_id, category_name FROM jos_vm_category");
    while($array_query_category = mysql_fetch_array($mysql_query_category))
    {
    $category_id = $array_query_category['category_id'];
    $category_name = htmlspecialchars( $array_query_category['category_name'] );

    $category_id_massiv[] = $array_query_category['category_id'];
    }

    foreach ($category_id_massiv as $category_id)
    {
    $mysql_query_product = mysql_query("SELECT
    jos_vm_product_category_xref.product_id,
    jos_vm_product.product_id,
    product_name,
    product_publish,
    attribute,
    product_s_desc,
    product_discount_id
    FROM jos_vm_product, jos_vm_product_category_xref
    WHERE jos_vm_product_category_xref.product_id=jos_vm_product.product_id
    AND jos_vm_product_category_xref.category_id='$category_id' " );

    while ($array_query_product = mysql_fetch_array($mysql_query_product))
    {
    $product_id = $array_query_product['product_id'];
    $product_name = htmlspecialchars($array_query_product['product_name']);

    $product_attribute = $array_query_product['attribute'];
    $product_attribute = explode(',', $product_attribute);
    $product_attribute = explode('[', $product_attribute[1]);
    $product_attribute = $product_attribute[0];

    $product_publish = htmlspecialchars( $array_query_product['product_publish'] );

    $mysql_query_price = mysql_query ("SELECT product_price FROM jos_vm_product_price WHERE product_id='$product_id'");
    $array_query_price = mysql_fetch_array($mysql_query_price);

    $text = $category_name.";".$product_id.";".$product_name.";".$product_attribute.";".ceil ($array_query_price['product_price']).";".$product_publish;

    }

    }

    $fwrite_pro = fwrite($handle, $text);
    fclose ($handle);

    if ($fwrite_pro)
    echo "Товары записаны в CSV";
    else echo "Произошла ошибка";

    ?>
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Ошибка здесь

    Код (Text):
    1. $text = $category_name.";".$product_id.";".$product_name.";".$product_attribute.";".ceil ($array_query_price['product_price']).";".$product_publish;
    исправь на

    Код (Text):
    1. $text .= $category_name.";".$product_id.";".$product_name.";".$product_attribute.";".ceil ($array_query_price['product_price']).";".$product_publish;
     
  3. MR.TOR

    MR.TOR Активный пользователь

    С нами с:
    26 мар 2012
    Сообщения:
    3
    Симпатии:
    0
    smitt, спасибо огромное. Если не тяжело можешь объяснить почему в $category_name пишет только последнее название категории??? И как отсортировать по наименованию товара??? чтобы не приходилось выбирать строки.
    Заранее благодарен.
     
  4. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Ты в цикле записываешь в переменную, и в итоге в этой переменной остается последнее название категории.

    Если использовать конструкцию которую я показал то данные не будут перезаписываться, а будут дополняться.

    Для сортировки используй SELECT product_price FROM jos_vm_product_price WHERE product_id='$product_id' ORDER BY [название поля]
     
  5. MR.TOR

    MR.TOR Активный пользователь

    С нами с:
    26 мар 2012
    Сообщения:
    3
    Симпатии:
    0
    Спасибо за ответ. Но не совсем понял...
    еще раз можешь повторить, не совсем понял какая конструкция???
    У меня
    Код (Text):
    1. $category_name = htmlspecialchars( $array_query_category['category_name'] );
    перезаписывается наименование категории, это понятно, как сделать чтобы дополнялось???
    и записывалось в
    Код (Text):
    1. $text .= $category_name.";".$product_id.";".$product_name.";".$product_attribute.";".ceil ($array_query_price['product_price']).";".$product_publish;