switch in schleife?!

-Ener-

Erfahrenes Mitglied
PHP:
switch($_GET['do'])
{
foreach($files as $file) {

 

case '$file':
 include ("dir.php?pfad=$file");
break;

}
default:
echo ("dir.php?pfad=$file<br>");
break;
}

funktioniert nicht, wie könnte man eine switch klasse dynamisch in einer schleife machen?
 
Was willst du denn damit erreichen? Das es nicht funktioniert ist klar - sind ja einige Fehler drin.

p.s.: Netiquette vergessen? ;)
 
Ich will die switchs dynamisch gestalten, $file sind Ordner die ausgelesen werden... ich hatte mir vorgestellt wenn es z.B 2 Ordner gibt, der eine heißt "Test" und der andere "Hallo" das so ein switch Zustande kommt, und zwar dynamisch:

PHP:
switch($_GET['do'])
{
case 'Test':
include ("http://www.trancebeats.com/tip/dir.php?pfad=Test");
break;
case 'Hallo':
include ("http://www.trancebeats.com/tip/dir.php?pfad=Hallo");
break;
default:
echo ('bla bla bla');
break;
}

Ich hoffe du verstehst?!
 
Das ist IMHO von der Syntax her nicht möglich.
Du kannst in der foreach-Schleife eine if-Abfrage machen.
Aber ich glaube dies macht auch, was Du vorhast:
PHP:
if (in_array($_GET['do'],$files)) {
    include ("http://www.trancebeats.com/tip/dir.php?pfad="
        .$_GET['do']);
} else {
    echo ('bla bla bla');
}
Gruß hpvw
 
Also ich habe es jetzt so:

PHP:
foreach($files as $file) {
if (in_array($_GET['do'],$file)) { 
   echo("http://www.trancebeats.com/tip/dir.php?pfad=".$_GET['do']); 
} 
else { 
	echo ('bla bla bla'); } 
 
}
funktioniert aber irgendwie nicht... wenn ich do=1 (hab nen Ordner der 1 heißt) eingeb kommt garnix, ansonsten ohne ?do= kommt das erhoffte bla bla bla...
 
Schreibe statt dem Code in Deinem letzten Post mal exakt den Code, der in meinem Post stand.

Gruß hpvw
 
Habe ich, funktionierte nicht hier mal des ganze Script zusammen:

home.php:

PHP:
<?php
$uri = $_SERVER['REQUEST_URI']; 
$dir = '/homepages/7/d101401614/htdocs/'.$uri; 
$as = str_replace("home.php", "", "$dir"); 
$verz = opendir($as); 
$files = array(); 
while($file = readdir($verz)) { 
	if($file != '.' and $file != '..' and $file != 'back.gif' and $file != 'copy.gif' and $file != 'dir.php' and $file != 'folder.gif' and $file != 'index.php' and $file != 'popup_pic.php' and $file != 'rahmen.gif' and $file!= 'table_01.gif' and $file!= 'table_02.gif' and $file!= 'table_03.gif' and $file!= 'table_04.gif' and $file!= 'table_05.gif' and $file!= 'bg.jpg' and $file!= 'index.html' and $file!= 'index1.jpg' and $file!= 'index2.jpg' and $file!= 'home.php' and $file!= 'rahmen2.gif' and $file!= 'Bilder' and $file!= 'home2.php') { 
		$files[] = $file; 
	} 
 
} 
 
closedir($verz); 
sort($files, SORT_DATE); 
 
foreach($files as $file) {
if (in_array($_GET['do'],$files)) { 
	include ("http://www.trancebeats.com/tip/dir.php?pfad=" 
		.$_GET['do']); 
} else { 
	echo ('bla bla bla'); 
} 
 
} 
 
?>

Dazu noch die dir.php auf die es hinaus läuft:

PHP:
<?php
$pic_zeile = "9999";
$datei_end = array("gif", "jpg", "JPG");
$groesse = "146";
$name_anz = "ja";
$border = "0";
$gd_lib = "2.0";
 
$font = "<font face=verdana size=2>";
$datei_name = $_SERVER["PHP_SELF"];
$fileplace = ".";
if (isset($pfad) || empty($pfad)) echo "";
function createThumb($img_src, $img_width , $img_height, $des_src, $folder) {
	 if (!file_exists($folder. "/" .$des_src)) {
		 umask(0000);
		 if (!mkdir($folder. "/" .$des_src, 0777)) {
			die("Konnte Ordner ".$folder. "/" .$des_src." nicht erstellen!");
		 }
	 }
	 $im = imagecreatefromjpeg($folder. "/" .$img_src);
	 list($src_width, $src_height) = getimagesize($folder. "/" .$img_src);
	 if($src_width >= $src_height) {
		 $new_image_width = $img_width;
		 $new_image_height = $src_height * $img_width / $src_width;
	 }
	 if($src_width < $src_height) {
		 $new_image_height = $img_width;
		 $new_image_width = $src_width * $img_height / $src_height;
	 }
	 if ($gd_lib == "1.6") {
		 $new_image = imagecreate($new_image_width, $new_image_height);
		 imagecopyresized($new_image, $im, 0, 0, 0, 0, $new_image_width,$new_image_height, $src_width, $src_height);
	 }
	 else {
		 $new_image = imagecreatetruecolor($new_image_width, $new_image_height);
		 imagecopyresampled($new_image, $im, 0, 0, 0, 0, $new_image_width,$new_image_height, $src_width, $src_height);
	 }
	 imagejpeg($new_image, $folder. "/" .$des_src. "/" .$img_src, 100);
}
function name_of_file($filename) {
	 $len	= strlen(strrchr($filename,"."));
	 $ganz = strlen($filename) + 1;
	 $grafik = substr($filename,$ganz-$len);
	 return $grafik;
}
$i	 = 0;
$zaehler = 0;
if (!isset($pfad) ||
		empty($pfad)) {
	 $verz = opendir ($fileplace);
	 while ($file = readdir ($verz)) {
		 if (name_of_file($file) == "" &&
			$file				!= "." &&
			$file				!= ".." ) {
			$zaehler++;
		 }
	 }
	 closedir($verz);
}
else {
	 if (file_exists($pfad)) {
		 $verz = opendir ($pfad);
 
		 while ($file = readdir ($verz)) {
			$filegrafik = strtolower(name_of_file($file));
			if (in_array ($filegrafik, $datei_end)) {
			 $i++;
			 $zaehler++;
			 if ($i == $pic_zeile + 1) {
				 $i = 1;
 
			 }
 
if (!file_exists($pfad. "/thumbnails/" .$file))
			 createThumb($file, $groesse, $groesse, "thumbnails", $pfad);
 
$size = getimagesize($pfad. "/" .$file);
 
$picurl = rawurlencode ($pfad);
$picfile = rawurlencode ($file);
 
 
 
echo "<script type=text/javascript>
 
function popup_pic$i() {
bild =
window.open('popup_pic.php?src=$picurl&file=$picfile', 'bild', 'width=$size[0]h,height=$size[1]');
bild.focus();
}
</script>";
 
 
 
 
			 echo "<td background=".$picurl."/thumbnails/".$picfile."><a href=javascript:popup_pic$i() onmouseover=\"status='Folder $picurl Image $i';return true;\" onclick=\"status='Folder $picurl Image $i';return true;\"><img src=rahmen.gif border=0 width=88 height=70></a>";
 
			 echo "</td>";
 
 
 
 
 
if($zaehler==5){
echo('</tr><tr>');
$zaehler=0;
}
 
			 if ($i == $pic_zeile + 1) {
				 $i = 1;
 
			 }
			}
		 }
 
		 closedir($verz);
	 }
 
}
?>

Wenn ich die dir.php normal aufrufe mit dir.php?pfad=1 dann gehts aber in der home.php gehts net. P.S. die Variante aus $files $file zu machen in deinem Schnipsel funktionierte ebenso wenig... =)
 
1. Hast Du immer noch die foreach-Schleife um das if-else-Konstrukt.
2. Solltest Du mal nicht über http... einbinden, sondern den Pfad zur dir.php direkt von einbindenden Skript aus angeben und vorher $pfad setzen (oder in dir.php direkt auf $_GET['do'] zugreifen).

Gruß hpvw
 
Also einfach die foreach Schleife entfernen? Da bekomm ich immer als echo das bla bla bla...auch wenn ich http... weglasse (also gleich dir.php?pfad=....) einsetze. Komischerweise sehe ich in der dir.php keine $_GET funktion die das pfad=... auswertet... siehst du das? Wo müsste ich des denn einbauen und wie?
 
Versuch mal so (vorrausgesetzt, dir.php und home.php liegen im selben Verzeichnis):
PHP:
if (in_array($_GET['do'],$files)) {
    $pfad=$_GET['do'];
    include ("dir.php");
} else {
    echo ('bla bla bla');
}
Wenn Du Dir [phpf]in_array[/phpf] mal durchliest, dann wirst Du verstehen, warum das foreach völlig überflüssig ist.
 
Zurück