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 ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken 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 Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 16.12.2010, 09:08:30
fips fips ist offline
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
Mit Zitat antworten
  #2  
Alt 16.12.2010, 09:13:29
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
AW: Schleife wiedreholen abhängig von Resultat in der Schleife

Hi

Zitat:
Zitat von fips Beitrag anzeigen
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!
Mit Zitat antworten
  #3  
Alt 28.12.2010, 01:21:56
fips fips ist offline
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
Angehängte Dateien
Dateityp: zip categories_example.sql.zip (955 Bytes, 14x aufgerufen)
Mit Zitat antworten
  #4  
Alt 28.12.2010, 01:47:10
Benutzerbild von rarios
rarios rarios ist offline
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
Mit Zitat antworten
  #5  
Alt 28.12.2010, 09:43:56
DokuLeseHemmung DokuLeseHemmung ist offline
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
Mit Zitat antworten
  #6  
Alt 28.12.2010, 10:18:03
fips fips ist offline
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
Mit Zitat antworten
  #7  
Alt 28.12.2010, 10:57:05
DokuLeseHemmung DokuLeseHemmung ist offline
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.
Mit Zitat antworten
  #8  
Alt 28.12.2010, 11:08:19
fips fips ist offline
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
Mit Zitat antworten
  #9  
Alt 28.12.2010, 11:38:39
DokuLeseHemmung DokuLeseHemmung ist offline
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.
Mit Zitat antworten
  #10  
Alt 28.12.2010, 12:11:19
fips fips ist offline
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
Mit Zitat antworten
Antwort


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
Leeres Resultat? Sk3y MySQLi/PDO/(MySQL) 10 13.11.2006 19:57:40
Problem bei Schleife in Schleife Fluppi PHP Grundlagen 1 19.06.2005 13:05:10
Daten aus einem array in einer Schleife dynamisch zusammenzählen comriker PHP für Fortgeschrittene und Experten 3 28.04.2005 13:59:57


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:27:58 Uhr.


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


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