Tworzenie Sklepu PHP na prostej bazie danych

Odpowiedz Nowy wątek
2017-08-31 13:51

Rejestracja: 2 lata temu

Ostatnio: 2 lata temu

0

Witajcie!
Mam problem z którym nie mogę sobie poradzić, mianowicie stworzyłem funkcje odpowiedzialną za tworzenie opisu produktu, która działa:

<?php
                function GenerowanieOpisuProduktu ($ZdjecieProduktu, $NazwaProduktu, $CenaProduktu, $Zdjecieopisu)
                {
                echo('<section class="ls section_padding_top_100 section_padding_bottom_75 columns_padding_25">');
                echo('<div class="container">');
                echo('<div class="row">');
                echo('<div class="col-sm-12">');
                echo('<div class="with_border with_padding rounded">');
                echo('<form class="form-horizontal" action="form.php" method="GET">');
                echo('<div itemscope="" itemtype="http://schema.org/Product" class="product type-product row">');
                echo('<div class="col-md-6">');
                echo('<div class="images">');
                echo('<img src="img/produkty/' . $ZdjecieProduktu . '.jpg"class="attachment-shop_single wp-post-image" alt="">');
                echo('</div>');
                echo('</div>');
                echo('<div class="summary entry-summary col-md-6">');
                echo('<h1 itemprop="name" class="product_title entry-title">' . $NazwaProduktu . '</h1>');
                echo('<div itemprop="offers">');
                echo('<ul class="list1 no-bullets">');
                echo('<li>');
                echo('<p class="price">');
                echo('<span class="amount">' . $CenaProduktu . '</span>');
                echo('</li>');
                echo('</ul>');
                echo('<form class="cart" method="post" enctype="multipart/form-data">');
                echo('<div class="form-group">');
                echo('<label for="product_size" class="grey">Ilość:</label>');
                echo('<span class="red">*</span>');
                echo('<input type="text" class="form-control "  id="product_size">');
                echo('</br></br>');
                echo('</div>');
                echo('</form>');
                echo('</div>');
                echo('</div>');
                echo('<div class="col-sm-12">');
                echo('<img src="img/produkty/' . $Zdjecieopisu . '.jpg"class="attachment-shop_single wp-post-image" alt="">');
                echo('</div>');
                echo('</div>');
                echo('<div class="attachment-shop_single wp-post-image">');
                echo('<input type="submit" class="theme_button" value="Dodaj do wyceny"/>');
                echo('</div>');
                echo('</div>');
                echo('</div>');
                echo('</div>');
                echo('</div>');
                echo('</div>');
                echo('</section>');
                }
                ?>

Wszystkie dane się poprawnie odczytują lecz problem pojawia się w wyselekcjonowaniu rekordów które chce pokazać
Poniżej podsyłam kod który za to odpowiada.

            <?php
            $i=1;
                if ($handle = opendir('produkty')) 
                   {
                   while (false !== ($file = readdir($handle))) { 
                       if ($file != "." && $file != "..") { 
                         // echo ('Nazwa czytanego pliku: ' . $file . "<br><br>"); 

                        $fopen = fopen('produkty/'.$file, "r");
                        $Data = fread($fopen, 390625);

                         // rozbijanie na elementy aby podać dane do funkcji
                         $explode = explode ('<|*|>', $Data);

                        if ($explode[0] == 'klimatyzatory-scienne' and $explode[5] == 1 )
                        {
                            GenerowanieOpisuProduktu ($explode[3], $explode[1], $explode[2], $explode[4]);
                        }

                        if ($explode[0] == 'klimatyzatory-komercyjne' and $explode[5] == 2)
                        {
                            GenerowanieOpisuProduktu ($explode[3], $explode[1], $explode[2], $explode[4]);  
                        }

                        if ($explode[0] == 'systemy-multi' and $explode[5] == 3)
                        {
                            GenerowanieOpisuProduktu ($explode[3], $explode[1], $explode[2], $explode[4]);
                        }

                       $i++;
                       } 

                   }
                   closedir($handle); 
                }
                ?>

Czy może mi ktoś powiedzieć jak przypisać jeden produkt do jednej strony produktowej, bo narazie po wejściu na produkt pokazują się pokazują się wszystkie strony produktowe z bazy danych...

edytowany 1x, ostatnio: Julekot, 2017-08-31 13:52

Pozostało 580 znaków

2017-08-31 14:23

Rejestracja: 12 lat temu

Ostatnio: 8 godzin temu

Lokalizacja: Warszawa

0

A wiesz chociaż dlaczego wyświetlają Ci się wszystkie produkty? Swoją drogą albo jesteś początkujący - albo masz baaardzo złe nawyki. Nie wiemy też jak wygląda u Ciebie "przeglądanie produktów/produktu" - więc ciężko powiedzieć jak Ci pomóc.

Produkty masz w bazie danych? z kodu wynika że są w pliku tekstowym.

edytowany 1x, ostatnio: axelbest, 2017-08-31 14:25

Pozostało 580 znaków

2017-08-31 14:53

Rejestracja: 2 lata temu

Ostatnio: 2 lata temu

0

Jednak już sam do tego doszedłem, owszem jestem początkującym, traktuje to jako ćwiczenie, axelbest mógł byś sprecyzować dlaczego odrazu wywnioskowałeś że jestem początkującym?

może po tych kilkudziesięciu echo sie jakoś pokapował :) - czysteskarpety 2017-08-31 16:00

Pozostało 580 znaków

2017-08-31 15:14

Rejestracja: 12 lat temu

Ostatnio: 8 godzin temu

Lokalizacja: Warszawa

0

Funkcja która służy Ci do wyświetlania wystarczy że miałaby jedno echo, a Ty byś co najwyżej mógł zrobić konkatenację. Tego typu funkcja jest dosyć słaba, bo funkcja z założenia powinna zwracać wynik jakiś. Narobisz z 10 takich funkcji jak masz i będziesz się głowił i żonglował - jak je spiąć razem. To jest baaardzo prawdopodobne źródło spaghetti kodu i ewentualnych błędów.
Aby tego uniknąć pomyśl o uzywaniu np TWIG'a lub innego systemu szablonów.

Produkty pobierasz z plików tekstowych - jak zajdzie potrzeba zaktualizowania np 1000 produktów - to będzie każdy plik ręcznie otwierał/ robił funkcję która każdy plik przeeedytuje? Zaharujesz się na śmierć z tym. Użyj jakiejś normalnej bazy danych na to.

A najlepiej to weź jakiś kurs np z udemy (jeszcze dziś jest chyba za 35 zeta), kup ksiazke albo przejdź jakieś tutki na YT - możesz też pokusić się o przejście podstawowych kroków z dokumentacji jakiegoś frameworka.

Pozostało 580 znaków

2017-08-31 16:03

Rejestracja: 4 lata temu

Ostatnio: 6 godzin temu

Lokalizacja: Piwnica

0

jak dla mnie uderz w jakiegoś frameworka, a potem znalezienie tutka z operacjami na bazach nie będzie większym problemem, ew. zainteresuj się cmsami sklepowymi


Pozostało 580 znaków

2017-09-04 21:13

Rejestracja: 2 lata temu

Ostatnio: 2 lata temu

0

Dziękuje bardzo za wszelaką pomoc!!! Właśnie skończyłem robić cały ten sklep. Zabieram się za bazy mySQL, póki co jest to zdecydowanie mniej skomplikowane. Również wrócę do funkcji aby ją uprościć :)
Jeszcze raz dziękuje za pomoc :)

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0