Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Methode arbeitet nicht richtig

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Methode arbeitet nicht richtig

    Guten Abend alle mit einander,

    ich zerbreche mir den Kopf, ich komm einfach nicht weiter ...
    Im Moment schreibe ich eine Seite die die Ausgelagerten Lesezeichen von Firefox nimmt und in eine Array schmeißt, die dann sortiert und schlussendlich dann wieder zu so einer Datei macht die dann Firefox wieder einließt.

    Die Funktion die die Lesezeichen jedoch wieder zurück schreiben soll funktioniert nicht so wie gedacht.
    Um folgende Methode handelt es sich:

    PHP-Code:
        public function recreate_bookmarks($array,$depth,$first_dir FALSE){
            
    $time time();
            
    $content NULL;
            foreach(
    $array as $key => $value){
                if(
    is_array($value)){
                    switch(
    $value['TYPE']){
                        case 
    'directory':
                            
    $first_dir TRUE;
                            (
    $first_dir === FALSE)? $content .= '<HR />' NULL;
                            
    $content .= str_repeat('    ',$depth).'<DT><H3 ADD_DATE="'.$time.'" LAST_MODIFIED="'.$time.'">'.$key.'</H3>'."\n".
                                        
    str_repeat('    ',$depth).'<DL><p>'."\n";
                            
    $content .= $this->recreate_bookmarks($value,$depth+1,$first_dir)."\n";
                            
    $content .=    str_repeat('    ',$depth).'</DL><p>'."\n";
                        break;
                        case 
    'entry':
                            
    $content .= str_repeat('    ',$depth).'<DT><A HREF="'.$value['URL'].'" ADD_DATE="'.$value['ADD_DATE'].'" LAST_MODIFIED="'.$time.'">'.$value['NAME'].'</A>';
                        break;
                    }
                }
            }
             return 
    $content;
        } 
    Sie gibt alles richtig aus nur leider immer nur das erste Lesezeichen eines Ordners die Restlichen scheint es zu überspringen. Die Array die Rein kommt ist Korrekt, daran kann es nicht liegen. Ich hab echt nen Brett vorm Kopf. Sitz schon seit zwei Tagen dran und weiß einfach nicht was ich falsch gemacht habe.

    Wenn jemand mir helfen könnte wäre ich wirklich glücklich damit ich endlich weiter komme.
    Ich habe das Gefühl das einfach die foreach Bedingung zu schnell eintritt.
    Solltet ihr die Array brauchen:
    Code:
    Array
    (
        [Lesezeichen-Symbolleiste] => Array
            (
                [test_ordner] => Array
                    (
                        [test_unterordner] => Array
                            (
                                [test_unterunterordner] => Array
                                    (
                                        [TYPE] => directory
                                    )
    
                                [TYPE] => directory
                            )
    
                        [TYPE] => directory
                    )
    
                [Ein Ordner] => Array
                    (
                        [0] => Array
                            (
                                [URL] => http://google.de/
                                [ADD_DATE] => 1391881200
                                [LAST_MODIFIED] => 1391881200
                                [NAME] => G00Gle
                                [TYPE] => entry
                            )
    						
    		[TYPE] => directory
    		)
    				
    	[TYPE] => directory
    	)	
    )
    Das ist nur ein Beispiel das den Aufbau verdeutlichen soll.
    Ich hoffe mit kann jemand helfen, fragt nach falls euch irgendeine Info fehlt.

    Mit Hoffnung,
    Flo

  • #2
    Mir fallen bei deinem Code 2 Dinge auf:
    1. Warum nutzt du keine der von PHP vorgegebenen XML-Funktionen?
    2. Im XML-Standart sind Leerzeichen recht egal, so lange sie nicht als CDATA interpretiert werden.

    Vllt. kannst du deinen Beitrag auch noch um 2 Kleine Bespiele erweitern, die einmal zeigen, wie es aussehen soll und einmal, wie es momentan aussieht. (Also das XML-File)
    [URL="http://php.net/manual/en/migration55.deprecated.php"]mysql ist veraltet[/URL] [URL="http://php-de.github.io/jumpto/mail-class/"]Mails senden: Ohne Probleme und ohne mail()[/URL]
    [PHP]echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>';[/PHP]

    Kommentar


    • #3
      if(is_array($value)){
      Kann es mal sein, dass Du den else-Fall hier komplett veregssen hast?
      [COLOR="#F5F5FF"]--[/COLOR]
      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
      [COLOR="#F5F5FF"]
      --[/COLOR]

      Kommentar


      • #4
        Um Gottes Willen bin ich blöd, ach Herrjemine ....

        Es funktioniert wie es soll aber ich hatte den Zeilenumbruch vergessen was in Kombination mit Notepad++ zu meiner Verwirrung führte .... denn da ist kein Zeilenumbruch ... erst PHP.de hat mich drauf hingewiesen das mein Beispiel zu lang war .... -.- ohh man ist das doof ich bedanke mich und gehe mich kurz vergraben ....

        Kommentar


        • #5
          Jap Nikosch der ist tatsächlich nicht da, brauch er aber auch nicht da der einfach wegfallen kann.

          Kommentar

          Lädt...
          X