Ergebnis 1 bis 8 von 8

Thema: Array, datein random

  1. #1

    Array, datein random

    Hallo
    Ich habe ein Problem unswar würde ich gerne einen Ordnerinhalt auslesen dann aus dem Ordner eine zufällige Datei includen lassen aber das ganze drei mal aus dem gleichen ordner und es soll sich keine Datei wiederholen(es sind php datein)

    Mein Aktueller Code sieht so aus

    PHP-Code:
    <?php 

      
    include sprintf("stuff/kaesten/%02d.php",rand(1,5));
      include 
    sprintf("stuff/kaesten/%02d.php",rand(1,5));
      include 
    sprintf("stuff/kaesten/%02d.php",rand(1,5));
    ?>
    So nun bin ich dabei das ganze mit arrays zu machen stecke aber wie gesagt fest.

    PHP-Code:
    <?php
    $datei 
    = array();
    if(
    $handle = @opendir('stuff/kaesten'))
    {
      while(
    $datei readdir($handle))
      {
        if(
    $datei != '.' AND $datei != '..')
        {
         
    $dateien[] = $datei;
         
    sort($dateien);
        }
      }
      
    sort($dateien);

         
    ?>

    Hoffe auf schnelle antwort
    mfg Sebastian Gafinen

  2. #2
    Willkommen im Forum. Mal schaun, ob ich das jetzt so auf Anhieb hinbekomm:

    PHP-Code:
    <?php 
    $datei 
    = array(); 
    if(
    $handle = @opendir('stuff/kaesten')) 

      while(
    $datei readdir($handle)) 
      { 
        if(
    $datei != '.' AND $datei != '..'
        { 
         
    $dateien[] = $datei
        } 
      }
      for(
    $i 0$i 3$i++)
      {
        
    $num rand(0count($dateien) - 1;
        include 
    'stuff/kaesten/'.$dateien[$num];
        
    array_splice($dateien$num1);
      }

         
    ?>
    Nicht getestet, aber es sollte gehen.

  3. #3
    danke ich habe es gestestet
    leider klappt es nicht


    das sit die Fehlermeldung
    Code:
    Parse error: parse error, unexpected ';' in C:\Programme\xampp\htdocs\xampp\websites\mayschoss\stuff\reba_test.php on line 14

  4. #4
    In Zeile 14 eine schließende Klammer vor den ;, danach sollte der Fehler behoben sein.

  5. #5
    Danke nun gibts noch einen Fehler

    Code:
    Warning: main(kaesten/) [function.main]: failed to open stream: Permission denied in C:\Programme\xampp\htdocs\xampp\websites\mayschoss\stuff\reba_test.php on line 15
    
    Warning: main() [function.include]: Failed opening 'kaesten/' for inclusion (include_path='.;C:\Programme\xampp\php\pear\') in C:\Programme\xampp\htdocs\xampp\websites\mayschoss\stuff\reba_test.php on line 15
    EDIT://
    und das problem das 2 gleiche auftauchen ist auch noch da

    Geändert von puM4 (23.10.2007 um 14:33 Uhr)

  6. #6
    Versuche es mal mit eckigen Klammern[] hinter dem $dateien in Zeile 16.
    Wenn dir gesagt wird, das du ihm einen Array geben sollst dann musst du ihm auch einen Array geben.

    Edit: Dabei, das zwei gleiche auftreten kann ich dir aktuell leider nicht helfen, da ich aktuell keinen Server zum testen zur Verfügung habe. Wenn du mir aber bis morgen Zeit gibst kann ich dir das so hinbiegen, das es Funktioniert.

    Geändert von eissceda (23.10.2007 um 14:44 Uhr)

  7. #7
    danke das habe ich gerade geschafft zu lösen nun bleiben aber noch die 2 warnings und es müssen 3 unterschiedliche Kästen auftauchen hab mir auch schon überliegt wie das gehen könnte kann das aber nciht in php umsetzten

    // EDIT:
    Also alle Warnungen sind raus nun muss nur noch das problem gelöst werden das nichts doppelt erscheinen darf

    //Edit² :
    ES KLAPPT *JUHHHHHHHU*

    Danke für die hilfe , das Board gefällt mir ich glaub ich werde hier mal aktiv
    p.s
    ich lade die Seite nacher hoch das ihr sie euch angucken könnt wenn ihr wollt

    Geändert von puM4 (23.10.2007 um 14:44 Uhr)

  8. #8
    Nur so nebenbei; ich hätte es so gemacht: (Achtung, erfordert PHP 5!)
    PHP-Code:
    <?php
      
    /** Holt N zufällige Dateien aus einm Verzeichnislisting
       *  Parameter:
       *    path     - das zu durchsuchende Verzeichnis
       *    numFiles - die Anzahl der zu holenden Dateien
       *  Rückgabewert:
       *    Ein Array mit den Dateinamen oder
       *    FALSE, wenn zu wenige Dateien vorhanden sind
       */
      
    function getRandomFiles($path$numFiles)
      {
        
    $files scandir($path);
      
        if (
    count($files) < $numFiles)
          return 
    false;
      
        
    shuffle($files);
      
        for (
    $i 0$i $numFiles$i++)
        {
          
    $result[] = array_shift($files);
        }
        
        return 
    $result;
      }
      
      
    // Ein Beispiel zum Testen
      
    print_r(getRandomFiles('.'3));
    ?>
    Die Kombination shuffle()/array_shift() ist allgemein deutlich bequemer als die von DFYX gepostete for-Schleife und sie funktioniert auch mit PHP4. Der einzige PHP5-spezifische Kram bei mir ist scandir(), welches aber auch durch den oberen Teil von DFYX' Code ersetzt werden kann.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •