power-box.de
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 23.05.2006, 17:07   #1
TP-Senior
 
Registriert seit: Apr 2003
Ort: Hessen
buttercookie macht alles soweit korrekt

Produktdatenbank - Leere Rubriken ausblenden


Hallo,
ich habe eine Produktdatenbank erstellt und hierfür die Produkte jeweils Haupt- und Unterrubriken zugeordnet. Auf der ersten Seite werden alle Hauptrubriken und die jeweiligen unterrubriken in einer Tabelle dargestellt. Von hier kommt man dann zu den jeweiligen Produktinformationen.

Wie kann ich es anstellen, dass nur die Haupt- und Unterrubriken angezeigt werden, die auch wirklch Produktdaten enthalten?
__________________
Gruß Buttercookie
buttercookie ist offline   Mit Zitat antworten


Alt 23.05.2006, 17:11   #2
TP-Urgestein
 
Benutzerbild von webcreate
 
Registriert seit: Nov 2003
Ort: NRW
webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts
Die Frage ist hier erstmal, wie die STruktur der DB ist.
Ggf. reicht es in der SQL Klausel das WHERE Statement zu nutzen.
Wie sschaut denn deine SQL-Abfrage aus?
__________________
Gruß Mark
Mein Blog zum TP || XING Profil || grafiker.de Profil || How to use GOOGLE || PS Kniffe
emCalculator 1.0



webcreate IT SOLUTIONS
www.webcreate-nrw.de
webcreate ist offline   Mit Zitat antworten
Alt 23.05.2006, 17:13   #3
TP-Member
 
Registriert seit: May 2006
Ort: Würzburg
be|chameleon ist auf einem guten Weg
Am besten speicherst du die Gesamtzahl der vorhandenen Produkte einer Gruppe in einer seperaten Spalte ab das ist wohl am Performance schonensten. Die Alternative wäre das du eben einen Query absetzt (sofern du mysql benutzt) einfach mit SELECT COUNT(product_id) FROM products WHERE category_id = 123; je nachdem wieviele artikel du jedoch in deiner Datenbank hast kann das aber ganz schön langsahm werden.

Deshalb lieber das Script so umschreiben das es bei neuen Artikeln oder wenn welche gelöscht werden eine Spalte in der Kategorientabelle entsprechend aktualisiert....

Da man immer vorausschauend entwickeln sollte empfehle ich dir das entsprechend umzugestalten.

Um dir mehr informationen zu geben brauchen wir deine db-struktur.
be|chameleon ist offline   Mit Zitat antworten
Alt 23.05.2006, 18:49   #4
TP-Senior
 
Registriert seit: Apr 2003
Ort: Hessen
buttercookie macht alles soweit korrekt
Die MySql-DB ist wie folgt aufgebaut

Tabelle "produkte"
id, h_id, u_id, titel, art-nr, beschreibung, preis

Tabelle "rubrik_h"
h_id, h_rubrik

Tabelle "rubrik_u"
u_id, u_rubrik

Ich denke es ist klar, dass unter "produkte" dann nur die ID's der Haupt- und Unterrubriken eingetragen werden.
__________________
Gruß Buttercookie
buttercookie ist offline   Mit Zitat antworten
Alt 23.05.2006, 19:07   #5
TP-Urgestein
 
Benutzerbild von webcreate
 
Registriert seit: Nov 2003
Ort: NRW
webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts
Müsste für Hauptrubriken wie folgt gehen (ungetestet)
Code:
SELECT tab1.* FROM rubrik_h AS tab1, produkte as tab2 WHERE tab1.h_id = tab2.h_id
__________________
Gruß Mark
Mein Blog zum TP || XING Profil || grafiker.de Profil || How to use GOOGLE || PS Kniffe
emCalculator 1.0



webcreate IT SOLUTIONS
www.webcreate-nrw.de
webcreate ist offline   Mit Zitat antworten
Alt 23.05.2006, 19:14   #6
TP-Member
 
Registriert seit: May 2006
Ort: Würzburg
be|chameleon ist auf einem guten Weg
Also ich hätte das alles etwas anders aufgeteilt, was nicht unbedingt heißen soll das es so besser ist.

Tabelle "products"
product_id, category_id, product_title, product_number, product_description, product_price

Tabelle "categories"
category_id, category_id_parent, category_title, category_products_count

Wieso gibt es bei dir zwei Tabellen für die Kategorien? Ich denke das _h steht für "Haupt" und _u für Unterrubriken, richtig? Am besten packst du das alles in eine Tabelle, das schonmal nur so nebenbei.

In die Spalte "category_product_count" würde ich dann die Anzahl der Artikel schreiben die innerhalb dieser Kategorie liegen, sofern category_id_parent == 0 ist ist es eine Hauptkategorie, wenn dort eine Zahl eingetragen ist, ist es eine Unterrubrik der jeweiligen Hauptkategorie.

Ob du category_product_count jetzt via Cron einmal am Tag berechnest oder eben "live" sobald Produkte hinzu oder gelöscht werden ist erstmal egal. Solltest du wirklich nur wenige Produkte in dieser Datenbank haben kannst du sicherlich auch folgendes machen, wobei ich davon abraten würde, zwecks vorrausschauender entwicklung.

Das auslesen der KAtegorien scheint ja bei dir bereits zu klappen du möchtest ja lediglich die ausblenden die keine Artikel haben, demnach musst du folgendes machen:

PHP-Code:
<?php
$row_main_check 
mysql_fetch_assoc(mysql_query("SELECT COUNT(id) AS count FROM produkte WHERE h_id = '".(int)$h_id."'"));

if(
$row_main_check['count'] >= 1) {
    
// Kategorie enthält Produkte also zeige sie an
}
?>
Das selbe musst du dann innerhalb der Schleife machen wo du die Unterkategorien ausgibst, vielleicht hilft dir das ja weiter.

Wie gesagt empfinde ich die Lösung mit der Spalte in der die Anzahl der vorhandenen Artikel gespeichert werden auf jedenfall schöner und strapaziert die Datenbank sicherlich auch weniger wenn irgendwann vll mal mehrere Hundertausend Produkte in der Datenbank sind.
be|chameleon ist offline   Mit Zitat antworten
Alt 24.05.2006, 00:30   #7
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
Zitat:
PHP-Code:
$row_main_check mysql_fetch_assoc(mysql_query("SELECT COUNT(id) AS count FROM produkte WHERE h_id = '".(int)$h_id."'")); 
Das riecht nach einer heftigen Explosion

Also am performantesten ist in solchen Fällen immer ein LEFT JOIN nach dem Muster

Select a.feld1, b.feld2, c.feld3, ...
FROM produkte a
LEFT JOIN kat1 b ON b.id = a.produkt_kat1_id
LEFT JOIN kat2 c ON c.id = a.produkt_kat2_id
WHERE ...
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 24.05.2006, 15:54   #8
TP-Senior
 
Registriert seit: Apr 2003
Ort: Hessen
buttercookie macht alles soweit korrekt
Das Problem ist, das alles so weit schon funktioniert und ich jetzt nich unbedingt wieder alles umstricken und von vorn anfangen möchte. Allerdings muß ich auch sagen das ihr recht habt und es besser wäre dies nach euren Vorschlägen zu ändern.

Ich habe mir noch folgendes überlegt. Wenn ich die Produkte "durchscanne" und die Ergebisse ob Datenvorhanden in ein Array schreibe. Macht das Sinn?

@Steffen: Das habe ich leider überhaupt nicht kapiert.
__________________
Gruß Buttercookie
buttercookie ist offline   Mit Zitat antworten
Alt 24.05.2006, 16:03   #9
TP-Urgestein
 
Benutzerbild von webcreate
 
Registriert seit: Nov 2003
Ort: NRW
webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts
Um JOINs zu verstehen, sollte man sich mal folgenden Link durchlesen.
http://www.little-idiot.de/mysql/mysql-118.html
__________________
Gruß Mark
Mein Blog zum TP || XING Profil || grafiker.de Profil || How to use GOOGLE || PS Kniffe
emCalculator 1.0



webcreate IT SOLUTIONS
www.webcreate-nrw.de
webcreate ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Produktdatenbank - Leere Rubriken ausblenden Produktdatenbank - Leere Rubriken ausblenden
« Bilder anzeigen lassen und spezielle Funktionen | [MySQL] - Zahlenformatierung »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:20 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67