Jump to content

[Darmowa apka w PHP] Wzajemne powiązania produktów


Recommended Posts

Witam, przedstawiam prostą apkę do obsługi wzajemnych powiązań produktów.

Zasada działania bardzo prosta. Produkt 1 z utworzonymi powiązaniami z produkt 2, produkt 3 i produkt 4.

Zapytanie pobiera wszystkie te powiązania i tworzy je wzajemnie tj. produkt 2 dostanie powiązanie do produktu 1, produktu 3 i produktu 4. produkt 3 dostanie do produktu 1, produktu 2 i produktu 4 itd.

<?php
$dbHost = 'localhost';
$dbUsername = 'login do bazy danych';
$dbPassword = 'haslo do bazy danych';
$dbName = 'nazwa bazy danych';

$conn = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);
if ($conn->connect_error) {
    die("Połączenie nieudane: " . $conn->connect_error);
}
$sql = "INSERT INTO npsw_accessory (id_product_1, id_product_2)
SELECT a.id_product_2, b.id_product_2
FROM npsw_accessory a
JOIN npsw_accessory b ON a.id_product_1 = b.id_product_1
WHERE a.id_product_2 != b.id_product_2
AND NOT EXISTS (
    SELECT 1 FROM npsw_accessory n3
    WHERE n3.id_product_1 = a.id_product_2
    AND n3.id_product_2 = b.id_product_2
)
UNION
SELECT id_product_2, id_product_1
FROM npsw_accessory
WHERE NOT EXISTS (
    SELECT 1 FROM npsw_accessory n3
    WHERE n3.id_product_1 = npsw_accessory.id_product_2
    AND n3.id_product_2 = npsw_accessory.id_product_1
);

";
if ($conn->query($sql) === TRUE) {
    echo "Zapytanie SQL wykonane pomyślnie";
} else {
    echo "Błąd przy wykonywaniu zapytania: " . $conn->error;
}
$conn->close();
?>

Do uzupełnienia dane do bazy danych oraz zmiana "npsw_accessory" jeżeli macie u siebie inny prefiks w tabeli bazy danych niż npsw.

Plik zapisujecie dowolnie z rozszerzeniem .php i wrzucacie na ftp, w dowolne miejsce np. public_html, wtedy po wejsciu w strone sklepu https://sklep.pl/nazwapliku.php wyświetli się komunikat o udanym lub nieudanym wykonaniu zapytania sql lub można sobie dodać w crona i ustawić automatyzację na serwerze.

Link to comment
Share on other sites

Od razu napiszę że jeśli ktoś ma bardzo dużo produktów które chce połączyć ze sobą wzajemnie to musi się liczyć z tym że jego baza danych rozrośnie się ogromnie. Produkty powiązane jest fajną opcją ale tylko w niektórych przypadkach, w dużym sklepie przy dużej liczbie powiązań może nam to szybko zapchać bazę więc tam lepiej się sprawdzą inne rozwiązania.

Poza tym fajnie by było zabezpieczyć ten plik przed nieautoryzowanym użyciem lub zrobić to jako moduł uruchamiany po jakiejś akcji. 

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...