peter: substr

Beitrag lesen

hallo,
oh, da haste recht.
habs wie folgt geändert:

  
if ($_GET) {  
 $link = $HTTP_GET_VARS["link"];  
 $name = $HTTP_GET_VARS["name"];  
}

Hallo

<?php

$verzeichnis = array (
"portfolio/ordner_1/",
"portfolio/ordner_2/",
"portfolio/ordner_3/"
);

if ($_GET) {
$link = $_GET["link"];
$name = $_GET["name"];
}


>   
> `$_GET`{:.language-php} ist bei Aufruf eines Skripts über einen HTTP-Request immer gesetzt. Ob `$_GET["link"]`{:.language-php} oder `$_GET["name"]`{:.language-php} gesetzt sind, ist trotzdem nicht sicher (nach dem hier vorgestellten Code).  
>   
> > ~~~php

for ($zaehler = 0; $zaehler < count($verzeichnis); $zaehler++) {  

> >  // Verzeichnisnamen extrahieren!  
> >   
> >  $verzeichnisname = explode("/", $verzeichnis[$zaehler]);

$verzeichnisname enthält nun jeweils:

$verzeichnisname[0] = "portfolio";

$verzeichnisname[1] = "ordner_1";
$verzeichnisname[2] = "";


>   
> > ~~~php

 $verzeichnisname = $verzeichnisname[1];  

> >     // Generiere Linknamen: Lösche erste 3 Zeichen und ersetze _ durch Leerzeichen  
> >     $verzeichnisname = substr(str_replace("_", " ", $verzeichnis[$zaehler]), 10, -1);

  1. Woher kommt $verzeichnis? Sollte da nicht $verzeichnisname bzw. $verzeichnisname[1] (Wozu umherkopieren, wenn es auch direkt nutzbar ist?) stehen?

$verzeichnis is das array wo die ordner eingetragen werden.
kann ich das kürzer fassen?
eigentlich möchte ich dass die ordner automatisch ausgelesen werden. jedoch hab ich es noch nicht hinbekommen. es wird mir zwar in ein array geschrieben, jedoch bekomme ich es nicht eingebunden. da muss ich nochmal schauen.

  1. Der Unterstrich wird durch ein Leerzeichen ersetzt (wie gewollt).
  1. Die Ursprungszeichenkette "ordner_1" hat nur 8 Zeichen. Deine Anwendung von substr gibt aber eine Zeichenkette von Position 10 bis zum vorletzten Zeichen zurück, die es nicht geben kann, da die Zeichenkette dafür zu kurz ist.

es wird mir derzeit der komplette pfad ausgegeben. also inkl. portfolio/...
darum sind es 10 zeichen.

  1. Deine Aufgabe "Lösche erste 3 Zeichen und ersetze _ durch Leerzeichen" würde bei richtiger Anwendung "ner_1" ausspucken. Ist *das* gewollt?

nee, es werden die zeichenkette "ordner_1 ausgegebn"

else {

// Link zum Verzeichnis setzen
  echo '<li> ';
  echo "<a href="" . $_SERVER["PHP_SELF"] . "?link=$verzeichnisname">";
  echo ucwords($verzeichnisname) . "</a></li>\n";
}
}


>   
> Benutze `$_SERVER["SCRIPT_NAME"]`{:.language-php} statt `$_SERVER["PHP_SELF"]`{:.language-php}, maskiere `$verzeichnisname`{:.language-php} im Parameterteil der URL mit `urlencode`{:.language-php} und mit `htmlspecialchars`{:.language-php} im Linktext.  
>   
> echo "<li><a href=\"" . $\_SERVER["SCRIPT\_NAME"] . "?link=" . urlencode($verzeichnisname) . "\">" . htmlspecialchars(ucwords($verzeichnisname)) . "</a></li>\n";  
>   
> Tschö, Auge  
>   
  
das ganze is nur das menü.  
derzeit verscueh ich die bilder in den content teil zu laden.  
das mache ich wie folgt:  
  
hier wird die variable zu dem verzeichnis festgelegt. unter anderem lade ich damit txt dateien.  
  
~~~php
$link = $HTTP_GET_VARS['link'] ;  
  
if (!isset($var)) {  
	// Festlegung der leeren VAR $site  
	if (!isset($link)) {  
  
		$link = "ordner-1";  
        }  
        $pfad = "./portfolio/".$link;  
        }  
?>  

nun das bilderladen:

<?php  
// Öffnet ein Unterverzeichnis mit dem Namen "daten"  
  
$imagesfolder = openDir("portfolio/ordner_1");  
// Verzeichnis lesen  
while ($image = readDir($imagesfolder)) {  
// Höhere Verzeichnisse nicht anzeigen!  
 if ($image != "." && $image != "..") {  
  // Dateityp filtern. Es werden nur .php-Dateien angezeigt  
  if (strstr($image, ".gif") ||  
     strstr($image, ".png") ||  
     strstr($image, ".jpg")) {  
   // Dateiendung vom Dateinamen filtern  
   $name = explode(".", $image);  
   // Link erstellen  
   echo "<img src='portfolio/ordner_1/$image' alt='$name[0]' />\n";  
  
  }  
 }  
}  
closeDir($imagesfolder); // Verzeichnis schließen  
?>

das funktioniert auch einwandfrei.
jedoch wenn ich jetzt statt "portfolio/ordner_1" in die openDir funktion die variable $pfad eintragen möchte funktioniert es nicht mehr.

ich verstehe leider nicht warum das nicht funktioniert?!?

viele grüeß
peter