Привет всем. Нужно экспортировать в файл 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 "Произошла ошибка"; ?>
Ошибка здесь Код (Text): $text = $category_name.";".$product_id.";".$product_name.";".$product_attribute.";".ceil ($array_query_price['product_price']).";".$product_publish; исправь на Код (Text): $text .= $category_name.";".$product_id.";".$product_name.";".$product_attribute.";".ceil ($array_query_price['product_price']).";".$product_publish;
smitt, спасибо огромное. Если не тяжело можешь объяснить почему в $category_name пишет только последнее название категории??? И как отсортировать по наименованию товара??? чтобы не приходилось выбирать строки. Заранее благодарен.
Ты в цикле записываешь в переменную, и в итоге в этой переменной остается последнее название категории. Если использовать конструкцию которую я показал то данные не будут перезаписываться, а будут дополняться. Для сортировки используй SELECT product_price FROM jos_vm_product_price WHERE product_id='$product_id' ORDER BY [название поля]
Спасибо за ответ. Но не совсем понял... еще раз можешь повторить, не совсем понял какая конструкция??? У меня Код (Text): $category_name = htmlspecialchars( $array_query_category['category_name'] ); перезаписывается наименование категории, это понятно, как сделать чтобы дополнялось??? и записывалось в Код (Text): $text .= $category_name.";".$product_id.";".$product_name.";".$product_attribute.";".ceil ($array_query_price['product_price']).";".$product_publish;