php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.09.2011, 12:58  
Neuer Benutzer
 
Registriert seit: 18.11.2008
Beiträge: 8
Mad Dog befindet sich auf einem aufstrebenden Ast
Standard

hallo

@nikosch: ja du hast recht. hab vergessen sie rauszunehmen, das return $row war zum Test im Code.
Aber ansonsten?
Mad Dog ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.09.2011, 12:58  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ich sehe da mehrere return-Anweisungen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 19.09.2011, 13:20  
Neuer Benutzer
 
Registriert seit: 18.11.2008
Beiträge: 8
Mad Dog befindet sich auf einem aufstrebenden Ast
Standard

hm ich habe jetzt mal alle return rausgemacht, ausser:
PHP-Code:
        if($level === 2) {
            return 
$rows;
        } 
Funktioniert auch soweit gut. Jedoch sagt er mir $rows sei NULL, obwohl er Datensätze ausliesst und demnach auch in $rows speichert. (Ich nutzte Joomla und sehe alle SQL Statements die es ausführt, $rows dürfte eigentlich nicht NULL sein...)
Mad Dog ist offline   Mit Zitat antworten
Alt 19.09.2011, 13:35  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Alle Datensätze einzeln auszulesen ist ohnehin Wahnsinn. Schon daher habe ich keine Lust, hier weiter zu analysieren. Sowas
Zitat:
if(empty($row[0])) {
unset($row[0]);
}
ist auch nicht gerade überzeugend.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 19.09.2011, 13:39  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.235
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

$rows kommt auch nirgendwo her.

Ein rekursiver Funktionsaufruf heisst nicht, dass du auf Variablen zugreifst, die aus einem vorherigen Aufruf stammen.
Entweder gibst du vernünftig via return etwas zurück (dann fehlt in letzter Zeile ein return bei dir). Oder aber du übergibst $rows als Parameter (dann mit Operator & als Zeiger) und damit kannst du auf ein von aussen definiertes Array zugreifen. Variante 1:
PHP-Code:
function fillArray(&$array$level)
{
    
$array[$level] = 'foo';
    if (
$level 10
        
fillArray($array$level +1);
}
$foos = array();
fillArray($foos1);
var_dump($foos); 
Variante 2:
PHP-Code:
function fillArray($level)
{
    
$result[$level] = 'foo';
    if (
$level 10
        
$result array_merge($resultfillArray($level +1));
    return 
$result;
}
$foos fillArray(1);
var_dump($foos); 
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist gerade online   Mit Zitat antworten
Alt 22.09.2011, 12:33  
Neuer Benutzer
 
Registriert seit: 18.11.2008
Beiträge: 8
Mad Dog befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

danke für die Hilfen.
Ich habe es jetzt Ordentlich hinbekommen.
@nikosch: Kennst du eine andere Möglichkeit die Datensätze auszulesen?

Hier die Funktion nochmal:
PHP-Code:
    function childss($parents$database$level 1) {
            foreach(
$parents as $parentvalue) {
                    
$GLOBALS['categories'][] = $parentvalue;
                            
$query 'SELECT `id`, `parent_id`, `title` FROM #__categories WHERE section = 6 AND parent_id = '.intval($parentvalue['id']).' ORDER BY title';
                            
$database->setquery($query);
                            
$rows $database->loadAssocList();
                            if(!empty(
$rows)) {
                                
$count count($rows);
                                for(
$i 0$i $count$i++) {
                                    for(
$j 1$j <= $level*2$j++) {
                                        
$rows[$i]['title'] = '- '.$rows[$i]['title'];   
                                    }
                                    
$rows[$i]['level'] = $level;
                                }                            
                                
childss($rows$database$level 1);     
                            } 
            }
            return;                              
    } 
Mad Dog ist offline   Mit Zitat antworten
Alt 22.09.2011, 14:51  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.731
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

Zitat:
@nikosch: Kennst du eine andere Möglichkeit die Datensätze auszulesen?
Das wurde in diesem Thread doch bereits diskutiert. Lies vielleicht noch mal mepeisens Posts.
__________________
Blog | Buch | Kaloa
mermshaus ist offline   Mit Zitat antworten
Alt 22.09.2011, 16:46  
Erfahrener Benutzer
 
Registriert seit: 25.05.2010
Beiträge: 852
PHP-Kenntnisse:
Anfänger
Trainmaster wird schon bald berühmt werden
Standard

Zitat:
Zitat von mepeisen Beitrag anzeigen
Je nach Datenkonstellation kann es passieren, dass es sich Daten überschreibt.
Vorher sortieren

PHP-Code:
private function convertToTree(array $flat) {
    
$indexed = array();            
    foreach (
$flat as $row) {
        
$indexed[$row['id']] = $row;
    }          
    
$root null;
    foreach (
$indexed as $id => $row) {
        
$indexed[$row['parent_id']]['child'][$id] =& $indexed[$id];
    
        if (!
$row['parent_id']) {
            
$root $id;
        }
    }        
    return array(
$root => $indexed[$root]);

Edit: Oh, der Beitrag ist teuflisch
Trainmaster ist offline   Mit Zitat antworten
Alt 22.09.2011, 17:03  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.235
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Ne Trainmaster, Sortierung nutzt da nicht viel, du kannst da nichts sinnvoll so sortieren, dass du perfekt jede Konstellation erwischt. Du kannst nur erhoffen, dass die Kinder immer eine höhere ID als die Parents haben. Sobald du Knoten verschiebst, kriegst du Konstellationen hin, wo es nimmer passt.
Dein Code sortiert auch nicht, er macht zwei Stufen:
1. Stufe: Knoten-Daten sammeln
2. Stufe: Struktur aufbauen
Damit ist auch jede Sortierung egal. Aber richtig, da passt es. Aber mit einem einzelnen Foreach kann man was kaputt schreiben.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist gerade online   Mit Zitat antworten
Antwort


Themen-Optionen
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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Hilfe: datenbank mappen und kopieren M*I*B Datenbanken 29 15.02.2012 21:55
[Erledigt] Funktion zur Ausgabe eines Datensatzes meiner Datenbank AtriX_Fabsy Datenbanken 11 06.05.2009 19:35
Datenbankabfrage Max mit funktion tiego PHP Tipps 2009 4 08.04.2009 21:09
Bilder aus Datenbank / <img>-Tags automatisch generieren Teela PHP Tipps 2009 2 14.03.2009 17:40
[Erledigt] Array innerhalb einer Funktion Marko_Schulze PHP Tipps 2008 8 02.12.2008 18:58
Wert einer Funktion an andere Funktion übergeben Secondary PHP Tipps 2008 14 27.08.2008 10:36
PHP-GTK Tutorial Beitragsarchiv 9 02.11.2005 21:07
[Erledigt] mysql datenbank anlegen...aber WIE??? PHP Tipps 2005-2 0 05.08.2005 19:33
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:32
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:31
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:31
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:29
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:29
[Erledigt] Wie kann ich beliebig viele Werte an eine Funktion übergeben PHP Tipps 2005 11 25.01.2005 10:44
[Erledigt] Funktion in funktion nicht möglich? PHP-Fortgeschrittene 4 28.11.2004 00:14

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
aufbau und aufgaben eines datenbanksystems seite 11

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:07 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum