Gå til innhold

Feil i følgende kode:


Anbefalte innlegg

<center>

<?php

$a = '0';

$galleryid = $_GET['id'];

$fileroot = "bildegalleri";

$filepath = "thumb";

$url_path = "bilder";

$dir = dir($filepath);



echo "<table border="0" cellpadding="5" cellspacing="5" width="75%">";

while($entry=$dir->read()) {

   if($entry == "." || $entry == "..") { 

       continue; 

   } 

   $fp = @fopen("/$fileroot/$galleryid/$filepath/$entry","r");

if ($a == '4'){ echo "</tr><tr>"; $a = 0; }

?><td>

 <a href="<? echo "/$fileroot/$galleryid/$url_path/$entry" ?>">

 <img src="<? echo "/$fileroot/$galleryid/$filepath/$entry" ?>" alt=""></a>

 </td>

<?

$a++;

}

?> 

</tr>

</table>

</center>

 

Lager jeg mappene thumb og bilder, og legger disse til / på webserveren får jeg frem bilder.

utifra det jeg har programmert ønsker jeg at scriptet skal ta hensyn til fileroot og galleryid.

 

Jeg har litt problemer med å forklare det...

Jeg tror feilen ligger i denne linjen: $dir = dir($filepath);

 

 

Vær sååå snill å hjelp meg med dette her (please)(hehe)

Lenke til kommentar
Videoannonse
Annonse

<center>

   $fp = @fopen("/$fileroot/$galleryid/$filepath/$entry","r");

Dette kallet er unødvendig...

 

Prøv dette:

 


<center> 

<?php 

$a = '0'; 

$galleryid = $_GET['id']; 



$filepath = "thumb"; 

$url_path = "bilder"; 

$fileroot = "bildegalleri";





$strThumbs =  "./$fileroot/$galleryid/$filepath";

$strImages = "./$fileroot/$galleryid/$url_path";

$dir = dir("$strThumbs"); 



echo "<table border="0" cellpadding="5" cellspacing="5" width="75%"><tr>"; 



while($entry=$dir->read()) 

{ 

   if($entry == "." || $entry == "..") { continue; }     

   if ($a == '4'){ echo "</tr><tr>"; $a = 0; } 

?>

 

 <td> 

   <a href="<? echo "$strImages/$entry" ?>"> 

   <img src="<? echo "$strThumbs/$entry" ?>" alt=""></a> 

 </td> 



<? 

$a++; 

} 



$dir->close();

?> 

</tr> 

</table> 

</center> 



 

 

Merk!!

Koden slik den er her.. er usikker. Du bør sjekke at argumentet til Dir() er gyldig ( i tilfelle siden kalles med en katalog-id som ikke finnes). Hvis så er tilfelle, bør brukeren omdirigeres til en access-denied side.. hovedside.. whatever.

 

 

 

BIW

Lenke til kommentar

Tusen takk for hjelpen (så langt)

Jeg er newbie i å progge, liker best å copy-paste ulik kode for å får det slik jeg vil (som oftest går det bra!!!)

Det er mye lettere å endre på kode enn det det er å progge det ... :)

Uansett, scriptet funket desverre ikke.

 

Jeg får opp riktig path, men ingen bilder?

 

Håper du/dere kan hjelpe til litt til.

Lenke til kommentar

Klart vi kan hjelpe. :)

 

Skriptet fungerte hos meg.. men det var med følgende mappestruktur:

 




gallery.php  

[ bildegalleri ]

   [12] 

           [bilder]

                img_1.jpg

                img_2.jpg

                img_3.jpg

           [thumb]

                img_1.jpg

                img_2.jpg

                img_3.jpg



     [13]

           [bilder]

                img_1.jpg

                img_2.jpg

                img_3.jpg

           [thumb]

                img_1.jpg

                img_2.jpg

                img_3.jpg

 

 

 

Der [ ] ---> indikerer en mappe

 

For å vise eksempelvis bilder i mappen [12] blir kallet til hovedsiden for galleriet:

 

gallery.php?id=12 

 

 

BIW

Lenke til kommentar

Joda, det virker det ja. :oops:

Men.. jeg får det bare til å virke lokalt på maskina mi.. hehe

 

Når jeg legger det ut på nett kommer ikke bildene frem (får ikke noen feilmelding som følge av feil mapper heller)

 

Mulig det er for sent på natta for at dette skal virke for meg, uansett takk for hjelp enda en gang.

Lenke til kommentar

Plukket dette fra kildekoden i siden din:

 

 <td> 

   <a href="bildegalleri/test/bilder//IMG_2248.jpg"> 

   <img src="bildegalleri/test/thumb//IMG_2248.jpg" alt=""></a> 

</td> 

 

Du har doble slash'er i sti'en. Noen grunn til det?

 

Hvis du graver frem stien til der ett av bildene dine ligger skal vi sikkert finne ut av problemet.

 

BIW

Lenke til kommentar

Sånn går det når jeg er for trøtt :)

 

Når burde sjekket siden i explorer i stedet for Opera.

I opera er det helt tomt, mens i explorer kommer jo faktisk bildelinkene opp. Hadde jo sjekket koden da ;)

 

 

Nå virker det. Tusen takk for all hjelp.

;)

Lenke til kommentar

Som nevnt er jeg ikke noen god php programmerer, men du verden så artig det er å leke seg ;) (Særlig når det funker)

 

Nå er scriptet nesten slik jeg ønsker at det skal være :)

Det hadde vært kjekt med en Forrige / Neste bilde funksjon også.

Jeg har jo allerede arrayen $entry. Hvordan skal jeg skrive $entry ++ for å få dette til å virke?

 

Jeg legger ved koden i tilfelle andre her ønsker noe tilsvarende.

(PHP-eksperter! synes sikkert jeg har programmert med kniv og gaffel, men dette er det beste jeg får til)

 

<?php

$filepath = "thumb"; 

$url_path = "bilder"; 

$fileroot = "bildegalleri";

// $GlobalSectionID=17;

$showimage = $_GET['show']; 

$galleryid = $_GET['gallery'];  

$strThumbs =  "./$fileroot/$galleryid/$filepath"; 

$strImages = "./$fileroot/$galleryid/$url_path"; 

$dir = dir("$strThumbs"); 



// If no image is selected, show gallery:

if ( $showimage == "" )

{

$a = '0';

include( "$fileroot/$galleryid/data.html" );

echo "nn<center>n<table border="0" cellpadding="5" cellspacing="5" width="100%">n<tr>n"; 

while($entry=$dir->read()) 

{ 

     if($entry == "." || $entry == "..") { continue; }      

     if ($a == '5'){ echo "n</tr>n<tr>n"; $a = 0; } 

  ?> 

  <td> 

    <a href="/gallery/browse?gallery=<?php echo "$galleryid" ?>&show=<? echo "$entry" ?>"> 

    <img src="../<? echo "$strThumbs/$entry" ?>" border="0" alt=""></a> 

  </td> 

  <? 

  $a++; 

} 

$dir->close(); 

print "</tr>n</table>n</center>n"; 

}

// If image is selected show image:

else

{

print "<br /><center>n<a href="/gallery/browse?gallery=$galleryid"><img src="../$strImages/$entry/$showimage" border="0"></a>n</center>";

$show = "";

}

?>

[/size]

Lenke til kommentar
Det hadde vært kjekt med en Forrige / Neste bilde funksjon også. Jeg har jo allerede arrayen $entry. Hvordan skal jeg skrive $entry ++ for å få dette til å virke?

 

Nå er ikke $entry noen array slik du bruker variabelen her. Den brukes kun til å holde på navnet til hver enkelt mappe/fil etter hvert som du leser dem inn.

 

Du er ihvertfall inne på noe.

 

Jeg stusset på om jeg skulle skrive koden for deg, men det er vel morsommere hvis du får gjøre det selv :D

 

 

Skisse av en mulig løsning:

a) Bygg en funksjon som returnerer innholdet i katalogen til en array

B) hent ut filnavn fra array (der du nå leser inn i $entry)

c) ta vare på index i array'en når du viser hele bildet (samme måtes som galleryid).

 

d) Lag phpkode for visning av forrige/neste som tar utgangspunkt i mottatt id (imageid), ved å hente data fra array.

 

 

 

Tror ikke det skal være så veldig vanskelig.

 

BIW

Lenke til kommentar

Jeg stusset på om jeg skulle skrive koden for deg, men det er vel morsommere hvis du får gjøre det selv :D

Ja, det er kjempeartig å lage noe på egenhånd. Men det er samtidig innmari vanslkleig ......

 

Skisse av en mulig løsning:

a) Bygg en funksjon som returnerer innholdet i katalogen til en array

Uh!

B) hent ut filnavn fra array (der du nå leser inn i $entry)

Detet sburde jeg klare..

c) ta vare på index i array'en når du viser hele bildet (samme måtes som galleryid).

Dette er greit :)

d) Lag phpkode for visning av forrige/neste som tar utgangspunkt i mottatt id (imageid), ved å hente data fra array.

Dette er også greit :)

 

 

Tror ikke det skal være så veldig vanskelig.

Da tar du feil .... hehehehe ;)

Lenke til kommentar

Tror ikke det skal være så veldig vanskelig.

Da tar du feil .... hehehehe ;)

:lol:

 

Får hjelpe deg litt til da:

 

 

   //Funksjonsdeklarasjon

  function fncGetContents($strPath)

  {

      $str_Data = Array();

      $objDir = dir($strPath);

      $i = 0;

      while($entry = $objDir->read()) { if($entry!="." && $entry != "..") $str_Data[$i++] = $entry;}



      $objDir->close();

      

      return $str_Data;

  }





  //Eksempel på bruk

  $str_Data = fncGetContents("./"); 



  //Skriver ut innhold i array

  $intCounter = count($str_Data);

  for($i=0;$i<$intCounter;$i++) { echo($str_Data[$i] . "<br>");}

Lenke til kommentar

Mere hjelp på vei. :woot::D

 

Det slo meg at den forrige løsningen min kanskje var mer komplisert enn den hadde trengt å være.

 

Alt vi trenger å gjøre, er å legge linkene til forrige og neste bilde rett inn i visningssiden for bildet. Hvordan finner vi ut av det?

 

"Enkelt". Gitt funksjonen som vist tidligere (fncGetContents).. kan alle bildene i en mappe leses inn i en array(liste).

 

I stedet for å sende med hele navnet på bildet som skal vises slik du gjør nå ...

 


<a href="/gallery/browse?gallery=<?php echo "$galleryid" ?>&show=<? echo "$entry" ?>"> 

 

..kan du sende med en bildeId som indekserer et element i arrayen.

 


<a href="/gallery/browse?gallery=<?php echo "$galleryid" ?>&show=<?$lngImageEntryId  ?>"> 

 

Når skriptet mottar en bildeID, vil det som før tolke det som at

et enkelt bilde i galleriet skal vises.

 

Phpkoden må da endres slik at

 


 $str_Array = fncGetContents($strPath) // <-- stien til aktuelt galleri



 $entry = $str_Array[$lngImageEntryId ]

 $previousEntryId = $lngImageEntryId -1;

 $nextEntryId = $lngImageEntryId +1;

 

 

Da kan du opprette to linker i bildevisnings-siden. Forrige/Neste som linker til gallerysiden med $previousEntryId og $nextEntryId.

 

 

Du må her huske å sjekke at Id'ene er gyldige indekser i array'en.

( id > 0 og id < count($str_Array) ) og endre verdiene på dem deretter.

 

Det kan du gjøre på flere måter. Det enkleste er kanskje å rullere slik at hvis du kommer til slutten på tabellen fortsetter du med det første elementet. Omvendt, kommer du til begynnelsen av tabellen fortsetter du med det siste elementet.

 

 

Håper det hjalp deg litt videre. Jeg kan skrive koden helt ut, men du kan få lov til å prøve selv hvis du vil.

 

Uklart? Gi beskjed så skal jeg gjøre et forsøk på å forklare bedre.

 

 

 

 

BIW

Lenke til kommentar
  • 4 måneder senere...

Jeg må krype til korset og be om hjelp her.

Jeg prøver å få til neste/forrige funksjon.

Slik ser koden min ut nå:

 

<?php

$filepath = "thumb"; 

$url_path = "bilder"; 

$fileroot = "bildegalleri";

// $GlobalSectionID=12;

$showimage = $_GET['show']; 

$galleryid = $_GET['gallery'];  

$strThumbs =  "./$fileroot/$galleryid/$filepath"; 

$strImages = "./$fileroot/$galleryid/$url_path"; 

$dir = dir("$strThumbs"); 



// If no image is selected, show gallery:

if ( $showimage == "" )

{

$a = '0';

include( "$fileroot/$galleryid/data.html" );

echo "nn<center>n<table border="0" cellpadding="5" cellspacing="5" width="100%">n<tr>n"; 

while($entry=$dir->read()) 

{ 

     if($entry == "." || $entry == "..") { continue; }      

     if ($a == '5'){ echo "n</tr>n<tr>n"; $a = 0; } 

  ?> 

  <td> 

    <a href="/gallery/browse?gallery=<?php echo "$galleryid" ?>&show=<? echo "$entry" ?>"> 

    <img src="../<? echo "$strThumbs/$entry" ?>" border="0" alt=""></a> 

  </td> 

  <? 

  $a++; 

} 

$dir->close(); 

print "</tr>n</table>n</center>n"; 

}

// If image is selected show image:

else

{

print "<br /><center>n<a href="/gallery/browse?gallery=$galleryid"><img src="../$strImages/$entry$showimage" border="0"></a>n</center>";

$show = "";

}

?>

Lenke til kommentar

hva er galt? får du noen feilmelding?

 

uansett.. jeg synes denne så litt skummel ut:

print "<br /><center>n<a href="/gallery/browse?gallery=$galleryid"><img src="../$strImages/$entry$showimage" border="0"></a>n</center>";

 

burde kanskje heller se slik ut:

echo ('<br /><center>n<a href="/gallery/browse?gallery='.$galleryid.'"><img src="../'.$strImages.'/'.$entry.$showimage.'" border="0"></a>n</center>');

Lenke til kommentar
  • 7 måneder senere...

Dette går dårlig.

 

<?php
   $filepath = "thumb";
   $url_path = "bilder";
   $fileroot = "bildegalleri";
   $GlobalSectionID=1;
   $showimage = $_GET['show'];
   $galleryid = $_GET['gallery'];
   $strThumbs =  "./$fileroot/$galleryid/$filepath";
   $strImages = "./$fileroot/$galleryid/$url_path";
   $dir = dir("$strThumbs");


// If no image is selected, show gallery:
   if ( $showimage == "" )
     {
     $a = '0';
     // include( "$fileroot/$galleryid/data.html" );
     echo "<center><table border=\"0\" cellpadding=\"5\" cellspacing=\"5\" width=\"100%\"><tr>";
     while($entry=$dir->read())
       {
         if($entry == "." || $entry == "..")
           {
             continue;
           }
         if ($a == '5')
           {
             echo "</tr><tr>"; $a = 0;
           }
         ?>
         <td><a href="/gallery/browse?gallery=<?php echo "$galleryid" ?>&show=<? echo "$entry" ?>"><img src="../<? echo "$strThumbs/$entry" ?>" border="0" alt=""></a></td>
         <?php
         $a++;
       }
       $dir->close();
       print "</tr></table></center>";
     }

// If image is selected show image:
else
{
echo "<a href=\"/gallery/browse?gallery=$galleryid\"><img src=\"../$strImages/$entry$showimage\" border=\"0\"></a>";
$show = "";
}


//Funksjonsdeklarasjon
 function fncGetContents($strImages)
 {
     $str_Data = Array();
     $objDir = dir($strImages);
     $i = 0;
     while($entry = $objDir->read()) { if($entry!="." && $entry != "..") $str_Data[$i++] = $entry;}
     $objDir->close();
     return $str_Data;
 }



 //Eksempel på bruk
 $str_Data = fncGetContents($strImages);

 //Skriver ut innhold i array
 $intCounter = count($str_Data);
 for($i=0;$i<$intCounter;$i++) { echo($str_Data[$i] . "<br>");}


   $str_Array = fncGetContents($strImages); // <-- stien til aktuelt galleri
   $entry = $str_Array[$lngImageEntryId ];
   $previousEntryId = $lngImageEntryId -1;
   $nextEntryId = $lngImageEntryId++;
   echo "forrige $previousEntryId<br>";
   echo "neste $nextEntryId<br>";
   echo $str_Array;
   echo $strImages;
?>

 

Jeg har rotet til hele greia. Noen tips?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...