SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Entwicklung und Softwaredesign

PHP Entwicklung und Softwaredesign Hier können strukturelle (Programmier-) Konzepte diskutiert und Projekte vorgestellt werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 26.10.2009, 17:44:54
tsunamitsunami tsunamitsunami ist offline
Junior Member
 
Registriert seit: Dec 2005
Alter: 51
Beiträge: 236
generelles Logikproblem

Hallo Forum,

ich habe mal ein grundsätzliches Logikproblem. Also:

Wenn ich zB einen shop habe, habe ich verschiedene Gruppen: Blumentöpfe, Radios, PCs.
Je nach Gruppe habe ich verschiedene Eckdaten:

Beim Blumentopf: Volumen, Material, Farbe,Durchmesser, Form,usw.
Beim PC: Speicher, CPU, LAN, HDD, usw
Beim Radio: USB, Sendeplätze, Leistung, Freisprecheinrichtung, MP3,usw.

Wie bekomme ich eine flexible Artikelverwaltung hin?

Die erste Idee war eine lange Tabelle mit allen Beschreibungen und als Standartwert unwichtig.
Als Auswahl dann alle Werte wo !=“unwichtig“
Allerdings wird die Tabelle dann sehr lang und unübersichtlich.

Dann hatte ich die Idee das Ganze an einer Gruppe fest zu machen. Also wenn gruppe=1 nehme Tabelle pcs, wenn gruppe=2 nehme Tabelle blumentöpfe. Bei der Erfassung neuer Artikel dann via select als erstes die Gruppe wählen, die per javascript abschicken und dann die die Felder generieren.

Ein weitere Ansatz war die Überschriften zu den Gruppen als String zusammen mit den tabellennamen in einer Tabelle ab zu speichern:
1 „cputakt,speicher,hdd,kartenleser,brenner“ pcs;
2 „aussendurchmesser,innendurchmesser,höhe,farbe“ blumentoepfe;
3 „sendeplätze,usb,mp3,leistung,freisprecheinrichtung“radios;
Ein array generieren und darau ein Formular basteln.

Bei allen Ansätzen scheitere ich an der fehlenden Dynamik beim speichern. Natürlich kann ich sagen
if(klasse=1) insert into pcs...
else if(klasse=2) insert into blumentoepfe...
else if(klasse=3) insert into autoradios...

Kommt dann eine Gruppe z.B. Lampen hinzu, müsste ich manuell eine weitere else if Anweisung einfügen.

Gibt es dafür ein Patenrezept? Das Problem müsste doch eigendlich jeder Shopentwickler haben.
Wie löse ich sowas sauber? Danke für eure Mühe
Gruß
tsunamitsunami
Mit Zitat antworten
  #2  
Alt 26.10.2009, 17:53:06
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: generelles Logikproblem

Zitat:
Zitat von tsunamitsunami Beitrag anzeigen
[...]
Bei allen Ansätzen scheitere ich an der fehlenden Dynamik beim speichern. Natürlich kann ich sagen
if(klasse=1) insert into pcs...
else if(klasse=2) insert into blumentoepfe...
else if(klasse=3) insert into autoradios...

Kommt dann eine Gruppe z.B. Lampen hinzu, müsste ich manuell eine weitere else if Anweisung einfügen.

Gibt es dafür ein Patenrezept? Das Problem müsste doch eigendlich jeder Shopentwickler haben.
Wie löse ich sowas sauber? Danke für eure Mühe
Gruß
tsunamitsunami
Da solltest Du mit Array's weiterkommen...

Alle benötigten Dateinamen ins Array und Klasse=1 entspricht dem Array-Index.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #3  
Alt 26.10.2009, 17:54:26
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
AW: generelles Logikproblem

du hast eine tabelle kategorien

id | name
1 | blumentopf

dann gibts für alle kategorien eine tabelle mit attributen

id | kat_id | name | default_value | type
1 | 1 | | Volumen | 0 | numeric

und dann noch eine tabelle mit werten

id | a_id | article_id | value
1 | 1 | 1 | 25

und dann kann der admin eine neue artikel-kategorie anlegen, dafür die attribute definieren, für die artikel dann ne kategorie aussuchen und die passenden werte eintragen.
Mit Zitat antworten
  #4  
Alt 26.10.2009, 18:28:59
tsunamitsunami tsunamitsunami ist offline
Junior Member
 
Registriert seit: Dec 2005
Alter: 51
Beiträge: 236
AW: generelles Logikproblem

Hallo,
das ging ja schnell! Danke! :)

@Feuervogel. So ähnlich war meine Idee2 ja auch.
Das würde, wenn ichs richtig verstanden habe, heissen, nicht neuen Artikel hinzufügen, sondern Neuen PC hinzufügen, Neues Autoradio hinzufügen, Neuen Blumentopf hinzufügen usw., oder?

@vt1816. Das klingt ähnlich wie meine 3. Idee.

PHP-Code:

$array
[1]="cpu,speicher,hdd";
$array[2]="sendeplaetze,usb,mp3,leistung";
... 
... und dann eine DB-Tabelle Artikel mit den Spalten: ID, Klasse und Beschreibung.
Unter Beschreibung steht dann ein fest definierter string?
Sehr guter Ansatz...
Aber auch dann müsste ich sagen Neuer PC, Neuer Topf, Neues Radio usw. statt Neuer Artikel, oder?

bisher habe ich halt:
id Artikelname guppe_id objektwert genauebeschreibung
1 Gamer PC 1 6000 19
2 Kaktustopf 2 23 19

Wenn gruppe_id=1 suche in Tabelle pc nach id 19. Wenn gruppe:id=2 suche in Tabelle blumentopf nach id 19. Geht so also wohl nicht und ich muss das Ganze unterteilen, oder bin ich auf dem Holzweg?
Mit Zitat antworten
  #5  
Alt 26.10.2009, 19:13:58
tsunamitsunami tsunamitsunami ist offline
Junior Member
 
Registriert seit: Dec 2005
Alter: 51
Beiträge: 236
AW: generelles Logikproblem

Nochmal @feuervogel zum Verständnis:
Dann würde die Tabelle Werte doch in etwa so aussehen. Anhang...
Angehängte Dateien
Dateityp: pdf Beispiel.pdf (4,4 KB, 103x aufgerufen)
Mit Zitat antworten
  #6  
Alt 27.10.2009, 16:01:12
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
AW: generelles Logikproblem

Zitat:
Zitat von tsunamitsunami Beitrag anzeigen
Nochmal @feuervogel zum Verständnis:
Dann würde die Tabelle Werte doch in etwa so aussehen. Anhang...
ja, so in etwa dachte ich mir das.
Mit Zitat antworten
  #7  
Alt 27.10.2009, 16:16:53
tsunamitsunami tsunamitsunami ist offline
Junior Member
 
Registriert seit: Dec 2005
Alter: 51
Beiträge: 236
AW: generelles Logikproblem

Danke für eure Hilfe! Ich denke damit werde ich weiterkommen.
Mit Zitat antworten
  #8  
Alt 04.11.2009, 13:49:40
tsunamitsunami tsunamitsunami ist offline
Junior Member
 
Registriert seit: Dec 2005
Alter: 51
Beiträge: 236
AW: generelles Logikproblem

Hallo zusammen!

Wen es interessiert: Ich habe es nun teil-lösen können. Alerdings sehr unbefriedigend:

--
Ausgabe aller Schuhe:
PHP-Code:
$sql_sub="select objekte.wert, attribute.attributname,objekte.objekt_id from attribute,objekte,kathegorien
 where attribute.kathegorie_id=1 and kathegorien.id=attribute.kathegorie_id and attribute.id=objekte.attribut_id AND attribute.attributname != 'id' order by objekte.objekt_id"
;
     
$letzteproduktid=0;
 
$mssub=mysql_query($sql_sub);  $letzterwert="0";
 while(
$ausgabe_schuhx=mysql_fetch_assoc($mssub))
{       if(
$letzteproduktid != $ausgabe_schuhx["objekt_id"])echo " <td class='datenzelle'>&nbsp;</td></tr><tr>";  
        if(
in_array($ausgabe_schuhx["attributname"],$wichtigschuharray))
        print 
"<td class='datenzelle'>".$ausgabe_schuhx["wert"]."</td>";
        
$letzteproduktid $ausgabe_personx["objekt_id"];
    } 
Zitat:
if(in_array($ausgabe_schuhx["attributname"],$wichtigschuharray))
Dient nur zu Filterzwecken. Felder wie id und timestamp will ich nicht ausgeben.
Ich möchte erstmal eine Grobübersicht haben. Mehr später im Tooltipp.

So funktioniert es.
Nun habe ich aber ein Problem, wenn die Werte aus irgend einem Grund mal nicht in der selben Reihenfolge in der Spalte stehen...
Und: Wie kann ich sowas sortieren/filtern? ZB nach Schuhersteller. Die Werte stehen ja in der Spalte Wert untereinander. Die sind über die Tabelle attribute verknüpft.

Also Tabelle attribute:

id|kathegorie_id|attributname
1|1|Größe
2|1|Hersteller
3|2|cpu

Tabelle kathegorien:

id|Name
1|PCs
2|Schuhe
3|Blumentöpfe

Tabelle Werte:
id|attribut_id|objekt_id|wert
1|1|1|Tower
2|2|1|HP
3|3|1|3.4

Soll heissen Kathegorie 1(PCs) Objekt1(also PC1) Attribute 1-3.
In der gleichen Spalte stehen aber auch Farbe eines Blumentopfs oder Schuhgröße.
zB 3(Blumentöpfe) Objekt3(also Topf3) Attribute 1-3.

Ihr hattet mir ja schon geraten, das ganze in ein Array zu packen.

Das war auch ein Ansatz. Den attribut-Namen als Schlüssel nehmen und die Objektwerte dahinterpacken.

PHP-Code:
while($ausgabe=mysql_fetch_assoc($msquery))
{
$schuharray[$ausgabe['attributname']]=$ausgabe['objektwert']

Aber ich habe die Unterteilung des Arrays in die einzelnen Objekte nicht hinbekommen.
Der Array-Schlüssel muss eindeutig sein und in meinem Fall habe ich zB mehrere PCs in der Datenbank. Ich müsste also das Array
füllen. Sortieren. Ausgeben. leeren.
füllen. Sortieren...
Eine Idee wäre noch mehrere Arrays zu erzeugen jeweils mit der Objektid als Anhängsel.
Aber das ist doch Müll, oder? Vor allem, wenn da zB "nur" 100 PCs in der DB sind.
--
Bin schon fast so weit, wieder zu den Wurzeln zurück zu gehen und einfach den Tabellennamen mit zu übergeben.
PHP-Code:
$sql="select * from ".$_GET['tabellenname']... 
Für jede Kathegorie eigene Formulare zu nehmen und gut.

Weil so scheint es nicht lösbar zu sein. Vor allem wenn ich zB noch filtern oder sortieren möchte.
Mit Zitat antworten
Antwort

Stichworte
shop logik gruppen


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

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Logikproblem beim Datenbankdesign anon_1417 MySQLi/PDO/(MySQL) 3 19.09.2006 15:16:15


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:46:54 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt