Datenbankelemente mit mehr als einer KategoriePhp

PHP-Programmierer chatten hier
Guest
 Datenbankelemente mit mehr als einer Kategorie

Post by Guest »

Ich erstelle ein Filtersystem mit 3 Schritten und es funktioniert im Moment, aber jetzt möchte ich Artikel mit mehr Kategorien haben. Alle Kategorie-IDs sind INTs. Muss ich das ändern oder was ist die beste Option dafür?
Image

Image
Das ist vorerst meine Lösung. Ich habe also eine Spalte (Redundanz) zum Trennen der Partner, die mehr als einmal in der Datenbank vorhanden sind, sodass ich keine doppelten Ergebnisse erhalte, wenn ich nach allen filtere.
Aber ich möchte (falls möglich) die Möglichkeit, mehr Kategorien in die Kategorie_ID/Unterkategorie_ID/Unterkategorie2_ID zu schreiben, damit ich einen Partner nicht mehrmals in die Datenbank schreiben muss und ihn trotzdem in PHP abrufen kann.
Hier ist mein Datenbank als Code:

Code: Select all

-- phpMyAdmin SQL Dump
-- version 5.0.2
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Erstellungszeit: 19. Okt 2020 um 11:36
-- Server-Version: 10.4.13-MariaDB
-- PHP-Version: 7.4.8

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Datenbank: `partnerfilter`
--

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `partner`
--

CREATE TABLE `partner` (
`partner_id` int(11) NOT NULL,
`category_id` int(11) NOT NULL,
`subcategory_id` int(11) NOT NULL,
`subcategory2_id` int(11) NOT NULL,
`partner_name` text NOT NULL,
`partner_logo` text NOT NULL DEFAULT '[Kein Bild vorhanden]',
`partner_link` text NOT NULL,
`status` tinyint(4) NOT NULL DEFAULT 1 COMMENT '1=Active | 0=Inactive',
`redundancy` int(11) NOT NULL DEFAULT 1 COMMENT '1 = First Object\r\n0 = Doubled Object'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

--
-- RELATIONEN DER TABELLE `partner`:
--   `category_id`
--       `categories` -> `category_id`
--   `subcategory_id`
--       `subcategories` -> `subcategory_id`
--   `subcategory2_id`
--       `subcategories2` -> `subcategory2_id`
--

--
-- Daten für Tabelle `partner`
--

INSERT INTO `partner` (`partner_id`, `category_id`, `subcategory_id`, `subcategory2_id`, `partner_name`, `partner_logo`, `partner_link`, `status`, `redundancy`) VALUES
(2, 2, 2, 4, 'Udo Förster', 'url', '/udofoerster', 1, 1),
(3, 2, 2, 5, 'Testfirma', '[kein Logo vorhanden]', '/testfirma', 1, 1),
(4, 2, 2, 6, 'Brüninghoff', 'https://assets.kununu.com/images/images_logos/bruninghoff-gmbh-co-kg-194df.gif', '/brueninghoff', 1, 1),
(5, 2, 2, 4, 'Naturi', '[Kein Logo vorhanden]', '/naturi', 1, 1),
(6, 1, 6, 15, 'BlowerDoor', 'url', '/blowerdoor', 1, 1),
(7, 1, 9, 15, 'ante', 'https://www.ante-holz.de/fileadmin/_processed_/csm_Ante-Logo_bc1031754d.gif', '/ante', 1, 1),
(8, 1, 9, 15, 'ABA', 'url', '/aba-holz', 1, 1),
(9, 2, 13, 15, 'Udo Förster', 'url', '/udofoerster', 1, 0);

--
-- Indizes der exportierten Tabellen
--

--
-- Indizes für die Tabelle `partner`
--
ALTER TABLE `partner`
ADD PRIMARY KEY (`partner_id`),
ADD KEY `category_id` (`category_id`),
ADD KEY `subcategory_id` (`subcategory_id`),
ADD KEY `subcategory2_id` (`subcategory2_id`);

--
-- AUTO_INCREMENT für exportierte Tabellen
--

--
-- AUTO_INCREMENT für Tabelle `partner`
--
ALTER TABLE `partner`
MODIFY `partner_id` int(11) NOT NULL AUTO_INCREMENT,
AUTO_INCREMENT=10;

--
-- Constraints der exportierten Tabellen
--

--
-- Constraints der Tabelle `partner`
--
ALTER TABLE `partner`
ADD CONSTRAINT `partner_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `categories` (`category_id`),
ADD CONSTRAINT `partner_ibfk_2` FOREIGN KEY (`subcategory_id`) REFERENCES `subcategories` (`subcategory_id`),
ADD CONSTRAINT `partner_ibfk_3` FOREIGN KEY (`subcategory2_id`) REFERENCES `subcategories2` (`subcategory2_id`);
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Danke :)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post