Skocz do zawartości
  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

Grzegorz

[Nieaktualny] Relacje w bazie danych i wyświetlanie produktów PHP. Brak segregacji

Promowane odpowiedzi

Witam dalej męczę się z nauką PHP i napotkałem problem taki: dawniej miałem baze danych bez relacji lecz postanowiłem pójść level up w nauce i stworzyłem je. 

 

Do tabeli produkty stworzyłem relacje z kategorią. Wiadomo jeden produkt może mieć więcej kategorii itp itd

 

Sytuacja html/php wyglądała dawniej tak:

 

Posiadałem generowanie automatyczne kategoria z bazy danych oraz wyświetlanie produktów dzięki powyższym kategoriom. 

 

Stary kod:

Kategoria generator

 <?php
                    error_reporting(0);
                             
                    require_once "connect.php";
                             $kategoria = isset($_GET['kategoria'])? $_GET['kategoria'] : 'Dzieci';

                        $dbc = new mysqli($host, $db_user, $db_password, $db_name);
                    mysqli_query($dbc, "SET CHARSET utf8");
                    $results_per_page = 10;
                    $query = "SELECT * FROM kategorie";
                    $result = mysqli_query($dbc,$query) or die("Brak możliwości wyświetlenia danych");
                    $number_of_results = mysqli_num_rows($result);

                    while($row = mysqli_fetch_array($result)){

                         echo '<li class="filtr-uno-product-two"><button class="kategoria-product-two" name="kategoria" value="' . $row['Kategoria'] . '"><span class="filtr-uno-product-text-two">' . $row['Kategoria'] . '</span></button>';


                    }

                    mysqli_free_result($result);
                    mysqli_close($dbc);
                 ?>

A tu wyświetlanie produktów. Wszystko ze sobą grało/działało. 

 <?php
         require_once "connect.php";
            $kategoria = isset($_GET['kategoria'])? $_GET['kategoria'] : 'Dzieci';

 $dbc = mysqli_connect($host , $db_user , $db_password , $db_name) or die ("Brak połączenia z bazą");
            mysqli_query($dbc, "SET CHARSET utf8");
            $query = "SELECT * FROM produkty WHERE Kategoria = '$kategoria' LIMIT 15" ;
            $result = mysqli_query($dbc,$query) or die("Brak możliwości wyświetlenia danych");
            $number_of_results = mysqli_num_rows($result);
                
            while($row = mysqli_fetch_array($result)){

                 echo '<a class="show" href="product.php?show='.$row["id"].
                             '"><div class="product"><div class="product_image"><img src="img/produkty/'. $row["Obraz_Produktu"]. 
                             '"></div><div class="product_name">'. $row["Nazwa_Produktu"].
                             '</div><div class="product_price">'. $row["Cena_Produktu"].
                             'zł</div><button id="sprawdz" type="button">Sprawdź</button></div></a>';

            }

            mysqli_free_result($result);
            mysqli_close($dbc);
?>

Jednakże teraz jak zrobiłem relacje to nie segregują się produkty jak dawniej tylko wszystkie pokazują się. Zaktualizowany kod po relacji wyświetlania produktów.

     <?php
         require_once "connect.php";
            $kategoria = isset($_GET['kategoria'])? $_GET['kategoria'] : 'Dzieci';

 $dbc = mysqli_connect($host , $db_user , $db_password , $db_name) or die ("Brak połączenia z bazą");
            mysqli_query($dbc, "SET CHARSET utf8");
            $query = "SELECT * FROM produkt LEFT JOIN kategorie ON produkt.Kategorie_idKategoria = kategorie.Kategoria " ;
            $result = mysqli_query($dbc,$query) or die("Brak możliwości wyświetlenia danych");
            $number_of_results = mysqli_num_rows($result);
                
            while($row = mysqli_fetch_array($result)){

                 echo '<a class="show" href="product.php?show='.$row["id"].
                             '"><div class="product"><div class="product_image"><img src="img/produkty/'. $row["Obraz_Produktu"]. 
                             '"></div><div class="product_name">'. $row["Nazwa_Produktu"].
                             '</div><div class="product_price">'. $row["Cena_Produktu"].
                             'zł</div><button id="sprawdz" type="button">Sprawdź</button></div></a>';

            }

            mysqli_free_result($result);
            mysqli_close($dbc);
?>

Pomoże ktoś :/ Nie mam pojęcia czemu nie działa 

 

Dodam że w kodzie może być nie potrzebna linijka kodu jakaś. Często pisze w nocy i mogłem coś bez sensu napisać 

 

Znalazłem błąd chyba w tym miejscu jednakże nie wiem jak to uporządkować by pobierało $kategoria

SELECT * FROM produkt LEFT JOIN kategorie ON produkt.Kategorie_idKategoria = kategorie.Kategoria

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
11 godzin temu, BlackIce napisał:

Bo w zapytaniu brakuje Tobie słowa LIMIT.

ale to nie spowoduje że zacznie działać ...

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Pisałeś, przynajmniej ja tak zrozumiałem, że teraz się wszystkie wyświetlają, a przedtem były podzielone na części.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

@BlackIce

a tak z innej beczki

mógłbyś mi powiedzieć czemu nie dodaje mi danych do bazy?

jak usunąłem if to działa lecz po wejsciu na stronie pomimo tego ze nic nie uzupełnie i nie wcisne guzika to dodaje puste rekordy :/

   <?php
    
    require_once "connect.php";
  
 
if($siema !=""){
    
	$polaczenie = mysqli_connect($host , $db_user , $db_password , $db_name) or die ("Brak połączenia z bazą");
 
	
    $siema = "";
	$Opis_Produktu = $_POST['Opis_Produktu'];
	$Cena_Produktu = $_POST['Cena_Produktu'];
	$Nazwa_Produktu = $_POST['Nazwa_Produktu'];
	$Id_Produktu = $_POST['Id_Produktu'];
    $Kategoria = $_POST['Kategoria'];
    $Obraz_Produktu = $_POST['Obraz_Produktu'];
    $Obraz_Produktu2 = $_POST['Obraz_Produktu2'];
    $Obraz_Produktu3 = $_POST['Obraz_Produktu3'];
	$Data_Dodania = $_POST['Data_Dodania'];
	mysqli_query($polaczenie, "INSERT INTO produkty ( ID, Opis_Produktu, Cena_Produktu, Nazwa_Produktu, Id_Produktu, Kategoria, Obraz_Produktu, Obraz_Produktu2, Obraz_Produktu3, Data_Dodania) VALUES (NULL, '" . $Opis_Produktu ."','". $Cena_Produktu ."','". $Nazwa_Produktu ."','". $Id_Produktu ."','". $Kategoria ."','"  . $Obraz_Produktu ."','". $Obraz_Produktu2 ."','". $Obraz_Produktu3 ."','". $Data_Dodania ."')");
	echo mysqli_error($polaczenie);
    
    
}
    
 	
?>

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Te dane gdzieś sprawdzasz?

<?php
$_POST['Opis_Produktu'];
$_POST['Cena_Produktu'];
$_POST['Nazwa_Produktu'];
$_POST['Id_Produktu'];
$_POST['Kategoria'];
$_POST['Obraz_Produktu'];
$_POST['Obraz_Produktu2'];
$_POST['Obraz_Produktu3'];
$_POST['Data_Dodania'];

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

nie aktualne błąd znajdował się w tym miejscu "if($siema !=""){"

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

×