Ankündigung

Einklappen
Keine Ankündigung bisher.

verzeichniss auslesen geht nur ohne das man Link angibt

Einklappen

Neue Werbung 2019

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

  • verzeichniss auslesen geht nur ohne das man Link angibt

    Schwer zu erklären wie ich das meine ,aber ich versuche es mal.
    Für mein Navigationsmenü lade ich einige Ordner da rein damit ich nicht andauernd die Navigation ändern muß wenn da neue Datein hinzukommen.
    Das sieht dann bei mehreren Ordner so aus
    PHP-Code:

                        <?php
    $verzeichnis 
    "../hauptseite/spiele/";
    if ( 
    is_dir $verzeichnis )){
        if ( 
    $handle opendir($verzeichnis) ){
            while ((
    $file readdir($handle)) !== false){
            
    $ext pathinfo($filePATHINFO_EXTENSION);
                if(
    $ext == 'html' or $ext == 'php'){
                     echo 
    "<li>";
                     echo 
    '<a href="'.$verzeichnis.$file.'">'.$file.'</a>';
                     echo 
    "</li>";
                }
            }
            
    closedir($handle);
        }
    }
    ?>
    Das geht dann auch. Gehe ich dann in den Spiele Ordner rein ,und möchte von da aus auf die Links gehen geht es nicht mehr. Erst wenn ich die Zeile ändere
    $verzeichnis = "hauptseite/spiele/";
    in diese
    $verzeichnis = "../hauptseite/spiele/";

    Da ich mehrer Ordner so einlese gehen in verschiedenen ebenen einige Auslesungen nicht mehr.
    Wenn ich jetzt aber den ganzen Link angeben könnte
    $verzeichnis = "http://meineSeite.de/hauptseite/spiele/";
    Dann sollte es doch eigentlich gehen oder nicht ? Aber sobald ich einen ganzen Link da eingebe geht gar nix mehr.
    Ich hoffe ihr versteht was ich meine.Gibt es dafür eine Lösung außer alles in ein Ordner zu schmeißen ?
    Ich mach keine Rechtschreibfehler - ich schreib Freestyle!
    Erreichbar in mein Javascript-Forum und in Facebook-Chat

  • #2
    Verwende keine relativen Pfade sondern absolute.

    Kommentar


    • #3
      Ich habe vergessen dazu zu schreiben das das navigations Script im Hauptverzeichnis liegt und auf säntliche Seiten ( Mit Unterordnern ) includiert ist. Aber egal wie ich das mit den Links versuche es klappt nie das es überall geht. Am besten wäre der Komplette Link anzugeben aber dann functioniert das einlesen des Verezichniss nicht mehr.

      Was meinst du mit relativen Pfade ?. Das navigationsScript geht ja alles im Hautordner. Nur sobald ich auf einer Seite im einen Unterordner gehe funktiniert nur noch die hälfte. Ob relative oder nicht , bis jetzt hat nie alles funktioniert ,nur im Haupt verzeichnis
      Ich mach keine Rechtschreibfehler - ich schreib Freestyle!
      Erreichbar in mein Javascript-Forum und in Facebook-Chat

      Kommentar


      • #4
        Um dir dein Problem mal zu erklären bedarf es etwas mehr, aber besser kann das der Artikel include niemals ohne DR.

        Lies es ruhig 2-3 mal durch.

        Kommentar


        • #5
          Ja habe es versucht aber kriege es wohl nicht hin. Was da steht ergibt sogar für mich ein sinn. Doch wenn ich es mit dir versuche ,sucht er die navigtion immer in den Ordner wo ich bin.Aber die navigation liegt ein Ordner davor.Was mache ich da falsch? . Wenn ich die Navigation über iframe einbinden würde,kommt dann das gleiche problem raus ? Wahrscheinlich auch oder.
          Ich sehe es wohl schon kommen das man alle Links da selbst eintragen muß.Oder alles in ein Ordner tun was aber kaum möglich ist weil es insgesamt über 100 index datein gibt. Warum ist Php eigentlich so kompliziert

          EDIT
          hier mal die Fehermeldung
          PHP-Code:
          Warning: include(/users/basti1012/www/homepage-neu/datenbank../navigation.php) [function.include]: failed to open streamNo such file or directory in /users/sebastian1012/www/homepage-neu/datenbank/index.php on line 68

          Warning
          : include() [function.include]: Failed opening '/users/basti1012/www/homepage-neu/datenbank../navigation.php' for inclusion (include_path='.'in /users/sebastian1012/www/homepage-neu/datenbank/index.php on line 68 
          Die navigationsdatei die ich brauche liegt aber im ordner homepage-neu und wie man sieht versucht er die im gleichen Ordner zu suchen,oder sehe ich das jetzt falsch?

          Bevor die frage kommt. "Ja wenn ich die Punkte weg mache kommt das gleiche raus"
          Ich mach keine Rechtschreibfehler - ich schreib Freestyle!
          Erreichbar in mein Javascript-Forum und in Facebook-Chat

          Kommentar


          • #6
            Einfache Bastellösung:

            Du speicherst in Deinem Hauptverzeichnis (also /users/basti1012/www/homepage-neu) eine Date, z.b. path.php. Dort drin:
            PHP-Code:
            $path __DIR__
            Diese Datei inkludierst du in jeder Datei, unschönerweise mit einem relativen Pfad.
            PHP-Code:
            include('../path.php');

            include(
            $path '/navigation.php'); 
            Gibt natürlich elegantere Varianten, aber für Deinen aktuellen Kenntnissstand dürfte das so passen.

            Kommentar


            • #7
              /users/basti1012/www/homepage-neu/datenbank../navigation.php

              Du hast also eine Verzeichniss datenbank.. ?

              Kommentar


              • #8
                Um es dir mal einfach zu erklären.

                Du bist in der 3. Etage und fährst mit dem Fahrstuhl 2 Etagen nach unten, dann bist du in der 1. Etage.
                Wenn du nun jemanden in der 5. Etage besuchen willst dann ist das von der 3. aus gesehen 2 nach oben, aber von der Ersten sind es 4 nach oben!
                Das kann so jedenfalls niemals funktionieren weshalb man Etagen auch immer vom Erdgeschoss ab zählt.

                Genau das musst du mit deinen Verzeichnissen auch machen immer vom document root ausgehend, dann ist es egal wo du gerade bist, weil das ausgehende Basisverzeichnis immer document root ist und von dort ausgehend die Pfade erstellt werden.

                Du musst als deine Pfade schon ausgehend vom document root in die DB eintragen, dann kann dir das was dir gerade passiert niemals mehr widerfahren.

                Beispiel

                PHP-Code:
                <?php

                // Pfad aus DB
                $path "/hauptseite/spiele/";

                // Dateiname aus DB
                $datei "mygame.php";

                $scheme "http://";
                $host $_SERVER['HTTP_HOST'];

                // Als URL
                echo $scheme $host $path $datei;

                echo 
                "<br>\n";

                // Als include Aufruf
                $includepath __DIR__ $path $datei;

                echo 
                $includepath;

                echo 
                "<br>\n";

                // Als Link
                echo '<a href="' $scheme $host $path $datei '"> als LINK </a>';
                ?>
                Ausgabe lokal auf meinem Testrechner

                http://localhost/hauptseite/spiele/mygame.php
                C:\wamp\www\test/hauptseite/spiele/mygame.php
                als LINK

                und hier mal hochgeladen auf einem freien Server

                http://mhdwr.bplaced.net/hauptseite/spiele/mygame.php
                /users/mhdwr/www/de/hauptseite/spiele/mygame.php
                als LINK

                Kommentar


                • #9
                  Zitat von tomBuilder Beitrag anzeigen
                  Du hast also eine Verzeichniss datenbank.. ?
                  Nee keine Datenbank.Der Ordner hieß jetzt gerade so,wahr wahrscheinlich blöd gewählt gerade den hier zu posten.
                  protestix ,das mit den Fahrstuhl ist ein schöner vergleich.
                  Wie ich von welchen Ordner auf andere Ordner zugreifen kann ,das bekomme ich hin.Das wäre wohl nicht das problem ,,wenn ich der Navigation alles verlinkt wäre.

                  Ich habe nur das Problem ,weil das NavigationsScript beinhaltet mehrere DIR aufrufe ,was verschiedene Ordner auf verschiedene Ebenen durchsucht.So das die Navigation immer aktuell ist. Jetzt wir die Navigation überall mit eingebunden. Auf den verschiedene ebenen werden jetzt die DIR aufrufe auf verkehrte Ordner angewendet weil die Ordner es dann nicht mehr gibt. Im rootverzeichnis geht noch alles,sobald ich einen Ordner betrette funktionieren die DIR aufrufe nicht mehr.

                  Achman ,ist schwer zu erklären was ich meine. Ich versuche erstmal das was ihr geschrienben habt vieleicht habt ihr mich doch richtig verstanden nur ich euch wieder nicht

                  Melde mich später wie es dann aussieht ob es geklappt habt. Danke euch erstmal
                  Ich mach keine Rechtschreibfehler - ich schreib Freestyle!
                  Erreichbar in mein Javascript-Forum und in Facebook-Chat

                  Kommentar


                  • #10
                    Du hast also eine Verzeichniss datenbank.. ?
                    Zitat von basti1012 Beitrag anzeigen

                    Nee keine Datenbank.Der Ordner hieß jetzt gerade so,wahr wahrscheinlich blöd gewählt gerade den hier zu posten.
                    Hä ?

                    dotdot ?

                    Kommentar


                    • #11
                      So ich habe eine Lösung gefunden die geht.
                      Wenn ich jetzt sage wie ich es gemacht habe dann sagt ihr bestimmt "Achso meinte er das ".
                      Ich weiß meine erklärungen sind meistens Mist.

                      Ich erkläre nochmal kurz das Problem mal anders.


                      Im root Vezeichniss ist die navigation die mit sochen Codeschnipsel
                      PHP-Code:
                      $verzeichnis="../hauptordner/spiele/";
                      if ( 
                      is_dir $verzeichnis )){
                          if ( 
                      $handle opendir($verzeichnis) ){
                              while ((
                      $file readdir($handle)) !== false){
                              
                      $ext pathinfo($filePATHINFO_EXTENSION);
                                  if(
                      $ext == 'html' or $ext == 'php'){
                                       echo 
                      "<li>";
                                       echo 
                      '<a href="'.$link.'/'.$verzeichnis.$file.'">'.$file.'</a>';
                                       echo 
                      "</li>";
                                  }
                              }
                              
                      closedir($handle);
                          }

                      zusammen gebaut wird.Dieser Codeschnipsel kommt 3 bis 4 mal vor der auf verschiedene Ebene die Links aus den Ordnern holt.

                      rufe ich das Script jetzt im Browser auf ,ist alles gut und zeigt auch alles an.
                      Includiere ich das Scriptin einer Datei die im root Verzeichniss liegt ,geht das Script auch.
                      Includiere ich das Script in einer Datei ,die nicht im root liegt ,wird die Navigation zwar angezeigt aber die Ordner Inhalte werden nicht mehr angezeigt.

                      So ,vieleicht ist es jetzt einfacher zu verstehen.
                      Ich habe eine Lösung gefunden die zwar geht,aber bestimmt nicht den Standart entspricht

                      PHP-Code:

                      <?php
                      $link
                      ='http://beispiel.de';
                      $mengegetcwd();

                      $zeichnis''.$menge.'';

                      $mengebackflasch=substr_count($zeichnis'/');
                      if(
                      $mengebackflasch==6){
                       
                      $verzeichniss='../../../';
                      }else if(
                      $mengebackflasch==5){
                       
                      $verzeichniss='../../';
                      }else if(
                      $mengebackflasch==4){
                       
                      $verzeichniss='../';
                      }else if(
                      $mengebackflasch==3){
                       
                      $verzeichniss='';
                      }




                      $verzeichnis $verzeichniss."hauptseite/spiele/";

                      if ( 
                      is_dir $verzeichnis )){
                          if ( 
                      $handle opendir($verzeichnis) ){
                              while ((
                      $file readdir($handle)) !== false){
                              
                      $ext pathinfo($filePATHINFO_EXTENSION);
                                  if(
                      $ext == 'html' or $ext == 'php'){
                                       echo 
                      "<li>";
                                       echo 
                      '<a href="'.$link.'/'.$verzeichnis.$file.'">'.$file.'</a>';
                                       echo 
                      "</li>";
                                  }
                              }
                              
                      closedir($handle);
                          }
                      }
                      ?>
                      So funktioniert das jetzt und alle Links aus allen Ordnern werden angezeigt. Vieleicht versteht man es so besser und ihr habt dafür eine bessere Idee.
                      Die idee aus #6 habe ich schon versucht die klappte irgendwie nicht.
                      Probiere jetzt aber nochmal die Idee aus #8 vieleicht klappt das ja wenn ich es richtig mache
                      Ich mach keine Rechtschreibfehler - ich schreib Freestyle!
                      Erreichbar in mein Javascript-Forum und in Facebook-Chat

                      Kommentar


                      • #12
                        $mengebackflasch ? Was ist das denn?

                        Du hast nichts von dem verstanden, was man dir hier geantwortet hat.
                        Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

                        Kommentar


                        • #13
                          Zitat von uha Beitrag anzeigen
                          $mengebackflasch ? Was ist das denn?

                          Du hast nichts von dem verstanden, was man dir hier geantwortet hat.
                          Jaein. Verstanden so halbwegs. Wie das mit den relativen Links geht ( Fahrstuhl system ) weiß ich ja .Nur alles was ich versucht habe ,die geposteten Sachen auf mein Script anzuwenden haben nicht zum Ziel geführt. Habe mir die Ergebnisse immer als echo oder var dump anzeigen lassen und konnte sehen das das Navigations Script wieder im Falschen Ordner sucht . Ich weiß nicht was ich da falsch mache? Kein plan warum post 6 und 8 nicht klappen.

                          Wie müßte mein Script den aussehen damit ich es egal wo auf den Server auch einbinden kann und trotzdem die ganzen Ordner ausgelesen werden ? Bis jetzt läuft nur mein Pfusch
                          Ich mach keine Rechtschreibfehler - ich schreib Freestyle!
                          Erreichbar in mein Javascript-Forum und in Facebook-Chat

                          Kommentar


                          • #14
                            Üblicherweise hat meinen einen Einstiegspunkt in eine Anwendung, das ist die index.php. Hier weißt du mittels __DIR__ wo sie sich befindet und davon ausgehend kannst du dann alles weitere machen.

                            Mittels .htaccess leitest du alle Anfragen an diese index.php um. Hier entscheidest du dann, was gemacht wird. Auch kurz "Routing" genannt.

                            Die .htaccess könnte so aussehen:
                            Code:
                            RewriteEngine On
                            RewriteCond %{REQUEST_FILENAME} -s [OR]
                            RewriteCond %{REQUEST_FILENAME} -l [OR]
                            RewriteCond %{REQUEST_FILENAME} -d
                            RewriteRule ^.*$ - [NC,L]
                            RewriteRule ^.*$ index.php [NC,L]

                            Kommentar

                            Lädt...
                            X