Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP/MYSQL] Wyświetlanie informacji z tabel
Forum PHP.pl > Forum > PHP
Micchaleq
Zainstalowałem sobie sklep.

Dodając produkty ustalam ich : nazwę, cene, firmę, wagę i inne.
Te wszystkie parametry produktu zapisywane są w w tablicach w mysql.

Teraz rozjaśniłem sobie trochę umysł na temat tego i napisze o co chodzi.

Konkretnie to mam w mysql 2 dla nas wazne tabele
1. products
2. manufacturers

ogólnie poprzedni kod korzysta z products oraz tam jeszcze jednego ( mniej istotnego dla mnie )

W tabeli products przechowywana jest jedna ważna informacja mianowicie manufacturers_id ( to odpowiada za producenta )
natomiast w tabeli manufacturers do id przypisana jest nazwa w komórce :manufacturers_name

Moim zdaniem istnieją 2 możliwości do wyjścia z tego cało
1. skopiować manufacturers_name do tabeli products ( ale nie wiem czy tak się da ) i dla mnie to by rozwiązało problem bo zrobił bym tylko $product_info['manufacturers_name']

2. odczytać zawartośc id produktu a nastepnie odczytać jaka jest nazwa dla id ( kompletnie nie wiem jak to zrobic )

Oto kawałek kodu gdzie wyświetlana jest nazwa producenta
  1. <?php
  2. $products_new_array = array();
  3.  
  4. $products_new_query_raw = "select p.products_id, pd.products_name, p.products_image, p.products_price, p.products_tax_class_id, p.products_date_added, m.manufacturers_name from " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on (p.manufacturers_id = m.manufacturers_id), " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by p.products_date_added DESC, pd.products_name";
  5. $products_new_split = new splitPageResults($products_new_query_raw, MAX_DISPLAY_PRODUCTS_NEW);
  6.  
  7. if (($products_new_split->number_of_rows > 0) && ((PREV_NEXT_BAR_LOCATION == '1') || (PREV_NEXT_BAR_LOCATION == '3'))) {
  8. ?>
  9. <tr>
  10. <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
  11. <tr>
  12. <td class="smallText"><?php echo $products_new_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS_NEW); ?></td>
  13. <td align="right" class="smallText"><?php echo TEXT_RESULT_PAGE . ' ' . $products_new_split->display_links(MAX_DISPLAY_PAGE_LINKS, tep_get_all_get_params(array('page', 'info', 'x', 'y'))); ?></td>
  14. </tr>
  15. </table></td>
  16. </tr>
  17. <tr>
  18. <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
  19. </tr>
  20. <?php
  21. }
  22. ?>
  23. <tr>
  24. <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
  25. <?php
  26. if ($products_new_split->number_of_rows > 0) {
  27. $products_new_query = tep_db_query($products_new_split->sql_query);
  28. while ($products_new = tep_db_fetch_array($products_new_query)) {
  29. if ($new_price = tep_get_products_special_price($products_new['products_id'])) {
  30. $products_price = '<s>' . $currencies->display_price($products_new['products_price'], tep_get_tax_rate($products_new['products_tax_class_id'])) . '</s> <span class="productSpecialPrice">' . $currencies->display_price($new_price, tep_get_tax_rate($products_new['products_tax_class_id'])) . '</span>';
  31. } else {
  32. $products_price = $currencies->display_price($products_new['products_price'], tep_get_tax_rate($products_new['products_tax_class_id']));
  33. }
  34. ?>
  35. <tr>
  36. <td width="<?php echo SMALL_IMAGE_WIDTH + 10; ?>" valign="top" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products_new['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $products_new['products_image'], $products_new['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a>'; ?></td>
  37. <td valign="top" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products_new['products_id']) . '"><b><u>' . $products_new['products_name'] . '</u></b></a><br>' . TEXT_DATE_ADDED . ' ' . tep_date_long($products_new['products_date_added']) . '<br>' . TEXT_MANUFACTURER . ' ' . [B]$products_new['manufacturers_name'][/B] . '<br><br>' . TEXT_PRICE . ' ' . $products_price; ?></td>
  38. <td align="right" valign="middle" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_NEW, tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $products_new['products_id']) . '">' . tep_image_button('button_in_cart.gif', IMAGE_BUTTON_IN_CART) . '</a>'; ?></td>
  39. </tr>
  40. <tr>
  41. <td colspan="3"><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
  42. </tr>


A TO TUTAJ WYSWIETLA MI TO :
  1. $products_new['manufacturers_name']


Czy da się napisać prostu jakis skrypt do wyświetlenia tego ?

Próbowałem tak :
  1. $manufacturers_info_query = tep_db_query("SELECT `manufacturers.manufacturers_name`, `products.products_id.` FROM manufacturers, products, WHERE 'manufacturers_id` = `products.manufacturers_id`");
  2. $manufacturers_info = tep_db_fetch_array($manufacturers_info_query);


i wyświetlam za pomocą :
  1. $manufacturers_info['manufacturers_name'];



Jednak niestety to nie działa.

Czy może mi ktoś pomóc?
zleek
Nie bardzo rozumiem co chcesz osiągnąć. W istniejącym rozwiązaniu Ci nie wyświetla nazwy producenta, czy może chcesz rozwiązanie, które wyświetli tych producentów, którzy sa przypisani do produktów?
thek
Błąd w zapytaniu masz. A określiłeś skąd ma te id producenta brać? Jest tam po prostu manufacturers_id. Nie zaznaczasz jednak, że ma ono być z tabeli produktów, a z tego co widzę to taka nazwa kolumny jest w OBU tabelach, więc baza nie wie czy ma łączyć tabelę z samą sobą czy z drugą. Lepiej to przerobić na JOIN smile.gif Można użyć natural, left, right. Ja zrobiłem tak smile.gif
  1. SELECT m.manufacturers_name, p.products_id FROM manufacturers m RIGHT JOIN products p ON m.manufacturers_id = p.manufacturers_id

To przydzieli produktom ich producentów.
celbarowicz
zrób dwa zależne selekty. pierwszy wybierze id producenta i pokaże np jego nazwę, drugi na podstawie id producenta wybierze wszystkie jego produkty i w ten sposób odczytasz niezbędne dane.
co chcesz uzyskać?pokaż strukturę tabel, może coś da się zrobić.
Micchaleq
Cytat(thek @ 14.01.2010, 11:12:30 ) *
Błąd w zapytaniu masz. A określiłeś skąd ma te id producenta brać? Jest tam po prostu manufacturers_id. Nie zaznaczasz jednak, że ma ono być z tabeli produktów, a z tego co widzę to taka nazwa kolumny jest w OBU tabelach, więc baza nie wie czy ma łączyć tabelę z samą sobą czy z drugą. Lepiej to przerobić na JOIN smile.gif Można użyć natural, left, right. Ja zrobiłem tak smile.gif
  1. SELECT m.manufacturers_name, p.products_id FROM manufacturers m RIGHT JOIN products p ON m.manufacturers_id = p.manufacturers_id

To przydzieli produktom ich producentów.



Nie wiem cz y to pierwsze co kolega napisał jest skończone, jednak wyświetlając coś takiego :
  1. $produkt_in_query = tep_db_query("SELECT m.manufacturers_name, p.products_id FROM manufacturers m RIGHT JOIN products p ON m.manufacturers_id = p.manufacturers_id");
  2. $produkt_in = tep_db_fetch_array($produkt_info_query);
  3. $ma = $produkt_in['manufacturers_name'];

No niestety nie działa/

Drugi kolega , powiem tak ja MYSQL dopiero zaczynam, możńa powiedzieć ze zawsze miałem z tym styczność ale nigdy w to nie wnikałem obecnie zainstalowałem sobie oprogramowani sklepu i staram się go sobie edytować po to by nauczyć się dużo na temat języka mysql a uważam, że rozwiązując kazdy problem łatwiej się jest nauczyć ( bynajmniej dla mnie ) niż czytając ksiązke .

Co chce osiągnąc wyciągnac z tabeli manufactures nazwę producenta OCZYWIŚCIE DLA DANEGO PRODUKTU
JA TYLKO EDYTUJE JEDEN PLIK KTÓRY GENERUJE WYGLAD PRODUKTU exclamation.gif.

http://micchalek.ovh.org/sklep/catalog/pro...aa972d33efbe60c
Konkretnie ta tabela gdzie wszędzie pisze cena brutto. Nazwa cannon się nie zmienia. ( ale to jeszcze inny sposób )

Jak zapisane jest to w MYSQL opisałem to wyzej są 2 ( dla nas wazne ) tabele products oraz manufacturers
W tabeli products mozna odnalesc Pproducts_id oraz manufacturers_id , ale nazwe manufacturers mozna uzyskac jedynie z tabeli manufacturers z komórki o nazwie manufacturers name.

i staram się teraz zrobić coś takiego ze dla danego produktu wyświetlana jest dana wartość( nazwa ) .

Moim kolejnym krokiem w MYSQL bedzie utworzenie pola w panelu admin jakiegoś pola np komentarz które będe mógł również po wpisaniu odczytać w polu ( będzie z tym więcej zabawy jednak narazie samo odczytywanie).

Proszeo info jak można to zrobić by to działało.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.