Gå til innhold

kakkle

Medlemmer
  • Innlegg

    731
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av kakkle

  1. hehehe... MErkelig

    Jeg satt akkurat og lagde meg et veldig enkelt lite minigalleri...

     

    Dette kun for å kunne vise noen bilder i en mappe ett om gangen, slik at de som fortsatt sliter med modem, slapp å laste 50 bilder med engang... :)

     

    Dette er et script som skal ligge i samme mappe som bildene. Dòg er det ikke noe problem å lage det slik at den velger en gitt mappe.

     

    Som sagt så er scripet veldig enkelt, og var egentlig bare laget for at jeg skulle vise noen bilder i full fart...

     

    Men det kan nok sikkert være veldig fint å bruke som et utgangspunkt til et ordentlig bilde galleri.

     

     

     

    <?php
    // ************************************************
    // Legger alle jpeg filer inn i et array, $image
    // ************************************************
    
    if ($handle = opendir('.')) {
      while (false !== ($file = readdir($handle))) {
          if ($file != "." && $file != ".." && strpos($file, ".jpg")) {
            $image[] = $file;
    //           echo "<img src='$file' alt='$file' title='$file'>\n";
          }
      }
      closedir($handle);
    }
    //
    // Henter ut bildenummer som skal vises
    //
    $bildenr = (isset($_GET[id]))?$_GET["id"]:0;
    
    //
    // Viser bildenummer med link til hver bilde. Viser $limit nummer om gangen
    //
    $limit = 10;
    $start = $bildenr-$limit;
    $stopp = $bildenr+$limit;
    if($bildenr-$limit<0) {
           $start=0;
       $stopp=$limit*2;
    }
    if($bildenr+$limit>count($image)) {
           $stopp=count($image);
    }
    // Lager en link til det forste bildet, dersom det ikke er med i rangen
    if($start>0) echo "[<a href='?id=0'>1</a>] ... ";
    for($i=$start;$i<$stopp;$i++) {
           if($i!=$bildenr) {
                   echo " [<a href = '?id=$i'>".($i+1)."</a>] ";
           }
           else {
                   echo " [".($i+1)."] ";
           }
    }
    // Viser link  til siste bildet, dersom det ikke er med i rangen
    if($stopp <= count($image)-1) echo " ... [<a href='?id=".(count($image)-1)."'>".count($image)."</a>]";
    echo "<hr>";
    //
    // Viser Forrige og neste bilde link
    //
    
    if($bildenr > 0) {
       echo "[<a href='?id=".($bildenr-1)."'>Forrige bilde</a>] ";
    }
    if($bildenr < count($image)-1) {
       echo " [<a href='?id=".($bildenr+1)."'>Neste bilde</a>] ";
    }
    //
    // Viser det valgte bildet
    //
    print "<p>";
    print "<img src='".$image[$bildenr]."' alt='".$image[$bildenr]."' style='float: left; margin-right: 50px;'>";
    
    //
    // Viser en liste med filnavnet paa hvert bilde ved siden av selve bildet
    //
    $limit = 8;
    $start= $bildenr-$limit;
    $stopp = $bildenr+$limit;
    if($bildenr-$limit<0) {
       $start=0;
       $stopp=$limit*2;
    }
    if($bildenr+$limit>count($image)) {
       $stopp=count($image);
    }
    //Link til fø bildet, dersom det ikke er i rangen
    if($start>0) echo "1. [<a href='?id=0'>".$image[0]." </a>]<br>...<br>";    
    for($i=$start;$i<$stopp;$i++) {
       if($i!=$bildenr) {
           echo ($i+1).". [<a href = '?id=$i'>".$image[$i]."</a>] <br>";
       }
       else {
           echo ($i+1).". [".$image[$i]."] <br>";
       }
    }
    // Link til siste bildet dersom det ikke er i rangen
    
    if($stopp < count($image)) echo " ...<br> ".count($image).". [<a href='?id=".(count($image)-1)."'>".$image[count($image)-1]."</a>] <br>";
    ?>
       
    

     

     

    Som sagt så er dette ikke noe jeg har giddet å legge så mye arbeid i, så beklager evt rotete kode og ugunstige ting..., men det kan være et fint utgangspunkt for å lage ditt eget galleri...

     

    Det er mulig at dette kommer til å bygges på etterhvert... Hvis jeg legger ut flere bilder på den siden... Og da vil jeg nok også legge inn mulighet for album (underkatalog)...

     

    /KAkkle

  2. Hei

     

     

    Prøv å bytt ut

    
    /* print the result */
    echo "<IMG SRC='$dir/$files[$randnum]' ALT='$files[$randnum]' BORDER='0'>";
    

    med :

    header("Content-Type: image/png"); // Evt jpg eller gif
    readfile($dir."/".$files[$randnum]);
    

     

    EDIT: Også kan du f.eks lagre det som png, og lage en en .htaccess fil med dette innholdet i samme katalog som scriptet:

    AddType application/x-httpd-php .png
    

    Evt jpg, gif

  3. Det er nok en kake som står for denne jobben, ja...

     

    Dersom du har Firefox og WebDeveloper, så kan du jo høyreklikke på denne siden og velge:

    WebDeveloper->Cookies->View cookies Information

     

    Her er 2 kaker som kan ha noe med det å gjøre:

    Name HardwareNorgeForumetforum_read

    Value <Masse tegn med prosent, tall og bokstaver>

    Host www.diskusjon.no

    Path /

    Secure No

    Expires 3. mars 2007 08:59:20

    og

    Name HardwareNorgeForumettopicsread

    Value <Masse tegn med prosent, tall og bokstaver>

    Host www.diskusjon.no

    Path /

    Secure No

    Expires At End Of Session

    Gadd ikke ta med value, da det er en ganske lang streng, som jeg regner med vil ødelegge litt for forumet her :)

  4. Jeg ser hva du mener...

    Det er mulig å få til ved bruk av eval, da... Men det erjo eval, da (Skummelt) :(

     

    Det er den måten jeg kommer på i farten nå...

    <?
    $array = "[bruker][fornavn]";
    eval("\$conf$array = \"Trond\";");
    echo $conf[bruker][fornavn]; // Gir Trond
    echo $conf$array // Gir kompileringsfeil
    eval("echo \$conf$array.\"<br>\";"); // Gir Trond
    ?>
    

    Men som sagt så er det ikke veldig anbefalt å bruke eval. Da må du isåfall være HELT sikker på hva du kjører inn i funksjonen.

     

    Men hvorfor vil du gjøre det på denne måten ?

     

    EDIT:

    En annen sak du kan se på, men som ikke vil funke som array, på en måte:

    <?
    $array = "[bruker][fornavn]";
    $conf{$array} = "Trond";
    echo $conf[bruker][fornavn]."<br>"; // Gir ingenting
    echo $conf{$array}; // Gir Trond
    ?>
    

  5. Du må vel, som trondes sier, la $limit være bestemt fra url. Enten ved at du oppgir hvilken side i urlen, eller ved at du oppgir starten ($limit)

     

    Også må du fjerne $limit=0, da denne setter $limit til 0 uansett, og da vil jo alltid første side vises, eller ?

    $limit = isset($_GET["limit"])?$_GET["limit"]:0;
    

    i Funksjonen writeentries, så trenger du heller ikke gi $limit ny verdi

     

    Linkene setter du slik, f.eks nesteside:

    $nestestart = $limit+$prPage;
    echo "<a href='?limit=$nestestart'>neste side >>></a>";
    

     

    btw: Trenger ikke bruke "a+" som mode, vel ? Du skriver vel bare til filen i det tilfellet ? skal holde med "a" da...

     

    Jeg for min del ville brukt file() for å lese filen istedetfor fopen, da jeg er mer komfortabel med denne :

    $limit = isset($_GET["limit"])?$_GET["limit"]:0;
    $guestfile = file("guest.txt") // F.eks
    $ant_innlegg = count ($guestfile);
    $teller = $limit;
    // Her starter den på den linjen som er angitt i urlen.
    while ($teller < $ant_innlegg) {
     $innlegg[] = explode("|", $guestfile[$teller]);
    }
    // For debug:
    print "<pre>";
    print_r($innlegg);
    print "</pre>";
    

    Men det er jo forsåvidt det samme du gjør, da...

     

    /k

  6. Vel... I dette tilfelle, så vil det bare legge alt som ligger i filen+det nye i slutten av filen.. Hvis filen f.eks inneholder "blabla\nbloblo\n" og du skal legge til jallajalla,så vil det bli: "blabla\nbloblo\nblabla\nbloblo\njallajalla"

     

    Prøv dette :

    <?
    $filename="ord.txt";
    $innlegg = $_POST['ord']."<br>\n"
    
    $fp = fopen($filename,'a');
      fwrite($fp,$innlegg);
    fclose($fp);
    /*
    * Du trenger vel ikke denne heller ?
    *
    $handle = fopen($filename, "r");
    $innhold = fread($handle, filesize($filename));
    fclose($handle);
    */
    ?>
    

     

    EDIT: n

  7. 'a+'... + betyr at hvis filen ikke finnes, opprett den. 'a' setter peker inn på slutten av filen istedet for i begynnelsen (slik 'w' og 'w+' gjør)

    5742144[/snapback]

     

    Vel... Ikke helt riktig. "a+" åpner filen for både lesing og skriving. "a" åpner filen kun for skriving. Både "a+" og "a" oppretter filen dersom den ikke finnes.

     

    'a'  Open for writing only; place the file pointer at the end of the file. If the file does not exist, attempt to create it.

    'a+' Open for reading and writing; place the file pointer at the end of the file. If the file does not exist, attempt to create it.

     

    EDIT: Dette gjelder forsåvidt også "w" og "w+". + tegnet betyr at filen åpnes for både lesing og skriving. Uten pluss tegnet vil den kun åpne filen for skriving. Filen vil bli opprettet dersom den ikke finnes både med og uten + tegn

  8. derfor kan det være lurt å legge til både ".." som enkelt sagt betyr "opp ett nivå"(håper jeg) og info.html, slik at de ikke blir med i lista.

    5727217[/snapback]

     

    Trenger jo ikke legge til ".." Denne blir jo dekket ved at den starter med ".".

    Koden som CruellaDeVille postet, vil jo også sjekke om filnavnet inneholder ".html". Gjør den det, vil den ikke gå inn i if setningen. I tillegg, så sjekker den om filnavnet starter på "."

     

    En annen løsning, er å legge filene inn i array bare dersom det er godkjente fil endelser (f.eks .jpg, png, gif, osv...)

  9. 1: Hvorfor bruker du frames ?

    2: Skal Innhold.php være innhold.php ? Ved å skrive http://www.olechr.be/innhold.php får man ihvertfall opp en feilmelding (No inputfile selected)

    3: Finnes filene som skal inkluderes (inc/fil.php). http://www.olechr.be/inc sier at den ikke finner noen side...

    4: Hvorfor åpner du filen med fopen først ?

     

    EDIT: Har du slått av feilmeldinger ? Prøv å slå dem på, og se om du får mer informasjon

  10. Det stemmer...

    Men den koden som Allyse postet, forutsetter ikke at det blir brukt $_POST. Koden funker like godt om det ikke hentes med $_POST.

     

    Det må ikke hentes mailadresse fra en form for at koden skal fungere, hvis mener hva jeg forstår...

     

    EDIT: Grunnen til at jeg kommenterte innlegget, ditt, var fordi du sa til Allyse, at den koden han postet, forutsatte at han har $mail = $_POST["mail"], og det stemmer ikke...

  11. Okei... Skal prøve å endre litt på funksjonen din:

    <?
    function dvd_get($start = 0)
    {
    global $config, $lng;
    
    $start = intval($start);
    
    if(!isset($next))
    {
      // Et tall satt i config som sier hvor mange dvder det skal på hver side
      $next = $config['dvd_count'];
    }
    $sql = "SELECT COUNT(*) AS ant FROM dvd WHERE owner='{$_SESSION['id']}";
    $query = mysql_query($sql) or die ("ERROR in query: $sql<br>".mysql_error());
    $row = mysql_fetch_array($query);
    $ant = $row["ant"]; // antall dvder totalt for den aktuelle eier
    
    $sql = "SELECT * FROM dvd WHERE owner= '{$_SESSION['id']}' ORDER BY `collection` ASC, `colnum` ASC, `title` ASC LIMIT {$start},{$next}";
    $query = mysql_query($sql) or die('Query failed: $sql<br>' . mysql_error());
    
    // Her er det noe output før uthenting av data
    
    if($ant > 0)
    {
      while($row = mysql_fetch_assoc($query)){
        // Her printes alt ut
      } //while
    } //if
    else
    {
      // Output hvis det ikke er noe info å printe
    }
    echo "    </table>\n\n";
    echo "    <div class=\"text\">\n";
    echo "      <p style=\"margin-top: 10px;\">\n";
    if($start > 0)
    {
     $previous = $start - $next;
      echo "<a href=\"{$config['baseurl']}index.php?module=dvd&action=read&target=all&start={$previous}\"><< Previous</a> -\n";
    }
    else
    {
      // Her trenger du vel forsåvidt ingenting ?
    }
    if($ant > ($next+$start)) // Dersom det er flere dvd enn det som skal være pr side
    {
     $nestestart = $start+$next;
      echo "<a href=\"{$config['baseurl']}index.php?module=dvd&action=read&target=all&start={$nestestart}\">Next >></a>\n";
    }
    else
    {
      //Her trenger du vel heller ingenting ?
    }
    echo "      </p>\n";
    echo "    </div>\n";
    }
    ?>
    

     

    Koden er slett ikke testet...

    Det forutsetter at $config["dvd_count"] inneholder hvor mange dvd'er som skal vises pr side..

     

    Spør hvis du lurer på... Kan være masse småfeil i koden (Er litt vanskelig å få oversikten i et lite tekstfelt...)

  12. Okei..

    Kan komme med noen kommentarer, ihvertfall...

    1. Denne er vel strengt tatt unødvendig:

    if(!isset($start))
    {
      $start = 0;
    }
    

    $start vil jo alltid være satt, i og med at den blir satt til 0, dersom den ikke blir satt i kallet til funksjonen...

     

    2. Denne snutten skjønner jeg ikke helt heller vitsen med:

    if(!isset($start))
    {
      $start = 0;
      $count = $count_to;
    }
    else
    {
      if(is_numeric($start))
      {
        $count = $count_to + $start;
      }
    }
    
    $started = $start;
    

    Som sagt så vil vel alltid $start være satt...

     

    Kan du gi et eksempel på hvordan du kaller denne funksjoen ?

     

    EDIT: Ble mye krøll her..

×
×
  • Opprett ny...