Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 20 von 25

Thema: Hab ein riesiges Problem mit nem PHP-Script

  1. #1

    Hab ein riesiges Problem mit nem PHP-Script

    Ich habe, wie der titel sagt, ein problem mit einem script.
    Es ist eigentlich ein recht simpler code, er soll mir eigentlich nur die arbeit erleichtern, 500 bilder auf die homepage einzufügen, für meinen test habe ich aber erstmal nur 2 verwendet

    nun mein problem:
    irgendwie gibt es ein problem, so dass nicht nur die bilder nicht angezeigt werden, sondern auf der seite mit dem script auch der seitenaufbau komplett im eimer ist ...

    der code ist hier:

    <div align="center">

    <?php

    $bild==1;

    loop {
    if (!file_exists('img/hoch1-$bild.JPG')) {
    echo('<a href="img/hoch1-<?php echo $bild; ?>.JPG"><img src="img/hoch1-<?php echo $bild; ?>.JPG" width="265" height="353" border="0"></a>')
    };
    else {endloop};
    set $bild +1};

    ?>

    </div>


    das problem könnt ihr euch auf http://pictures.rpg-generation.com/l...color=gelbblau genauer ansehen, eigentlich müsstre rechts noch eine tabellenzelle zu sehen sein ... (seht ihr, wenn ihr auf home oder so klickt ...)

    P.S. bisher gibt es nur die bilder hoch1-1.JPG und hoch1-2.JPG

  2. #2
    Sicher dass das PHP ist? Ich kenne weder loop {} noch set $var; in PHP. Mein Vorschlag:
    PHP-Code:
    <div align="center">
    <?php
    $bild
    =1;

    while(
    file_exists('img/hoch1-'.$bild.'.JPG')) {
      echo 
    '<a href="img/hoch1-'.$bild.'.JPG"><img src="img/hoch1-'.$bild.'.JPG" width="265" height="353" border="0"></a>';
      
    $bild++;
    }
    ?>
    </div>

  3. #3
    So, vielen Dank nochmals ^^

    Ne kleine Frage noch:

    ist es irgendwie durch einen code möglich, nur so ca. 5 bilder pro seite anzeigen zu lassen oder so ? weil bei mir schmiert ab 10 bilder ca. der rechner immer ab, weil die bilder so groß sind...

  4. #4
    Zitat Zitat
    weil bei mir schmiert ab 10 bilder ca. der rechner immer ab, weil die bilder so groß sind...
    Bist du dir sicher, dass es an der Bildgröße liegt? file_exists ist nämlich eine Zeit- und Ressourcenintensive Funktion.
    Hast du keine andere Möglichkeit die Anzahl deiner Bilder herauszufinden?

    Ein möglicher Ansatz für dich wäre über die URI (GET Methode, z.B.: bilder.php?start=5) eine "Startvariable" zu übergeben, und dein Skript so anzupassen, dass es ab dem Bild mit dieser Nummer die nächsten fünf ausgibt.

  5. #5
    Eine Möglichkeit wäre folgendes:
    PHP-Code:
    foreach(scandir('dein/dir/') as $image) {
      if(
    $image != '.' && $image != '..')
        echo 
    $image

    Das ist zwar nicht besonders performant, aber eine bessere Lösung fällt mir nicht ein

  6. #6
    was macht denn der code ? is das sone art erleichterung für den server ?

    an den 2 über mir:
    Ja, boin mir sicher ^^
    Hab auch ne kategorie mit 6 bildern oder so und das funktioniert einwandfrei (bis auf, dass es ca. ne minute ladezeit hat, aber der rechner stürzt nich ab)

  7. #7
    Öhm, das gibt alle Dateien im Unterordner dein/dir/ aus
    Du kannst natürlich auch noch das Format überprüfen, um nur Bilder auszugeben...

  8. #8
    Achso, und gibts da auch ne Möglichkeit, dass man pro seite nur so 5-10 bilder oder so sieht und dann nen button kommt, der zur nächsten seite weiterleitet, wo halt die nächsten 5 kommen oder so ?

  9. #9
    PHP-Code:
    <?php
    $files 
    scandir('dein/dir/');
    $start = (!empty($_GET['start'])) ? intval($_GET['start']) : 0;
    foreach(
    array_slice($files$start$start+5) AS $image)
    {
      echo 
    '<img src="dein/dir/'.$image.'" alt="" /> ';
    }
    echo 
    '<a href="'.$_SERVER['PHP_SELF'].'?start='.($start+5).'">Nächste Seite</a>';
    ?>
    Untested, without any warranty.

    [EDIT]
    Öhm, ja, hab das as $image vergessenn ^^"

    Geändert von dead_orc (04.08.2006 um 11:41 Uhr)

  10. #10
    OK danke, ich teste es mal und werde dann editieren ob es funktioniert hat

    Ne, passiert gar nix ... leider

    Geändert von Yury_b (01.08.2006 um 20:43 Uhr)

  11. #11
    Die foreach-Schleife wird auch nicht ganz korrekt aufgerufen. So müsste es funktionieren:
    Code:
    <?php
    $files = scandir('dein/dir/');
    $start = (!empty($_GET['start'])) ? intval($_GET['start']) : 0;
    foreach(array_slice($files, $start, $start+5) as $image)
    {
      echo '<img src="dein/dir/'.$image.'" alt="'.$image.'" /><br /> ';
    }
    echo '<a href="'.$_SERVER['PHP_SELF'].'?start='.($start+5).'">Nächste Seite</a>';
    ?>
    In Zeile 2 und 6 musst du noch den Pfad zum Bilderordner anpassen.

    freundliche Grüße, Rolus

  12. #12
    ne funzt auch nich ^^

    also am besten bisher hat der erste script gefunzt, nur da waren halt zu viele bilder, alle anderen gingen bisher nicht, keine ahnung wieso, er zeigt halt keinerlei bilder an ...

    (ich habe auch ordnernamen geändert...)

  13. #13
    Könnte daran liegen, dass dein Server kein PHP5 kann, und scandir PHP5 only ist. Versuch mal das hier:
    PHP-Code:
    <?php
    $dir 
    "dein/dir/";
    if (
    is_dir($dir))
      if (
    $dh opendir($dir))
      {
        while ((
    $file readdir($dh)) !== false && $file != '.'  && $file != '..')
          
    $files[] = $file;
        
    closedir($dh);
      }

    $start = (!empty($_GET['start'])) ? intval($_GET['start']) : 0;
    foreach(
    array_slice($files$start$start+5) as $image)
    {
      echo 
    '<img src="'.$dir.$image.'" alt="'.$image.'" /><br /> ';
    }
    echo 
    '<a href="'.$_SERVER['PHP_SELF'].'?start='.($start+5).'">Nächste Seite</a>';
    ?>

  14. #14
    Zitat Zitat von Yury_b
    ne funzt auch nich ^^

    also am besten bisher hat der erste script gefunzt, nur da waren halt zu viele bilder, alle anderen gingen bisher nicht, keine ahnung wieso, er zeigt halt keinerlei bilder an ...

    (ich habe auch ordnernamen geändert...)
    Gibt's die Antwort auch in "etwas präziser und verständlich"? Kthxbye.

  15. #15
    @dead_orc:
    Ne funzt auch nich, wird kein Bild angezeigt leider...

    @Codec:

    Also es funktioniert folgender Code zur Bilderanzeige bei mir:

    <?php
    $bildhoch=1;

    while(file_exists('img/hinfahrt/hoch1-'.$bildhoch.'.JPG')) {
    echo '<a href="img/hinfahrt/hoch1-'.$bildhoch.'.JPG"><img src="img/hinfahrt/hoch1-'.$bildhoch.'.JPG" width="265" height="353" border="0"></a><br><br><br>';
    $bildhoch++;
    }
    ?>
    <?php
    $bildquer=1;

    while(file_exists('img/hinfahrt/quer1-'.$bildquer.'.JPG')) {
    echo '<a href="img/hinfahrt/quer1-'.$bildquer.'.JPG"><img src="img/hinfahrt/quer1-'.$bildquer.'.JPG" width="265" height="199" border="0"></a><br><br>';
    $bildquer++;
    }
    ?>

    das erste ist Hoch und das andere Querformat, ABER KEINE SORGE, BEI DEN ANDEREN CODES HABE ICH NUR HOCHFORMAT GENOMMEN !!!

    So und nun mein Problem:
    Da ich gerne alle Bilder ohne Qualitätsverlust anzeigen möchte, ist die Ladezeit extremst hoch, wenn in einer Galerie MEHR as 10 Bilder angezeigt werden. Also habe ich nach einem Code gefragt, der sozusagen festlegt, dass nur 5 von Hoch und 5 von Querformat angezeigt werden und unten drunter soll ein Link, der auf eine nächste Seite verweist, die ich nicht Extra für jede 5 Bilder anlegen möchte, auf der die nächsten 5 Hoch und 5 Querformat angezeigt werden sollen.

    Ich hoffe du hast mein Problem verstanden...

  16. #16
    Warum arbeitest du nicht mit MySQL? Das kannst du dann mit Seiten und Thumbnails etc sehr komfortabel ausarbeiten.

  17. #17
    soll ich etwas 550 Bilder in die datenbank eintragen ???
    Da kann ich auch gleich alle Bilder einzeln einsetzen ...

  18. #18
    Du könntest auch eines der oberen Scripte nehmen, um den Ordnerinhalt auszulesen und diesen gleich per Einfüge-Abfrage in die Datenbank speichern.

  19. #19
    @dead_orc
    Ich glaube deine while-Schleife wird (unter Umständen) sofort abgebrochen, weil erst "." eingelesen wird (noch vor den Bildern). Ich würde das eher mit einer IF-Abfrage in der while-Schleife machen:
    Code:
    <?php
    $dir = "dein/dir/";
    if (is_dir($dir))
      if ($dh = opendir($dir))
      {
        while (($file = readdir($dh)) !== false)
        {
          if($file != '.'  && $file != '..')
            $files[] = $file;
        }
        closedir($dh);
      }
    
    $start = (!empty($_GET['start'])) ? intval($_GET['start']) : 0;
    foreach(array_slice($files, $start, $start+5) as $image)
    {
      echo '<img src="'.$dir.$image.'" alt="'.$image.'" /><br /> ';
    }
    echo '<a href="'.$_SERVER['PHP_SELF'].'?start='.($start+5).'">Nächste Seite</a>';
    ?>
    @Yury_b
    Das müsste eigentlich funktionieren. Ansonsten füge mal ein error_reporting(E_ALL); an den Anfang des Scriptes ein und poste die Ausgabe. Oder gib uns mal einen Link zu der Seite, auf der du das testest. Dann könnte man dir besser helfen.
    PS: In einer Datenbank würde ich die Bilder nicht speichern. Das strapaziert den Server nur unnötig. Und es müsste eigentlich auch per Ordner-Auslesen funktionieren.

    freundliche Grüße, Rolus

  20. #20
    Autsch, natürlich. Deswegen kam mir das auch so kurz vor
    Das mit der Datenbank halte ich in diesem Fall auch für etwas unsinnig, wenn er nur die Bilder anzeigen will. Mit ner DB könnte man dann prima Beschreibungen oder so hinzufügen, aber eigentlich sollte das Dateisystem für das hier reichen - wenn man damit umgehen könnte :/

Berechtigungen

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