Datensätze auslesen

  • Guten Abend,


    sorry für den vielleicht falschen Titel, mir ist nichts anderes eingefallen. Hab ein kleines (vielleicht auch größeres) Problem mit meiner Funktion, die derzeit wie folgt aussieht:



    Diese klappt auch. Jetzt habe ich eine weitere Tabelle in meiner Datenbank angelegt die so aussieht


    Code
    CREATE TABLE IF NOT EXISTS `web_users_produktkategorien_settings` (
    `pks_id` int(11) NOT NULL,
      `pks_userID` varchar(100) NOT NULL,
      `pks_produktkategorieID` varchar(10) NOT NULL
    ) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8;


    Die jeweiligen Einträge sehen dann so aus


    [Blockierte Grafik: http://img5.fotos-hochladen.net/uploads/xxxxxds3fcj72yb.jpg]


    Unter "pks_userID" wird der User gespeichert und unter "pks_produktkategorieID" die Kategorie des jeweiligen Produktes.


    Also web_users_produktkategorien_settings.pks_produktkategorieID = web_produkte.p_pkategorie


    Jetzt möchte ich meine Funktion gerne so geändert haben, dass folgendes funktioniert:

    • User ruft die Seite auf
    • Funktion wird ausgeführt
    • Es muss in der Tabelle web_users_produktkategorien_settings geschaut werden, welche Rubriken zugelassen sind
    • Mit diesen Werten muss dann in meiner Hauptfunktion (siehe oben) gearbeitet werden. Also nur die Artikel ausgelesen werden, die in der Tabelle "web_users_produktkategorien_settings" festgelegt werden.


    Ist dieses denn überhaupt direkt im SQL möglich oder muss ich das später bei der Darstellung berücksichtigen? Ich würde es direkt im SQL bevorzugen, denn dann müssen nicht erst hunderte von Artikel ausgelesen werden.


    Ich hoffe mir kann von euch jemand weiter helfen :( Ich bin mit meinem können leider am Ende.
    Hallo,


    ich bin ein Schritt weiter, hab es so hinbekommen



    Das ist neu hinzugekommen


    PHP
    AND p_pkategorie IN (". 
               implode(', ', 
                         array_map(function(&$item){ 
                                       return "'".$item."'";
                                   }, $ids)) 
            .");


    Jetzt ist die Frage, wie kann ich das $ids = array(1,2,3); dynamisch füllen?

  • Du nutzt LEFT JOIN auf `web_produktkategorien`.
    Dabei sollte es doch zu jedem Datensatz in `web_produkte` auch einen passenden in `web_produktkategorien` geben, richtig?
    Also zu jedem Produkt eine Kategorie.
    Demnach solltest Du ein JOIN (kein LEFT) nutzen.
    Bedenke dann aber auch, dass es keinen Datensatz gibt, wenn es zum Produkt keine Kategorie gibt.
    Btw: Nutzt Du Fremdschlüssel ("foreign keys")?


    Will Dich jetzt aber nicht verwirren.
    Ich hoffe ich hab verstanden, was Du suchst:


    Jetzt versteh ich allerdings nicht, was Du hier warum auswählst.



    NOTE: kürzere Namen wäre wiklich Augenfreundlicher und übersichtlicher, wenn man mal was sucht ;)
    zB
    web_users_produktkategorien_settings
    könnte
    web_user_prodkatg_settings

  • zu den Namen, allgemein ist es 'normal' in englisch zu programmieren, was es für anderssprachige einfacher macht den Code zu verstehen und vor allem keine deutsch-englisch Sprachwechsel dauernd sind. :)
    Weiterer Vorteil ist, dass im Englischen so manches Wort kürzer ist oder zumindest so wirkt ^^

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!