| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

24-01-2010, 13:37
|
|
larsoniA
Registrierter Benutzer
|
|
Registriert seit: Aug 2006
Beiträge: 5
|
|
rekursive Datenbankabfrage
hallo hallo,
unser entwickler hat nun gekündigt und nun muss ich mich als leihe damit rumplagen  evtl kann mir da jemand helfen? das wäre super
IST-ZUSTAND
es gibt 2 tabellen.. die eine ist das produktthema und die andere das produkt selber.. ein produkt kann mehrere produktthemen beinhalten. die themen werden derzeit mit Leerzeichen getrennt in die spalte "themen" der produkttabelle geschrieben..
Beispiel der Produkttabelle -> Thema: "RADIO & TV MÖBEL"
die Produkttabelle kann via csv-export exportiert werden.
SOLL-ZUSTAND
beim csv export soll via SQL-Abfrage rekursiv die themen via "," getrennt werden anstatt wie es in der "Themen-Spalte" ist mit leerzeichen. Daher müsste ich ja die Produkttabelle mit der Spalte THEMEN rekursiv mit der Themen Tabelle vergleichen, so das dann sowas beim csv-export rauskommt:
"RADIO & TV, MÖBEL"
da ich wie schon gesagt ein leihe bin habe ich keine ansatzideen wie ich das machen könnte :-( vieleicht habt ihr es ja?
lg
lara
|

24-01-2010, 15:24
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
1. Es heißt Laie
2. Irgendwie sieht das nach einem ganz miesen Design aus. Imho solltest du die Datenbank vielleicht komplett umbauen.
3. Den Designfehler erkennst du ja schon an deinem Beispiel. Woher soll MySQL denn erkennen, dass es "RADIO & TV" und "MÖBEL" heißt. Es könnte doch auch so sein: "RADIO &" und "TV MÖBEL". Das kannst nur du händisch aufdröseln.
4. Mein Tipp. Informier dich über Normalisierung, da auch dein Vorschlag "RADIO & TV, MÖBEL" nicht das Gelbe vom Ei ist.
5. Beschränke das Problem nicht auf den csv-Export. Das ganze System ist viel zu redundant.
Gruß
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Geändert von Kropff (24-01-2010 um 15:58 Uhr)
|

24-01-2010, 15:46
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
OffTopic: Bei dem Layout hätte ICH dem Entwickler gekündigt. 
Aber das hilft nichts, ausbaden musst du die Sache. Ich würde daher auch empfehlen in den sauren Apfel zu beißen und das ganze zu normalisieren.
OffTopic: Wenns so ganz und gar nicht dein Ding ist, es gibt ja auch Freelancer, die kurzfristig einspringen können. Bei uns kannst du auch Jobangebote einstellen. 
|

24-01-2010, 16:00
|
|
larsoniA
Registrierter Benutzer
|
|
Registriert seit: Aug 2006
Beiträge: 5
|
|
ja das ist nicht die beste Programmierung  große Änderungen am Code sollen aber nicht mehr vorgenommen werden, da es sich nicht mehr lohnt.. später wird das projekt auch extern nochmal neu gebaut.. aber.. jetzt soll es erstmal so geändert werden (aufgabe wurde mir so erteilt..)
wie kann ich daher in mysql + php die spalte "themen" der produkte mit der thementabelle vergleichen? also das ich jede spalte durchgeh.. einen vergleich mach ob "radio & tv" ein thema ist.. und "möbel" ein extra thema und dies dann beim export so trennen kann? evtl. mit subanfrage?
|

24-01-2010, 16:07
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
Zunächst mal benötigen wir die Struktur beider Tabellen und deren genaue Relation. Vorher müssen wir raten.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

24-01-2010, 16:13
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
Was an der ganzen sache sollt eigentlich rekursiv sein??? Ich würde da höchstens ein iterativ sehen.
Wenn ich dich richtig verstanden habe, dann willst du nur aus
TV & Radio Möbel
ein
TV & Radio, Möbel
machen, richtig?
Ich würde evtl. gar ein
"TV & Radio", "Möbel"
bevorzugen.
Das ist eigentlich mit einem einmaligen Suchen und Ersetzen erledigt. Feddisch.
|

24-01-2010, 16:16
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
Ich denke, dass es auch noch andere "Produktthemen" gibt wie z.B. "Computer Hardware" oder "Computer Software". Da reicht kein suchen und ersetzen. Es sei denn, man macht es händisch bei allen Kombinationsmöglichkeiten.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

24-01-2010, 16:23
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
Ich gehe auch davon aus, dass das nicht die einzigen Kategorien sind. Aber ich bräuchte diese ja nur der Länge nach sortieren und dann zu ersetzen, aus "TV & Radio" mache "TV & Radio,". Und das Komma am Ende des "Gesamtwertes" kann ich ja abschneiden, wenns mir nicht zusagt.
Aber vielleicht ist mir der Sinn und Zweck auch noch nicht ganz klar geworden.
|

24-01-2010, 16:29
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
Ich warte mal so lange, bis der TS mit der Db-Struktur und ein paar Beispieldatensätzen ankommt. Dann sehen wir weiter. Vielleicht liege ja ich daneben.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

24-01-2010, 19:01
|
|
larsoniA
Registrierter Benutzer
|
|
Registriert seit: Aug 2006
Beiträge: 5
|
|
hey..
also die db-struktur schaut so aus..
tabelle produkt:
id, name, thema
Beispiel:
(1,radio xyz, tv & radio elektro)
tabelle thema:
id, name
Beispiel:
(1, tv & radio
2, elektro)
die output wo dann quasi die csv exportiert wird:
PHP-Code:
$db_artikel->query("SELECT produkt_id as produktID, name as Name , themenbereiche as Themenbereiche FROM produkte;
$datum = date("Ymd");
$exportname = "../export.csv";
if (file_exists($exportname)) unlink($exportname);
$fp = fopen ($exportname, "w");
while ($db_artikel->next_record()) { $row = $db_produkte->Record; for ($i = 0; $i < $columns; $i ++) { $out .=''.str_replace("r","",str_replace("n","",str_replace('"','',$row["$i"]))).'|; } $out.="\n"; } fwrite($fp,$out);
fclose($fp);
bei dem csv export soll quasi die themenbereiche statt dem "leerzeichen" (wie´s in der DB ist) dies via sql abfrage die themenbereiche geprüft und dann für den export via "," getrennt werden.
das statt "tv & radio elektro" dann "tv & radio, elektro" geschrieben wird
Geändert von larsoniA (24-01-2010 um 19:24 Uhr)
|

24-01-2010, 19:15
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
was spricht gegen die replace-variante?
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
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.
HTML-Code ist aus.
|
|
|
|
PHP News
|