Torsten_OL Posted March 5, 2018 Share Posted March 5, 2018 osCommerce Online Merchant v2.3.4 Hallo zusammen. Ich (Torsten der Laie) benötige mal wieder etwas Hilfe. Die osCommerce Daten möchte ich in eine Excel-Datei exportieren. Das klappt auch soweit ganz gut - sicherlich gibt es elegantere Lösungen. Nun möchte ich die Daten sortiert ausgeben 1. sortiert nach: categories_id 2. nach: products_name Aber ich weiß nicht wo und wie ich "order by" einbinden muss. Danke für die Hilfe Anbei der Code meiner Datei. <!-- p.products_id, p.products_model, p.products_gesundheit, p.products_gesundheit2 p.products_hoehe, p.products_quantity, p.products_duftst, p.products_weight, p.products_image, p.products_price, p.products_tax_class_id, p.products_date_added, p.products_date_available, p.manufacturers_id pd.products_name, pd.products_registered, pd.products_description, pd.products_bluehsorte, pd.products_bluetenfarbe, pd.products_bluetezeit, pd.products_url, --> <?php require('includes/application_top.php'); require('includes/configure.php'); require('includes/database_tables.php'); require(DIR_WS_INCLUDES . 'template_2_top.php'); $myfile = fopen("excel_daten_file.xls", "w") or die("Unable to open file!"); error_reporting(E_ALL); $db_link = mysqli_connect (DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD, DB_DATABASE); if ( $db_link ) { $TEXT_DATEN_EXPORT_VERBINDUNG ="Verbindung erfolgreich"; // print_r( $db_link); } else { $TEXT_DATEN_EXPORT_VERBINDUNG =("keine Verbindung möglich" . mysqli_error()); } $sql_products = "SELECT * FROM products "; $db_products = mysqli_query( $db_link, $sql_products ); $sql_products_description = "SELECT * FROM products_description "; $db_products_description = mysqli_query( $db_link, $sql_products_description ); if ( ! $db_products ) { $TEXT_DATEN_EXPORT_VERBINDUNG =("Ungültige Abfrage" . mysqli_error()); } ?> <td><table border="0" cellspacing="2" cellpadding="2"> <tr><td class="main"><?php echo $TEXT_DATEN_EXPORT_VERBINDUNG; ?> </td> <td class="pageHeading" align="right"><a href="excel_daten_file.xls" download="excel_daten_file.xls"><?php echo tep_draw_button("Excel-Datei speichern" , 'calculator'); ?></a></td> </tr> </table></td> <?php echo '<table border="1">'; echo "<tr>"; echo "<td>". "pID" . "</td>"; echo "<td>". "mID" . "</td>"; echo "<td>". "Züchter" . "</td>"; echo "<td>". "cID" . "</td>"; echo "<td>". "Sortiment" . "</td>"; echo "<td>". "ID" . "</td>"; echo "<td>". "Liter" . "</td>"; echo "<td>". "Name_EN" . "</td>"; echo "<td>". "Name_DE" . "</td>"; echo "<td>". "image" . "</td>"; echo "<td>". "Beschreibnug_EN" . "</td>"; echo "<td>". "Beschreibung_DE" . "</td>"; echo "<td>". "Höhe" . "</td>"; echo "<td>". "Farbe_EN" . "</td>"; echo "<td>". "Farbe_DE" . "</td>"; echo "<td>". "telefon" . "</td>"; echo "</tr>"; while ($zeile = mysqli_fetch_array( $db_products, MYSQL_ASSOC)) { $zeile_eng = mysqli_fetch_array( $db_products_description, MYSQL_ASSOC); $zeile_deu = mysqli_fetch_array( $db_products_description, MYSQL_ASSOC); $num = $zeile['manufacturers_id']; $sql_manufacturers = "SELECT * FROM manufacturers WHERE manufacturers_id LIKE '$num' "; $db_manufacturers = mysqli_query( $db_link, $sql_manufacturers ); $zeile_man = mysqli_fetch_array( $db_manufacturers, MYSQL_ASSOC); $num = $zeile['products_id']; $sql_products_to_categories = "SELECT * FROM products_to_categories WHERE products_id LIKE '$num' "; $db_products_to_categories = mysqli_query( $db_link, $sql_products_to_categories ); $zeile_cat = mysqli_fetch_array( $db_products_to_categories, MYSQL_ASSOC); $num = $zeile_cat['categories_id']; $sql_categories_description = "SELECT * FROM categories_description WHERE categories_id LIKE '$num' "; $db_categories_description = mysqli_query( $db_link, $sql_categories_description ); $zeile_cat_desc = mysqli_fetch_array( $db_categories_description, MYSQL_ASSOC); // Bildschirmausgabe echo "<tr>"; echo "<td>". $zeile['products_id'] . "</td>"; echo "<td>". $zeile['manufacturers_id'] . "</td>"; echo "<td>". $zeile_man['manufacturers_name'] . "</td>"; echo "<td>". $zeile_cat['categories_id'] . "</td>"; echo "<td>". $zeile_cat_desc['categories_name'] . "</td>"; echo "<td>". $zeile['products_model'] . "</td>"; echo "<td>". $zeile['products_weight'] . "</td>"; echo "<td>". $zeile_eng['products_name'] . "</td>"; echo "<td>". $zeile_deu['products_name'] . "</td>"; echo "<td>". $zeile['products_image'] . "</td>"; echo "<td>". $zeile_eng['products_description'] . "</td>"; echo "<td>". $zeile_deu['products_description'] . "</td>"; echo "<td>". $zeile['products_hoehe'] . "</td>"; echo "<td>". $zeile_eng['products_bluetenfarbe'] . "</td>"; echo "<td>". $zeile_deu['products_bluetenfarbe'] . "</td>"; echo "<td>". $zeile['telefon'] . "</td>"; echo "</tr>"; // Exceldaten zusammen stellen - leider noch unsortiert $xls = $zeile_cat['categories_id'] . "\t". $zeile_deu['products_name']. "\t". $zeile_cat_desc['categories_name']. "\t". $zeile_man['manufacturers_name'] ."\n" ; // Exceldaten in Datei schreiben fwrite($myfile, $xls); } fclose($myfile); echo "</table>"; mysqli_free_result( $db_products ); ?> <a href="excel_daten_file.xls" download="excel_daten_file.xls"><?php echo tep_draw_button("Excel-Datei speichern" , 'calculator'); ?></a> <?php require(DIR_WS_INCLUDES . 'template_bottom.php'); require(DIR_WS_INCLUDES . 'application_bottom.php'); ?> Link to comment Share on other sites More sharing options...
Guest Posted March 6, 2018 Share Posted March 6, 2018 (edited) Dies $num = $zeile['manufacturers_id']; $sql_manufacturers = "SELECT * FROM manufacturers WHERE manufacturers_id LIKE '$num' "; $db_manufacturers = mysqli_query( $db_link, $sql_manufacturers ); $zeile_man = mysqli_fetch_array( $db_manufacturers, MYSQL_ASSOC); ändern zu: $manufacturers_query = tep_db_query("select * from manufacturers where manufacturers_id like '%".$zeile['manufacturers_id']."%' order by categories_id, products_name "); $manufacturers = tep_db_fetch_array($manufacturers_query); Die weiteren Abfragen entsprechend ändern. Du solltest die Funktionen von osCommerce verwenden, bei späteren Änderungen muss nur dort geändert werden. Die ORDER BY clausel ist für die Sortierung bei MySQL zuständig. In meiner empfohlene Änderung wird zuerst nach categories_id und dann nach products_name sortiert. Dies hilft auch: https://dev.mysql.com/doc/refman/5.7/en/order-by-optimization.html Für Excel gibt es übrigends eine mächtige Class Datei, die vieles vereinfacht, hier: https://github.com/PHPOffice/PhpSpreadsheet Edited March 6, 2018 by oscspezialist Link to comment Share on other sites More sharing options...
Torsten_OL Posted March 7, 2018 Author Share Posted March 7, 2018 (edited) Danke für die schnelle Antwort Aber irgendwie haben wir uns da wohl falsch verstanden oder ich habe das falsch umgesetzt. Ich möchte das meine Artikel aus der Datenbank sortiert aufgeführt werden. Sortierung nach categories_id was ja gleichbedeutend mit categories_name wäre. Anschließend den products_name sortiert. Alles weitere aus der Datenbank ist erst einmal nicht so wichtig. categories_id - - - categories_name - - - products_name 22 Beetrosen Alabaster 22 Beetrosen Amber 22 Beetrosen Nina 22 Beetrosen Shanty 23 Bodendecker AAAA 23 Bodendecker BBBB 23 Bodendecker CCCC 24 Edelrose AAAA 24 Edelrose BBBB 24 Edelrose CCCC 25 Englische Rose AAAA 25 Englische Rose BBBB usw. Mit diesen Zeilen verbinde ich lediglich den Artikel mit den dazu gehörenden manufacturers, products_to_categories und categories_description. Wie schon gesagt ich bin ziemlicher Laie und einigermaßen Froh darüber, dass ich überhaupt Daten aus der Datenbank in eine Excel-Datei bekomme. Für eine weitere Hilfe wäre ich schon dankbar, Torsten Edited March 7, 2018 by Torsten_OL Link to comment Share on other sites More sharing options...
Guest Posted March 7, 2018 Share Posted March 7, 2018 Wenn die Daten nach der categories_id sortiert werden, ist das nicht gleich bedeutend mit categories_name. Beispiel:categories_id = 1, categories_name = bbbbbcategories_id = 2, categories_name = aaaaa Wenn Du nach categories_id sortierst kommt 'bbbbb' als erstes. Link to comment Share on other sites More sharing options...
Torsten_OL Posted March 7, 2018 Author Share Posted March 7, 2018 Ja - OK - Da categories_id und categories_name miteinander verknüpft sind, lasse ich den categories_name aus vor. Aber wie bekomme ich dann in meinen Code die Sortierung: erstens nach categories_id und zweitens nach products_name ? Baue ich nun diesen Code ein: $manufacturers_query = tep_db_query("select * from manufacturers where manufacturers_id like '%".$zeile['manufacturers_id']."%' order by categories_id, products_name "); $manufacturers = tep_db_fetch_array($manufacturers_query); bekomme ich folgende Meldung1054 - Unknown column 'categories_id' in 'order clause' select * from manufacturers where manufacturers_id like '%11%' order by categories_id, products_name - auch verstehe ich nicht warum manufacturers mit dabei ist. Link to comment Share on other sites More sharing options...
Guest Posted March 7, 2018 Share Posted March 7, 2018 (edited) vor 9 Minuten, Torsten_OL said: Ja - OK - Da categories_id und categories_name miteinander verknüpft sind, lasse ich den categories_name aus vor. Aber wie bekomme ich dann in meinen Code die Sortierung: erstens nach categories_id und zweitens nach products_name ? Baue ich nun diesen Code ein: $manufacturers_query = tep_db_query("select * from manufacturers where manufacturers_id like '%".$zeile['manufacturers_id']."%' order by categories_id, products_name "); $manufacturers = tep_db_fetch_array($manufacturers_query); bekomme ich folgende Meldung1054 - Unknown column 'categories_id' in 'order clause' select * from manufacturers where manufacturers_id like '%11%' order by categories_id, products_name - auch verstehe ich nicht warum manufacturers mit dabei ist. War auch mehr als Anregung gedacht den Code entsprechend zu ändern. Sende mir mal Deine Datei per E-Mail. Schaue in Deine PM, da steht wie. Danke! Edited March 7, 2018 by oscspezialist Link to comment Share on other sites More sharing options...
Recommended Posts