Verzeichnispfad aus Verzeichnistabelle erstellen?

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

  • Verzeichnispfad aus Verzeichnistabelle erstellen?

    Hallo,

    in einem PHP Script sollen User Ordner und Unterordner anlegen können und darin Bilder hochladen, etwa so wie bei Yahoo! Groups.

    Diese Ordner werden natürlich nicht real angelegt, sondern per mysql-Datenbank.

    Die Tabelle sieht dann so aus:

    id Name pid ebene
    1 Hauptverzeichnis 0 0
    2 Unterverzeicnis1 1 1
    3 Unterverzeicnis2 2 2

    pid = parentid = Id des Verzeichnisses, in den sich das Unterverzeichnis befindet. Unterverzeichnis1 befindet sich im Hauptverzeichnis, Unterverzeichnis2 in Unterverzeichnis 1 etc.

    Meine Frage ist, wie kann ich diese Verzeichnisse mittels einer Schleifenkonstruktion so aus der Tabelle auslesen, dass der Verzeichinspfad dargestellt wird?

    z.B. für Unterverzeichnis 2
    Hauptverzeichnis/Unterverzeicnis1/Unterverzeicnis2

    Da ich in neu in diesem Forum bin, weiss ich nicht, ob es dieses Problem schon mal gegeben hat. Wenn ja wäre ich auch für die entsprechenden Suchbegriffe dankbar.

    tian
    Zuletzt geändert von tian; 23.01.2004, 11:14.

  • #2
    Wo ist das Problem?
    PHP-Code:
    $verzeichnis_id 3;

    $pfad = array();
    while ((int)
    $verzeichnis_id)
    {
      
    $sql mysql_query("select pid,name from verzeichnisse where id=$verzeichnis_id");
      list(
    $verzeichnis_id$name) = mysql_fetch_row($sql);
      
    array_unshift($pfad$name)
    }
    echo 
    implode('/'$pfad); 
    statt array-unshift geht auch
    $pfad[] = $name;
    und
    echo implode('/', array_reverse($pfad));
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      Ich hätte da noch eine Frage:

      Wie kann man es anstellen, das man nicht nur den Pfad erhält, sondern aus diesem einen Link macht, der, wie in diesem Fall die jeweilige $verzeichnis_id als Parameter enthält?

      Danke!
      ralf

      Kommentar


      • #4
        html kannst du schon. oder?

        Code:
        <a href="...">...</a>
        bei den punkten kannst du nun einsetzen was du willst....
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Tut mir leid, habe mich wohl etwas unklar ausgedrückt.

          Wenn z.B. der Pfad "Hauptverzeichnis/Unterverzeichnis1/Unterverzeichnis2" ist, sollte der Code dafür in etwa so aussehen:
          <a href='index.php?option=test&verzeichnis_id=$irgendwas1>$irgendwas2 (sollte den Namen enthalten, hier: Hauptverzeichnis)</a><a href='index.php?option=test&verzeichnis_id=$irgendwas3>$irgendwas4 (hier: Unterverzeichnis1) ....

          Was ich gerne hätte, sind die einzelnen Werte des Arrays als Variablen, dass ich diese in den Pfad einbauen kann, nicht mit implode einen einzigen String.
          Ich habe ein Wenig im PHP Manual geschmökert, foreach und each scheinen interessant zu sein, helfen mir aber auch nicht.

          Danke!
          ralf

          Kommentar


          • #6
            Original geschrieben von zx9r
            [...], helfen mir aber auch nicht.
            und jetzt soll ich dir den code schreiben?


            überlege dir deine antwort gut
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Wär schon dankbar, wenn du mir die Richtung weisen könntest.

              Ich spiele mich jetzt schon länger mit dem Code, habe probiert, bevor die while Klammer geschlossen wird, echo" $pfad[0]<br>"; einzufügen. Daraus könnte man auch schöne Links bauen, das Problem ist nur, die Reihenfolge ist verkehrt, sprich zuerst kommen die Unterverzeichnisse und erst zum Schluss das Hauptverzeichnis.
              Würde bei Sprachen, die man von rechts nach links schreibt ja funktionieren, aber im Deutschen...

              Danke!
              ralf

              Kommentar


              • #8
                zeig mal was du hast an code. bitte nutzte die php-tags.
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  PHP-Code:

                  $pfad 
                  = array();
                  while ((int)
                  $parcat)
                  {
                    
                  $sql mysql_query("select parcat,catname from ".$mosConfig_dbprefix."ca_cat where catid=$parcat");
                    list(
                  $parcat$catname) = mysql_fetch_row($sql);
                    
                  array_unshift($pfad$catname);

                  echo
                  $pfad[0]<br>";

                  }


                  //echo implode('->', $pfad); 

                  Kommentar


                  • #10
                    so ?

                    PHP-Code:
                    $pfad = array();
                    while ((int)
                    $parcat)
                    {
                        
                    $res mysql_query("SELECT
                                                parcat,
                                                catname
                                            FROM
                                                "
                    .$mosConfig_dbprefix."ca_cat
                                            WHERE
                                                catid = "
                    .$parcat."
                                            LIMIT 1"
                    )
                                    or die(
                    mysql_error());
                        list(
                    $parcat$catname) = mysql_fetch_row($res);
                        
                    $pfad[] = array('id' => $parcat,
                                        
                    'name' => $catname);
                        
                        
                    // entweder hier die ausgabe.
                        
                    echo '<a href="index.php?id='.$parcat.'">'.$catname.'</a>';
                    }

                    // oder nach der while-schleife alles durchgehen.
                    for ($i=0;$i<count($pfad);++$i)
                        echo 
                    '<a href="index.php?id='.$pfad[$i]['id'].'">'.$pfad[$i]['name'].'</a>'
                    Zuletzt geändert von Abraxax; 27.01.2004, 00:15.
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      Danke für deine Hilfe!!!

                      Es klappt schon fast, nur die Reihenfolge ist noch verkehrt...

                      Du kannst das Skript hier in Aktion sehen.

                      Ich habe die erste Version genommen, bei der zweiten kommt folgende Meldung: Parse error: parse error, unexpected ']', expecting T_VARIABLE or '$'

                      Danke!
                      ralf

                      Kommentar


                      • #12
                        definiere: reihenfolge verkehrt.

                        fehler im 2. beispiel ist behoben. das hättest du auch selber finden können.

                        ich hatte $pfad[$].... geschrieben. es hätte aber $pfad[$i]... (mit dem 'i') heissen müssen.
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #13
                          Die Reihenfolge, in der die Links angezeigt werden, ist verkehrt.
                          Anstatt der Reihenfolge "Cars European VW Diesel" wird es so angezeigt: "Diesel VW European Cars". Schau am Besten auf meiner Testseite nach, dann wirst du sofort merken, was ich meine.

                          Das mit $i statt $ wäre mir wahrscheinlich nie aufgefallen...

                          Danke!
                          ralf

                          Kommentar


                          • #14
                            Original geschrieben von zx9r
                            Die Reihenfolge, in der die Links angezeigt werden, ist verkehrt.
                            vergiss anzeigemöglichkeit 1.

                            mache vor der möglichkeit 2 diese zeile noch rein. dann sollte es passen.

                            PHP-Code:
                            $pfad array_reverse($pfad); 
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              DANKE VIELMALS !!!!!!

                              Läuft perfekt !!!!

                              Um beim aktuellen Verzeichnis keinen Link zu haben, habe ich in die for Schleife noch diese Zeile eingebaut:

                              PHP-Code:
                              if ($i == (count($pfad)-1)) echo $pfad[$i]['name']; 
                              Danke!!
                              ralf

                              Kommentar

                              Lädt...
                              X