Avatar billede timealert Nybegynder
01. marts 2003 - 10:43 Der er 15 kommentarer og
1 løsning

Notice: Undefined offset??

Hej!

Hvad betyder:
Notice: Undefined offset: 8 in ....../functioner_studie.inc on line 28??

functioner_studie.inc ser sådan ud:
<?

$imageWidth=80;
$imageHeight=54;

$rows=4; //hvor mange rækker
$cols=5; //hvor mange koloner
$libery="pics_studie/"; //finish with /

$viewNum=$cols*$rows;
if(!$firstImage){ // so it works if you just enter default.php and show the pictures without having to define the variables in the path
        $firstImage=1;
}
function getImages($firstImage){
    global $viewNum, $imageWidth, $imageHeight,$cols,$libery;  //insures that the function gets the variables
    $handle=opendir($libery); //opens directory
    while($file=readdir($handle)){ // reads the directory
        $extension=substr($file,-4); // gets the extension of the files
        if(($extension == ".jpg") || ($extension == ".gif") ||($extension == ".JPG") || ($extension == ".png") ){ // checks for image files
            $all[]=$file;  //adds positive results to the archive
        }
    }
    $colscounter=0; // variable that controls the tablebuilding system below
    $firstImage--; // variable that insures that the first image is being showed. Case: It looks best if the links begins with 1 but the array begins with 0
    if(isset($all)){  // if array is set build the table
        print "<table>";
        for($i=$firstImage; $i < $firstImage+$viewNum; $i++){
            if($all[$i]){ // checks for rinning dry of imges
                if($i==$firstImage + $colscounter*$cols){ // if true: new row
                    $colscounter++;
                    print "<tr>";
                } // add the image
                print "<td><a target=\"_blank\" href='showimg_studie.php?img=".$libery."".$all[$i]."&n=".$i."'><img src='".$libery."".$all[$i]."' border='0' width='$imageWidth' height='$imageHeight' alt='Klik for stor billede'></a></td>";
            }
            else{ // stop if no more images
                break;
            }
        }
        print "</table><br>";
        $num=count($all);  //number of pictures in actual libery
        makeList($num); // function to make the links list
    }
    else{
        print "Der er ingen billeder i galleriet endnu<br>";
    }
}
function makeList($num){
    global $libery, $firstImage, $viewNum; //insures that the function gets the variables
    $numLinks = $num / $viewNum; // finds the number og links to be maked
    for($a=0; $a < $numLinks;$a++){
            $start=$a*$viewNum+1;  //adds 1 because then the links begins with ex. number 1-10 and 11-20 instead of 0-10 and 10-20
            $finish=$a*$viewNum+$viewNum;
            if($finish>$num){ // insures that the final link returns the right amount of pictures instead of to much
                $finish=$num;
            }
        if(($firstImage >= $start) && ($firstImage < $a * $viewNum+$viewNum)){ // if true: makes no link because you already are on the page
            print "$start - $finish</a>&nbsp;&nbsp;";
        }
        else{ // makes the link
            print "<a href='studietur.php?libery=$libery&firstImage=$start'>$start - $finish</a>&nbsp;&nbsp;";
        }
    }
}
?>
Avatar billede timealert Nybegynder
01. marts 2003 - 10:52 #1
er der nogen der ved hvad det betyder??
(Notice: Undefined offset: 8 in ....../functioner_studie.inc on line 28)
Avatar billede fangel Nybegynder
01. marts 2003 - 10:55 #2
betydder at du har et array med, lad os sige 3 indexes, og du prøver at finde index 5...

$arr[0] = "hej";
$arr[1] = "med";
$arr[2] = "dig";

echo $arr[5]; //dette laver den omtalte fejl, da kun [0] til [2] findes... ;)

Morten
Avatar billede timealert Nybegynder
01. marts 2003 - 10:57 #3
hvrofor melder den så fejl her:
if(isset($all)){  // if array is set build the table ??

det er da linie 28 ik? Jeg ved ikke om man skal tælle mellemrum med?
Avatar billede fangel Nybegynder
01. marts 2003 - 11:07 #4
tja... ved ikke hvorfor den laver den fejl... men det er det fejlen betydder...

Morten
Avatar billede fangel Nybegynder
01. marts 2003 - 11:09 #5
jeg får den her linie til at være linie 28...

for($i=$firstImage; $i < $firstImage+$viewNum; $i++){

men da der ikke er nogle array's i den linie, så kiggede jeg på linien under... og der er et... så prøv at ændre linien

if($all[$i]){ // checks for rinning dry of imges

til

if(isset($all[$i])){ // checks for rinning dry of imges

Morten
Avatar billede timealert Nybegynder
01. marts 2003 - 11:11 #6
jeg prøver lige...
Avatar billede timealert Nybegynder
01. marts 2003 - 11:15 #7
Nu forsvandt fejlmeddelsen!!!

Men hos mig viser den fejlen når siden loades og forsvinder så igen når den er færdigloaded??
Gør den også det hos jer? http://www.centric.dk/test's/studietur.php
Avatar billede fangel Nybegynder
01. marts 2003 - 11:20 #8
virker fint... men billederne er en krig om at loade... hvilket format gemmer du dem i? (ud over .jpg), er det så et full-size billede som du henter ned og får HTML til at formindske det? det er nemli' ret dumt når man alligevel har adgang til PHP...

så skriv lige om de laver en server-resizeing af billedet, eller en client-resize... ;)

Morten
Avatar billede timealert Nybegynder
01. marts 2003 - 11:24 #9
Jeg gemmer kun i jpg. (ligger kun et billede op af hver)
Så jeg tror det er lavet sådan at den bare forminsker billederne?
(Jeg har ikke selv lavet scriptet da jeg ikke ligefrem er en haj til PHP.)

Men hvis du har en bedre løsning giver jeg da gerne flere point for at få noget bedre :-)
Avatar billede timealert Nybegynder
01. marts 2003 - 11:50 #10
dea_pg -> jeg vil give 100 point ekstra for et hurtigere/bedre script
Avatar billede fangel Nybegynder
01. marts 2003 - 12:38 #11
prøv at kig på dette script

---
<?php

/*
;
; Du skal bruge denne funktion, ved at have denne fil liggende på din server...
;
; du kan så lave et billede sådan her...
;
; <img src="billeder.php?navn=BILLEDENAVN.jpg&maxhojde=MAXHOJDE&maxbrede=MAXBREDE">
;
; (C)2002 Morten Fangel
;          mfa@desi-dev.dk
;
*/

Header( "Content-type: image/png");

function resizeimage($filnavn, $maxhojde, $maxbrede) {

  //Find højde og bredde på billede
    $size = getimagesize($filnavn);
    $width = $size[0];
    $height = $size[1];

    if($width < $maxbrede){
      $newwidth = $width;
      $newheight = $height;
    }
    if($height < $maxhojde){
      $newheight = $height;
      $newwidth = $width;
    }
    if($height > $maxhojde){
      $newheight = $height / ( $height / $maxhojde);
      $newwidth = $width / ( $height / $maxhojde);
    }
    if($newwidth > $maxbrede){
      $newheight = $newheight / ( $newwidth / $maxhojde);
      $newwidth = $newwidth / ( $newwidth / $maxhojde);
    }
   
    //lav et nyt billede
    $image = imagecreate($newwidth, $newheight);

    $white = ImageColorAllocate($image,255,0,255);
    ImageFilledRectangle($image,0,0,$newwidth,$newheight,$white);

    //åben det originale billede (alt efter billede form, er de 2 forskellige funktioner...
    if(ereg("\.png", $filnavn)){
      $src = imagecreatefrompng($filnavn);
    }
    elseif(ereg("\.jp(e)?g", $filnavn)){
      $src = imagecreatefromjpeg($filnavn);
    }
 
    //gem billede
    imagecopyresized($image, $src, 0,0,0,0, $newwidth, $newheight, $width, $height);
    ImagePNG($image);
    ImageDestroy($image);

}

if(isset($_GET['navn']) && isset($_GET['maxhojde']) && isset($_GET['maxbrede'])){
  resizeimage($_GET['navn'], $_GET['maxhojde'],$_GET['maxbrede']);
}

?>
---

det scriptet gør, er at resize det, og vise det for browseren...

se et exp.
http://exp.mfa.ath.cx/billeder.php?navn=google_lang.png&maxhojde=500&maxbrede=500

det orig billede ligger her: http://exp.mfa.ath.cx/google_lang.png og fylder 27kb og er 1280*1000 px stort...

det hjælper altså at resize det lidt... ;)

Morten
Avatar billede timealert Nybegynder
01. marts 2003 - 12:46 #12
hvor angiver jeg mappen som billedene ligger i?
Avatar billede fangel Nybegynder
01. marts 2003 - 12:54 #13
du ændre billedestien...

http://exp.mfa.ath.cx/billeder.php?navn=img/google_lang.png&maxhojde=500&maxbrede=500

jeg ændrede ?navn=goog... til ?navn=img/goog...

Morten
Avatar billede timealert Nybegynder
01. marts 2003 - 13:02 #14
jeg leder mere efter noget som der her: http://www.games.msn.dk/pgs/docs/newsItem_dk.asp?icn=57957&ci=60
hvor man også kan trykke på "frem" og "tilbage"

Hvis du kan finde/lave noget tilsvarende vil jeg gerne give 200 som en lille appetitvækker.
Altså 200 + 30 for dette spørgsmål som du har svaret på... :-)
Avatar billede fangel Nybegynder
01. marts 2003 - 13:36 #15
måske i morgen...
Avatar billede timealert Nybegynder
01. marts 2003 - 13:43 #16
ok!
skriv venligst til mig på timealert@hotmail.com og fortæl om du vil lave det eller ej.
Tak
/timealert
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester