Audio Player

  • so geht alles
    aber mal ne frage ich wollte den wert (von der tabelle mit den titeln) automatisch übertragen lassen im code steht das so

    Code
    $url = array(
    "wert 1",
    "wert 2"
    );

    das geht auch jetzt hab ich aber in der variable $datei bei mir mehrere werte drin also wollte ich das in array reinschreiben

    Code
    $url = array(
    if ($datei) {
    "$datei",
    }
    "wert 2"
    );


    kann mir einer sagen warum das ne so geht

  • Was willst du mit if ($datei) bezwecken?

    Warum es nicht geht: man darf keine Abfragen oder Vergleiche innerhalb einer Array-Deklaration machen.
    Das ist als ob du während des Tankens den Tankstutzen fragen lässt, ob die Tankklappe offen ist. Total unlogisch. Das kann nicht funktionieren.

  • Verstehe ich nicht.

    Folgendes ist jedenfalls grundsätzlich falsch:

    Zitat von Melonenkrieg
    Code
    $url = array(
    if ($datei) {
    "$datei",
    }
    "wert 2"
    );
  • Poste doch mal ein bisschen mehr Code, sodass wir sehen was in $datei drin ist und auch WIE du $datei befüllst.

  • so hat doch nicht so ganz geklappt
    hier mein quelltext
    <?php
    $ordner =".";
    $album = scandir($ordner);

    foreach ($album as $datei) {
    $verweis = pathinfo($ordner."/".$datei);
    /* ################### hier die .mp3 Dateien ################################### */
    $url = array (
    "$datei"
    );


    /* ################### und hier die angezeigten Titel ######################### */
    $name = array (
    "$datei"
    );
    }

  • Ich weiß nicht wie ich mich ausdrücken soll. Aber dein Quelltext sieht ungefähr so aus, als hätte ein Politiker ("Internet ist Neuland") versucht den Job eines Automechanikers zu übernehmen :neutral:

    Du solltest dir unbedingt noch einmal die PHP-Grundlagen ansehen.

    scandir: http://php.net/manual/de/function.scandir.php
    foreach: http://php.net/manual/de/control-structures.foreach.php
    arrays: http://php.net/manual/de/language.types.array.php
    Automatisch zusammengefügt:
    Ich kenne deine Ordnerstruktur nicht. Aber gehen wir mal davon aus, das Script ist im selben Verzeichnis wie die mp3, ogg, wav-Dateien usw:

  • Kein Problem..

    Code
    $extensions = array('mp3', 'ogg', 'wav');


    Wir erstellen ein Array $extensions. Dort werden die Dateiendungen gespeichert, welche wir später zur Auflistung zulassen möchten.

    Code
    $directory = new DirectoryIterator('.');


    Wir erstellen einen neuen Verzeichnis-Iterator für das aktuelle Verzeichnis. Das aktuelle Verzeichnis wird mit dem einfachen "Punkt" angegeben.
    Iterator kommt von iterieren, also grob gesagt "durchgehen, durchwälzen etc".

    Code
    $result = array();


    Wir erstellen ein Array $result. Hier werden später die Dateinamen gespeichert, welche aufgelistet werden sollen (es sind NICHT die Dateien selber).

    Code
    foreach($directory as $fileinfo) {


    Wir beginnen nun unsere Schleife. Grob gesagt steht da "Für jedes Element aus $directory". Wir können das aktuelle Element dann mit $fileinfo ansprechen.
    Zur Erinnerung: $directory ist im Prinzip nur ein Array und wir iterieren durch all seine Elemente. Daher "Für jedes Element....".

    Code
    if ($fileinfo->isFile()) {


    Wir prüfen, ob das aktuelle Element eine Datei ist.

    Code
    $extension = strtolower(pathinfo($fileinfo->getFilename(), PATHINFO_EXTENSION));


    Wir schnappen uns die Dateiendung einer des aktuellen Elements mit pathinfo() und konvertieren sie zu Kleinbuchstaben mit strtolower().

    Code
    if (in_array($extension, $extensions)) {


    Nun prüfen wir, ob die eben gewonnene Dateiendung $extension in unserem Array $extensions vorhanden ist.

    Code
    $result[] = $fileinfo->getFilename();


    Wenn die Dateiendung $extension im Array $extensions vorhanden ist, fügen wir den Dateinamen des aktuellen Elements mit $result[] dem Array $result hinzu.

    Die nächsten drei geschweiften Klammern schließen die zuvor geöffneten Klammern.

    Code
    echo "Musikdateien:<br />";


    Ein simpler echo-Befehl. Damit geben wir den Text "Musikdateien:" gefolgt von einem Zeilenumbruch aus.

    Code
    for ($i = 0; $i < count($result)-1; $i++) {


    Hier zur Abwechslung eine for-Schleife und keine foreach-Schleife.
    Bei dieser Schleife deklariert man die Schleifenlaufvariable $i im Kopf. Hier geben wir ihr den Startwert 0. Bei Arrays beginnt man immer bei 0 an zu zählen, nicht bei 1. Dazu gleich mehr.
    Weiter deklarieren wir, dass wir die Schleife solange durchlaufen möchten, bis die Schleifenvariable $i den Wert $i < count($result) hat.
    Sagen wir mal, wir haben 5 Einträge im Array $result. Dann ginge die Schleife bis 4. Das ist vollkommen korrekt. Denn der Eintrag 4 im Array ist der letzte Eintrag, da die Zählung bei 0 beginnt. 0 ist also der erste Eintrag, 1 der zweite, 2 der dritte usw.
    $i++ bedeutet, dass wir bei den Wert der Schleifenvariable bei jedem Durchlauf der Schleife um 1 erhöhen möchten. $i++ erhöht den Wert um 1. Es gibt verschiedene Schreibweisen dafür.
    Die bekannteste ist $i++. $i+=1 macht genau dasselbe. Möchte man den Wert bei jedem Durchlauf um 2 erhöhen, so schreibt man $i+=2.

    Code
    echo 'Datei #' . ($i+1) . ': ' . $result[$i] . '<br />';


    Hier wieder ein einfacher echo-Befehl. $i+1 ist wichtig, da die erste echo-Ausgabe sonst "Datei #0"´ausgeben würde (zur Erinnerung: die Zählung beginnt bei 0).
    Mit $result[$i] greifen wir immer auf das i-te Element im Array $result zu. Zur Erinnerung: $i ist die Schleifenvariable. Der Wert erhöht sich bei jedem Durchgang um 1 ($i++).
    Würde ich NUR Text ohne Variablen ausgeben wollen, so kann man auch schreiben echo 'Ich bin 12 Jahre alt';
    Nehmen wir an, 12 ist in der Variablen $alter gespeichert. Dann sähe das so aus: echo 'Ich bin ' . $alter . ' Jahre alt';
    Zeichenketten schreiben wir immer in einfache Anführungzeichen. Sobald eine Variable kommt, schließen wir das geöffnete Anführungszeichen, setzen einen Punkt, schreiben die Variable, schreiben wieder einen Punkt und öffnen wieder eine Zeichenkette mit einfachen Anführungszeichen. Das geht auch ANDERS und einfacher! Aber das da oben sollte eigentlich der Standard sein.

    Die letzte geschweifte Klammer schließt die for-Schleife.

  • Also müsste das so aussehen?

    [code=php]
    <?php
    $extensions = array('mp3', 'ogg', 'wav');
    $directory = new DirectoryIterator('.');
    $url= array();
    $name = array();
    foreach($directory as $fileinfo) {
    if ($fileinfo->isFile()) {
    $extension = strtolower(pathinfo($fileinfo->getFilename(), PATHINFO_EXTENSION));
         
    if (in_array($extension, $extensions)) {
    $name[] = $fileinfo->getFilename();
    $url[] = $fileinfo->getFilename();
    }
    }
    }

    echo "Musikdateien:<br />";
    for ($i = 0; $i < count($result)-1; $i++) {
    echo 'URL #' . ($i+1) . ': ' . $url[$i] . '<br />';
    echo 'Name #' . ($i+1) . ': ' . $name[$i] . '<br />';
    }
    ?>
    [/php]

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!