Skipi Posted February 7 Share Posted February 7 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 More sharing options...
endriu107 Posted February 7 Share Posted February 7 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. 1 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now