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
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
16.12.2010, 09:08:30
|
Anfänger
|
|
Registriert seit: Jan 2005
Alter: 41
Beiträge: 102
|
|
Schleife wiedreholen abhängig von Resultat in der Schleife
Hallo,
kurze Frage.
Ich möchte in einer Foreach schleife (oder andere Lösung) eine SQL Abfrage
verwenden, die abhängig vom Ergebnis der Abfrage immer wieder wiederholt wird
bis ein gewisses resultat geliefert wird. (und in der Schleife ein Array aufbauen)
Leider muss das Select immer wieder neu abgesetzt werden da es in einem
einzelnen select nicht zu lösen ist.
Wie könnte ich das umsezten?
Es geht darum einen Kategorie Pfad aus einem Produkt Kategorie Baum reverse auszulesen.
Danke
Philipp
|
16.12.2010, 09:13:29
|
Member
|
|
Registriert seit: Nov 2007
Beiträge: 843
|
|
AW: Schleife wiedreholen abhängig von Resultat in der Schleife
Hi
Zitat:
Zitat von fips
Leider muss das Select immer wieder neu abgesetzt werden da es in einem
einzelnen select nicht zu lösen ist.
|
Und das sagt wer?
Zitat:
Wie könnte ich das umsezten?
|
Bisheriges zeigen, wenn noch nichts geschrieben ist .....ab in den
SQL-Bereich und erstmal die Abfrage klären.
mfg
CKaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
|
28.12.2010, 01:21:56
|
Anfänger
|
|
Registriert seit: Jan 2005
Alter: 41
Beiträge: 102
|
|
AW: Schleife wiedreholen abhängig von Resultat in der Schleife
Leider konnte ich dafür bis jetzt keine Lösung finden, hier das konkrete Problem.
Perfekt wäre eine MYSQL Lösung.
SQL Table:
id, parent_id, level, title
1, 0, 0, root
2, 1, 1, Weihnachtsbäume
15, 2, 2, Tannen
167, 15, 3, Sibirische Jungtanne
168, 15, 3, Sibirische Altanne
.......
Derzeit hat der Table ca. 750 Einträge steigend.
Anforderung:
Ich will eine nun eine ID an eine Funktion / SQL Statement übergeben und den Pfad
zurück bekommen.
Beispiel: ID: 168
return: root / Weihnachtsbäume / Tannen / Sibirische Altanne
Anbei noch ein kleines Beispiel.
Vielen Dank für die Hilfe.
Philipp
|
28.12.2010, 01:47:10
|
|
Member
|
|
Registriert seit: Jun 2006
Beiträge: 655
|
|
AW: Schleife wiedreholen abhängig von Resultat in der Schleife
Dein bisheriger Code dafür? Also Deine Versuche?
Du musst uns schon mit echtem PHP-Code entgegenkommen.
Immerhin bist Du hier in einem PHP-Hilfeforum.
__________________
Liebe Grüße
|
28.12.2010, 09:43:56
|
SELFPHP Experte
|
|
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
|
|
AW: Schleife wiedreholen abhängig von Resultat in der Schleife
Das ist eine feste Eigenschaft des Parent/Id Konzeptes.
Stell auf "Nested Sets" um. Dann gehts auch in einem SELECT
|
28.12.2010, 10:18:03
|
Anfänger
|
|
Registriert seit: Jan 2005
Alter: 41
Beiträge: 102
|
|
AW: Schleife wiedreholen abhängig von Resultat in der Schleife
Hallo,
was meinst du mit "Nested Sets"?
Ich kann die Struktur des tables leider nicht ändern da dies eine zentrale Komponente
ist die auch von anderen Teilen der Software genutzt wird.
Korrekt, derzeit liegt das Thema in PHP Bereich wie aber "Ckaos" schreibt, sollte
ich es eigentlich mit ner SQL Lösung versuchen.
In PHP hätte ich es mit nem Select versucht das abhängig vom Resultat d.h.
level > 0 weitere selects absetzt, dies funktioniert jedoch nicht weil ich nicht weiss wie
die Schleife aufzubauen ist und ich mir nicht sicher bin ob dies die optimale Lösung ist.
PHP-Code:
$db2 = &new DB_dedi;
$sql = "SELECT a.id,a.parent_id,a.level,a.title FROM $db_productcat a WHERE a.id = 50";
echo $sql;
$db->query($sql);
while ($db->next_record()) {
$catpath[$db->f('level')]['id'] = $db->f('level');
$catpath[$db->f('level')]['idparent_id'] = $db->f('parent_id');
$catpath[$db->f('level')]['title'] = $db->f('title');
if($db->f('level') > 0){
// dieser Bereich müsste in einer Schleife laufen bis db->f('level') == 0
$sql2 = "SELECT a.id,a.parent_id,a.level,a.title FROM $db_productcat a WHERE a.id = ".$db->f('parent_id');
$db2->query($sql2);
while ($db2->next_record()) {
$catpath[$db2->f('level')]['id'] = $db2->f('level');
$catpath[$db2->f('level')]['idparent_id'] = $db2->f('parent_id');
$catpath[$db2->f('level')]['title'] = $db2->f('title');
}
}
}
print_r($catpath);
Philipp
|
28.12.2010, 10:57:05
|
SELFPHP Experte
|
|
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
|
|
AW: Schleife wiedreholen abhängig von Resultat in der Schleife
Zitat:
was meinst du mit "Nested Sets"?
|
Das findest du selber heraus!
Oder ist Tante Google gerade in Urlaub?
Tipp:
Rekursive Probleme löst man am einfachsten rekursiv.
Wobei sich allerdings jede Rekursion auch iterativ lösen läßt.
Hmmm...
Wieso wird bei dir der Level zur Id?
Und wieso überhaupt ein "Level" in der DB?
Vermutlich ist damit die Tiefe des Baums gemeint. Aber die ergibt sich doch automatisch beim Abfragen. Und der feste Level macht Probleme beim verlegen/modifizieren der Äste.
Auch ist das automatische rekursive löschen von Ästen in der MySQL Grundeinstellung nur bis zu einer Tiefe von 15 möglich.
|
28.12.2010, 11:08:19
|
Anfänger
|
|
Registriert seit: Jan 2005
Alter: 41
Beiträge: 102
|
|
AW: Schleife wiederholen abhängig von Resultat in der Schleife
Zitat:
Das findest du selber heraus!
Oder ist Tante Google gerade in Urlaub?
|
--> Verstanden, sorry
Ja das Level gibt die Tiefe im Baum aus, diese habe ich im Array als
ID verwendet, weil ich damit die Möglichkeit hätte auf ein bestimmtes
Level zuzugreifen.
Zitat:
Rekursive Probleme löst man am einfachsten rekursiv.
Wobei sich allerdings jede Rekursion auch iterativ lösen läßt.
|
Naja in meinem Code plane ich ja rekursiv im Baum nach oben zu laufen
bis ich oben angekommen bin. In dem Fall scheitert es nur an der Umsetzung,
an dieser muss in diesem Fall wohl noch weiter arbeiten, korrekt?
Danke
|
28.12.2010, 11:38:39
|
SELFPHP Experte
|
|
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
|
|
AW: Schleife wiedreholen abhängig von Resultat in der Schleife
Zitat:
Naja in meinem Code plane ich ja rekursiv im Baum nach oben zu laufen
bis ich oben angekommen bin. In dem Fall scheitert es nur an der Umsetzung,
an dieser muss in diesem Fall wohl noch weiter arbeiten, korrekt?
|
Das scheint mir auch so!
Leider kann ich dir dabei wenig bis gar nicht helfen. Denn ich kenne die verwendete DB Klasse nicht.
|
28.12.2010, 12:11:19
|
Anfänger
|
|
Registriert seit: Jan 2005
Alter: 41
Beiträge: 102
|
|
AW: Schleife wiedreholen abhängig von Resultat in der Schleife
Okay, allesk klar.
Die DB Klasse erledigt einfach nur die DB Connection und schickt die Statements
gegen die DB.
D.h. mein Problem liegt nun im Aufbau des PHP codes, dafür muss ich wohl noch eine
Lösung finden.
Auf jeden Fall, vielen Dank für die Hilfe ich weiss nun in welche Richtung ich laufen muss.
Philipp
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
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.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 16:09:07 Uhr.
|