[PHP]Ordnen

01/06/2012 09:37 DerSaboteur#1
Hey epvpler

ich will das hier nach dem Alphabet ordnen.. wie genau mach ich das jetzt?

PHP Code:
<?php
 
// Verzeichnisname angeben
$verzeichnisname "Bilder";
// Öffnet das Verzeichnis
$verzeichnis openDir($verzeichnisname);
// Verzeichnis lesen
while ($file readDir($verzeichnis)) {
 
// Dateityp filtern
 
if (strstr($file".png")) {
  
// Datei zum lesen öffnen
  
$datei fOpen($verzeichnisname "/" $file"r");
  
// 1000 Zeichen lesen
  
$inhalt fRead($datei1000);
  
// Datei schließen
  
fClose($datei);
  
// Titelnamen extrahieren
  
preg_match("/<title>(.*?)</i" $inhalt $titel);
  
// Link erstellen
  
echo "<a href=\"Bilder/$file\">$file</a><br>\n";
  unset(
$titel[1]); // Variable löschen
 
}
}
closeDir($verzeichnis); // Verzeichnis schließen
?>
Mfg DerSaboteur
01/06/2012 11:35 JacK le chilla#2
Hm du musst erst alle in ein array reinschreiben lassen und dann sortiert ausgeben ;)

Hier dann wie du das array ausgeben solltest ;) ist unabhängig von groß und kleinschreibung :)

Quote:
<?php
$tiere = array("biene", "Zebra", "elefant", "Affe");
sort(strtolower($tiere));
foreach($tiere as $blubb => $tier){
echo $tier."<br />";
}
01/06/2012 12:28 Whoknowsit#3
PHP Code:
<?php
// Verzeichnisname angeben 
$verzeichnisname 'Bilder';

// Variablen definieren
$files = array();

// Öffnet das Verzeichnis 
if(!($dp = @opendir($verzeichnisname))) die ('Kann Verzeichnis "'.$verzeichnisname.'" nicht öffnen.');

// Verzeichnis lesen
while($file readdir($dp)) {
// Dateityp filtern 
    
if (strstr($file'.png')) {
        
// Ein Array aus den gefundenen Objekten erstellen 
        
$files[] = $file;
    }
}
// Verzeichnis schließen 
closedir($dp);
// Array sortieren
krsort($files);

// Array ausgeben
foreach ($files as $file) {
    
// Datei zum lesen öffnen 
    
$datei fOpen($verzeichnisname '/' $file'r'); 
    
// 1000 Zeichen lesen 
    
$inhalt fRead($datei1000); 
    
// Datei schließen 
    
fClose($datei); 
    
// Titelnamen extrahieren 
    
preg_match('/<title>(.*?)</i' $inhalt $titel); 
    
// Link erstellen 
    
echo "<a href=\"Bilder/$file\">$file</a><br>\n";
}
?>
Je nachdem, was genau du vor hast, geht das aber auch einfacher ;)
01/06/2012 13:34 DerSaboteur#4
Quote:
Originally Posted by Whoknowsit View Post
PHP Code:
<?php
// Verzeichnisname angeben 
$verzeichnisname 'Bilder';

// Variablen definieren
$files = array();

// Öffnet das Verzeichnis 
if(!($dp = @opendir($verzeichnisname))) die ('Kann Verzeichnis "'.$verzeichnisname.'" nicht öffnen.');

// Verzeichnis lesen
while($file readdir($dp)) {
// Dateityp filtern 
    
if (strstr($file'.png')) {
        
// Ein Array aus den gefundenen Objekten erstellen 
        
$files[] = $file;
    }
}
// Verzeichnis schließen 
closedir($dp);
// Array sortieren
krsort($files);

// Array ausgeben
foreach ($files as $file) {
    
// Datei zum lesen öffnen 
    
$datei fOpen($verzeichnisname '/' $file'r'); 
    
// 1000 Zeichen lesen 
    
$inhalt fRead($datei1000); 
    
// Datei schließen 
    
fClose($datei); 
    
// Titelnamen extrahieren 
    
preg_match('/<title>(.*?)</i' $inhalt $titel); 
    
// Link erstellen 
    
echo "<a href=\"Bilder/$file\">$file</a><br>\n";
}
?>
Je nachdem, was genau du vor hast, geht das aber auch einfacher ;)

Ich will einfach nur die dateien anzeigen die in dem ordner drin sind.. und alphabetisch ordnen.. nur tut er das nicht mit deinem script.. also die png files anzeigen + ordnen
01/06/2012 20:21 Whoknowsit#5
Doch, tut er. Aber so Zeilen wie

PHP Code:
preg_match('/<title>(.*?)</i' $inhalt $titel); 
haben dann auch nichts dort zu suchen. Wenn's wirklich nur das ist, dann reicht das auch so:

PHP Code:
<?
// Verzeichnisname angeben  
$verzeichnisname 'Bilder';

// Verzeichnis auslesen und Ausgabe erzeugen
foreach(glob($verzeichnisname '/{*.png,*.gif}'GLOB_BRACE) as $image) {
    echo 
"<a href=\"{$verzeichnisname}/{$image}\">{$image}</a><br>\n"
}
?>
Das könnte man nun auch rekursiv machen (also auch Unterordner einbeziehen) und auch für weitere Dateiformate, oder auch alle Dateien (dazu einfach {*.png,*.gif} durch {*.*} ersetzen)
01/06/2012 21:35 DerSaboteur#6
Quote:
Originally Posted by Whoknowsit View Post
Doch, tut er. Aber so Zeilen wie

PHP Code:
preg_match('/<title>(.*?)</i' $inhalt $titel); 
haben dann auch nichts dort zu suchen. Wenn's wirklich nur das ist, dann reicht das auch so:

PHP Code:
<?
// Verzeichnisname angeben  
$verzeichnisname 'Bilder';

// Verzeichnis auslesen und Ausgabe erzeugen
foreach(glob($verzeichnisname '/{*.png,*.gif}'GLOB_BRACE) as $image) {
    echo 
"<a href=\"{$verzeichnisname}/{$image}\">{$image}</a><br>\n"
}
?>
Das könnte man nun auch rekursiv machen (also auch Unterordner einbeziehen) und auch für weitere Dateiformate, oder auch alle Dateien (dazu einfach {*.png,*.gif} durch {*.*} ersetzen)
mh ja das oben war fertiges Script ausem internet.. aus google ich habe von php-kurs.com alle cds bestellt ich lerne das im mom noch^^

ordnet sich das den? ich seh dort kein sort()

€dit : Der gibt beim link 2 mal den selben ordner aus und ich weiß nicht wieso ô.ô
01/07/2012 13:38 Whoknowsit#7
War mein Fehler ;)

PHP Code:
<?
// Verzeichnisname angeben  
$verzeichnisname 'Bilder';

// Verzeichnis auslesen und Ausgabe erzeugen
foreach(glob($verzeichnisname '/{*.png,*.gif}'GLOB_BRACE) as $image) {
    echo 
"<a href=\"{$image}\">{$image}</a><br>\n"
}
?>
Schau dir die Funktion "glob" an, dann weißt du, warum du kein sort() siehst :)
01/07/2012 20:11 DerSaboteur#8
Quote:
Originally Posted by Whoknowsit View Post
War mein Fehler ;)

PHP Code:
<?
// Verzeichnisname angeben  
$verzeichnisname 'Bilder';

// Verzeichnis auslesen und Ausgabe erzeugen
foreach(glob($verzeichnisname '/{*.png,*.gif}'GLOB_BRACE) as $image) {
    echo 
"<a href=\"{$image}\">{$image}</a><br>\n"
}
?>
Schau dir die Funktion "glob" an, dann weißt du, warum du kein sort() siehst :)
dankescheon ich werd mal bei php.net lesen was diese "glob" ist ;)

€dit: GLOB_BRACE - {a,b,c} prüft auf 'a', 'b', oder 'c'
01/07/2012 22:57 Whoknowsit#9
Glob sortiert automatisch, es sei denn, GLOB_NOSORT ist gesetzt.

Nicht mehr und nicht weniger :)
01/08/2012 03:14 DerSaboteur#10
Quote:
Originally Posted by Whoknowsit View Post
Glob sortiert automatisch, es sei denn, GLOB_NOSORT ist gesetzt.

Nicht mehr und nicht weniger :)
Jüps! :D dankeschoen

gibs ne möglichkeit nur die Titel anzuzeigen? und nicht gleich den ganzen link dahin? im mom zeigt der mir "bilder/xxxxxx.png" und vill eine eine image vorschau? z.B.

BILD
xxxxxx.png (mit verlinkung)

sorry das ich soviel verlange :P
01/08/2012 13:16 Whoknowsit#11
Um nur den Dateinamen anzeigen zu lassen, machst du folgendes:

PHP Code:
echo "<a href=\"{$verzeichnisname}/{$image}\">".basename($image)."</a><br>\n"
Wenn du die Bilder anzeigen lassen möchtest, an Stelle der Dateinamen, könntest du das so machen:

PHP Code:
echo '<a href="'.$verzeichnisname.'/'.$image.'"><img src="'.$image.'" width="100" style="border:none" alt="'.basename($image).'" title="'.basename($image).'" /></a>&nbsp;&nbsp;&nbsp;'
Am Ende könnte das Ganze dann so aussehen:

PHP Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Eine kleine Bildergalerie</title>

        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <meta http-equiv="Content-Language" content="de" />
        <meta http-equiv="Content-Script-Type" content="text/javascript" />
        <meta http-equiv="Content-Style-Type" content="text/css" />
        <meta http-equiv="Pragma" content="no-cache" />
        <meta http-equiv="Expires" content="-1" />
        <meta http-equiv="Cache-Control" content="no-cache" />        
        
        <style type="text/css">
        .photo-link {
            border:1px solid #ccc;
            display:block;
            width:200px;
            float:left;
            margin:5px;
            padding:5px;
        }

        .photo-link:hover {
            border-color:#999;
        }
        </style>
    </head>
    <body>

    <?
    
// Verzeichnisname angeben  
    
$verzeichnisname 'Bilder';

    
// Verzeichnis auslesen und Ausgabe erzeugen
    
foreach(glob($verzeichnisname '/{*.png,*.gif}'GLOB_BRACE) as $image) {
        echo 
'<a href="'.$verzeichnisname.'/'.$image.'" class="photo-link"><img src="'.$image.'" width="100" alt="'.basename($image).'" title="'.basename($image).'" /></a>&nbsp;&nbsp;&nbsp;';
    }
    
?>
    
    </body>
</html>
01/08/2012 20:50 DerSaboteur#12
Code:
Warning: Invalid argument supplied for foreach() in /var/www/web127218/html/test.php on line 37
wofür sind diese ganzen meta in html? die kenne ich garnicht!?
01/08/2012 21:13 Whoknowsit#13
Ich kriege die Fehlermeldung nicht. Die Metatags baue ich Standardmäßig bei mir ein :)
01/08/2012 21:47 DerSaboteur#14
Quote:
Originally Posted by Whoknowsit View Post
Ich kriege die Fehlermeldung nicht. Die Metatags baue ich Standardmäßig bei mir ein :)
lag dran das ich im Bilder ordner keine bilder drinn hatte xDDD

und ich musste

PHP Code:
{$verzeichnisname}/ 
entfernen sonst zeigte der mir 2mal den selben ordner an ;)

alles klar funzt alles gibs den die möglichkeit

beides anzuzeigen? den namen + das bild
01/08/2012 22:06 Whoknowsit#15
Klar, ist nurnoch ein wenig HTML. Ich denke, dass du das selbst hinbekommst ;)