PHP - Fehler beim auslesen aus einem Ordner

Alles, was PHP betrifft, kann hier besprochen werden.

PHP - Fehler beim auslesen aus einem Ordner

Postby basti.sz » 09. October 2006 17:28

Hi Leute...
Ich habe folgendes Problem:

Ich will, dass mir dieses Skript alle .inc Dateien aus einem Ordner nimmt und sie als Menü Punkte auflistet.

Leider wird die ganze Zeit ein Fehler gemeldet.
Das ist das Skript:

Code: Select all
<?php
$dh = opendir(inc\tabs);
while ( gettype( $file = readdir( $dh )) != boolean )
if (substr( $file, -4) == ".inc")
{
$incfile = strtok( $file, "." );
if ($incfile == $_GET['tab'])
$linkname = ">".$incfile."<";
else
$linkname = $incfile;
$url = "<a href="."\""."$PHP_SELF"."?tab="."$incfile"."\"".">"."$incfile"."</a>"."<br>";
print "$url";
}
?>

Der Fehler ist laut der Fehlermeldung in der 2. Zeile, wo er den Ordner öffnet.

Grüße
Basti
basti.sz
 
Posts: 12
Joined: 09. October 2006 17:24

Postby Wiedmann » 09. October 2006 17:46

Der Fehler

Welcher Fehler?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby basti.sz » 09. October 2006 18:12

Sorry... Habe vergessen die Fehlermeldung zu posten
Fehler:

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /home/www/inc/2 Tabs.inc on line 2

Parse error: syntax error, unexpected T_STRING in /home/www/inc/2 Tabs.inc on line 2


Die Situation ist folgende:
- die index.php Datei ist im Hauptordner
- In diese Datei wird mit dem include() Befehl die Datei /inc/2 Tabs.inc
implementiert (Diese Datei beinhaltet das Skript, dass ich davor gepostet)
- Dieses Skript öffnet den Ordner /inc/tabs

Grüße
Basti
basti.sz
 
Posts: 12
Joined: 09. October 2006 17:24

Postby Wiedmann » 09. October 2006 18:31

Code: Select all
$dh = opendir(inc\tabs);

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /home/www/inc/2 Tabs.inc on line 2

Dann schauen wir mal im PHP-Manual nach der Syntax für opendir():
PHP-Manual wrote:resource opendir ( string path [, resource context] )

Erforderlich ist also ein Parameter, der zudem ein String sein muss. Und jetzt schau mal, was ein String ist und was du als Parameter angegeben hast.

(BTW: WIe werden die Verzeichnisse bei *nix getrennt?)
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby basti.sz » 09. October 2006 19:18

100%ig habe ich es leider nicht verstanden. Aber ich habe das Skript ein wenig verkürzt und geändert:

Code: Select all
<?php
     $dh = opendir(/inc/tabs/);
     while ( gettype( $file = readdir( $dh )) != boolean )
     if (substr( $file, -4) == ".inc")     
            {
            $incfile = strtok( $file, "." );
            $url = "<a href="."\"".$_SERVER['PHP_SELF']."?tab="."$incfile"."\"".">"."$incfile"."</a>"."<br>";
            print  "$url";       
           }
?>
basti.sz
 
Posts: 12
Joined: 09. October 2006 17:24

Postby Wiedmann » 09. October 2006 19:36

100%ig habe ich es leider nicht verstanden.

Macht ja nichts wenn dann alles tut. Ansonsten solltest du natürlich die Punkte nachfragen, die du nicht verstanden hast.

Aber ich habe das Skript ein wenig verkürzt und geändert

Tut es jetzt dann mit deiner Änderung/Kürzung?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby basti.sz » 09. October 2006 20:02

Die Fehlermeldung lautet jetzt:
Parse error: syntax error, unexpected '/', expecting ')' in /home/www/inc/2 Tabs.inc on line 2

Was ich nicht verstanden habe:
Was soll ich denn jetzt "opendir (#hier#)" reinschreiben???
basti.sz
 
Posts: 12
Joined: 09. October 2006 17:24

Postby deepsurfer » 09. October 2006 20:10

$dh = opendir(/inc/tabs/);


Code: Select all
$dh = opendir(./inc/tabs/);
<<-- ein punkt noch dahin, da es sonst vom obersten Pfad (rootpfad) ausgegangen wird.
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby basti.sz » 09. October 2006 20:14

Die Zeile sieht jetzt so aus:
Code: Select all
$dh = opendir(./inc/tabs/);


Die Fehlermeldung so:
Parse error: syntax error, unexpected '.', expecting ')' in /home/www/inc/2 Tabs.inc on line 2
basti.sz
 
Posts: 12
Joined: 09. October 2006 17:24

Postby Wiedmann » 09. October 2006 21:27

Code: Select all
$dh = opendir(./inc/tabs/);

Parse error: syntax error, unexpected '.', expecting ')' in /home/www/inc/2 Tabs.inc on line 2

Jetzt les dir meinen vorherigen Post einfach nochmal durch und versuch doch die simple Frage dort zu beantworten (und dir den Rest was ich dort gechrieben hab, auch nochmal durch den Kopf gehen lassen):
Wiedmann wrote:was ein String

:?:

Evtl. solltest du das, vor einer vorschnellen Antwort, im PHP-Manul nachschlagen.

(Das "BTW" aus meinem ersten Post hast ja erledigt.)
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby basti.sz » 09. October 2006 22:09

Leider habe ich gerade einen BlackOut
Ehrlich gesagt habe ich gerade eine 1 jährige Pause gemacht und bin noch nicht so fit.

Es wäre sehr nett, wenn du mir die Lösung verraten könntest.
Bitte

Grüße
Basti
basti.sz
 
Posts: 12
Joined: 09. October 2006 17:24

Postby basti.sz » 09. October 2006 22:25

OK...
ich habe es geschafft... durch ausprobieren

Code: Select all
$dh = opendir("./inc/tabs/");


Grüße und danke für deine Hilfe
Basti
basti.sz
 
Posts: 12
Joined: 09. October 2006 17:24

Postby Wiedmann » 09. October 2006 23:15

Ich wenn diese Zeile jetzt tut, verrate ich dir trotdem die Lösung auf meine Frage:
Ein String ist eine Folge von Zeichen, die durch einfache oder doppelte Anführungsstriche begrenzt ist.
(Quelle: http://de.php.net/manual/de/language.types.string.php)

(Um auf diese Antwort zu kommen, muss man doch nicht "rumprobieren"?)

BTW, hier noch eine weitere Lösung zu deinem Problem:
Code: Select all
<?php
foreach (glob('./inc/tabs/*.inc') as $filename) {
    $filename = basename($filename, '.inc');
    echo "<a href='{$_SERVER['PHP_SELF']}?tab={$filename}'>{$filename}</a><br>\n";
}
?>
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby basti.sz » 10. October 2006 19:47

Danke für deinen Vorschlag!!!

Hat denn dein Beispiel irgendeinen großen Vorteil gegenüber meinem???

Hätte noch eine Frage???
Kann ich das Ergebnis (Die Auflistung der Dateien) nach dem Alphabet sortieren???

Grüße
Basti
basti.sz
 
Posts: 12
Joined: 09. October 2006 17:24


Return to PHP

Who is online

Users browsing this forum: No registered users and 48 guests