[php] fotoalbum werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • El Reino
  • Registratie: November 2001
  • Laatst online: 26-11-2024
Ik heb met php een soort van online foto-albumpje gemaakt.
Ik heb er verschillende albums op staan. dmv album.php worden de thumbnail van de verschillende albums aangeroepen:

album.php?album=&a=&z=

de albumnaam staat voor de map waar de foto's in staan en eerstefotonr en laatstefotonr zijn (uiteraard) respectievelijk het eerste fotonr en laatste fotonr.


Nu werkt dit allemaal prima, als ik bijvoorbeeld dit intik:

album.php?album=groningen&a=0682&z=0720

dan worden netjes alle thumbnails uit de map groningen weergegeven, van IMG_0682.jpg tm IMG_0720.jpg

MAAR bij een van mijn albums doet ie het niet, dan krijg ik de volgende error in mijn browser:
code:
1
2
3
4
5
6
While trying to retrieve the URL: http://elreino.host.sk/fotoalbums/album.php? 

The following error was encountered: 

Zero Sized Reply 
Squid did not receive any data for this request.


ik snap niet waarom het script het bij dat ene album niet doet?..neem maar van mij aan dat alle thumbnails in de daarvoorbestemde map staan.
Iemand een idee waar het aan kan liggen?
/edit:
ik heb ook al met de nr's gegoocheld, door bijvoorbeeld alleen de eerste paar thumbnails weer te geven van dat album, en dat werkt allemaal prima, maar alle thumbnails bijelkaar weergeven lukt niet?

[ Voor 16% gewijzigd door curry684 op 16-01-2004 16:36 . Reden: spam verwijderd :) ]


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Wauw, ook lekker veel informatie om mee verder te kunnen...

Zou je niet eens wat code kunnen posten? Dan kunnen we het mischien zien.. Het is wel erg gokken zo.

Overigens lijkt dit op een eeuwige loop, of wordt het memory limiet overschreden (wat een direct gevolg van de eeuwige loop kan zijn). Heb je mischien toegang tot de error logs van de webserver? Daar kun je meestal ook wel wat info halen.

[ Voor 46% gewijzigd door Michali op 16-01-2004 15:15 ]

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • El Reino
  • Registratie: November 2001
  • Laatst online: 26-11-2024
Michali schreef op 16 januari 2004 @ 15:13:
Wauw, ook lekker veel informatie om mee verder te kunnen...

Zou je niet eens wat code kunnen posten? Dan kunnen we het mischien zien.. Het is wel erg gokken zo.
excuus

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
for ($i=$a;$i<$z+1;$i++){
  for ($e=1;;$e++){
    $leni = strlen($i);
    if ($leni=="4"){
      $i = $i;
      break;
    }
    else{
      $i = "0".$i;
    }
  }
  $foto = "http://home.tiscali.nl/ijmker/fotoalbums/$album/thumbs/IMG_".$i.".jpg";
  $f = @fopen($foto,"r");
  if (!$f) { 
    $i=$i; 
  }
  else{
    fclose($f);
     echo "      <div style=\"float: left; padding: 7 px;\"><a href=\"http://elreino.host.sk/fotoalbums/foto.php?album=$album&foto=IMG_$i.jpg&a=$a&z=$z\">[img]\"$foto\"[/img]</a></div>\n";
  }
}
?>


dit is de hele code waarmee de thumbnails op de pagina worden gezet...(ok, ok, misschien niet de mooiste code die jullie ooit gezien hebben, maar hij werkt wel (tot nu toe tenminste...gebruik deze code al bijan 2 jaar))

[ Voor 13% gewijzigd door El Reino op 16-01-2004 15:16 ]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:31

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 snapt regel 6 en regel 16 sowieso niet.. :?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Ok, ik zie direct al iets erg vreemds:
PHP:
1
2
3
4
if ($leni=="4"){
      $i = $i;
      break;
    }


:?

Hier ligt het waarschijnlijk aan:
PHP:
1
      $i = "0".$i;


Je maakt hier een string van die variabel? Wat probeer je te doen?
for ($i=$a;$i<$z+1;$i++){

En sorry hoor:
PHP:
1
    $leni = strlen($i);

Wat is dit dan? Je gebruikt $i om te itereren, wat dus betekent dat het een int is, en dan vraag je de lengte van de string waarde ervan op? Wat is de bedoeling hiervan?

Dat gaat daar natuurlijk mis, vandaar die eeuwige loop.

[ Voor 81% gewijzigd door Michali op 16-01-2004 15:19 ]

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • El Reino
  • Registratie: November 2001
  • Laatst online: 26-11-2024
Ja, gelijk hebben jullie....zijn stukjes oude code...waar ik eerst nog iets anders deed met die $i, en heb dat er even snel uitgehaald ooit en dit is blijven staan...slordigheidje....

Acties:
  • 0 Henk 'm!

  • El Reino
  • Registratie: November 2001
  • Laatst online: 26-11-2024
Michali schreef op 16 januari 2004 @ 15:16:

Hier ligt het waarschijnlijk aan:
PHP:
1
      $i = "0".$i;


Je maakt hier een string van die variabel? Wat probeer je te doen?
for ($i=$a;$i<$z+1;$i++){

En sorry hoor:
PHP:
1
    $leni = strlen($i);

Wat is dit dan? Je gebruikt $i om te itereren, wat dus betekent dat het een int is, en dan vraag je de lengte van de string waarde ervan op? Wat is de bedoeling hiervan?

Dat gaat daar natuurlijk mis, vandaar die eeuwige loop.
Ok, die $i is het nummer van de thumbnail die weergegeven moet worden. Begin bij $a en stoppen bij $z. de lengte van het nummer($i) moet 4 getallen zijn, daarom check ik de lengte van $i, is die kleiner dan 4, dan plak ik er een 0 voor. De nul die er bij de $a al voor staat verdwijnt namelijk als ik $i laat ophogen, want dan gebeurt er natuurlijk dit: 0733 + 1 = 734 (en dan is de lengte dus niet meer 4).
Dus ik begrijp dat ik van $i (een int) eerst een string moet maken, daar de lengte van moet nemen en daar vervolgens een 0 voor moet plakken?

Maar het blijft raar dat ie het bij alle albums wel goed doet, alleen bij 1 album niet?

[ Voor 34% gewijzigd door El Reino op 16-01-2004 15:29 ]


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if ( $_GET['start'] < 1000 || $_GET['start'] > 9999
|| $_GET['end'] < 1000 || $_GET['end'] > 9999 )
{
  exit;
}

if ( $_GET['start'] > $_GET['end'] )
{
  $temp = $_GET['start'];
  $_GET['start'] = $_GET['end'];
  $_GET['end'] = $temp;
  unset($temp);
}

for ( $i = $_GET['start']; $i <= $_GET['end']; $i++ )
{
  if ( file_exists($_GET['dir'] . "/image_" . $i . ".jpg") )
  {
    print '[img]"image.php?id='[/img]';
  }
}


(Waarschuwing: Gebruik die $_GET['dir'] NIET zoals ik het hier in het voorbeeld doe, dit was alleen om aan te geven hoe het ook kan!)

(en meer doe ik niet, nu mag je zelf verder :))

[ Voor 95% gewijzigd door Michali op 16-01-2004 15:38 ]

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • El Reino
  • Registratie: November 2001
  • Laatst online: 26-11-2024
Michali schreef op 16 januari 2004 @ 15:34:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if ( $_GET['start'] < 1000 || $_GET['start'] > 9999
|| $_GET['end'] < 1000 || $_GET['end'] > 9999 )
{
  exit;
}

if ( $_GET['start'] > $_GET['end'] )
{
  $temp = $_GET['start'];
  $_GET['start'] = $_GET['end'];
  $_GET['end'] = $temp;
  unset($temp);
}

for ( $i = $_GET['start']; $i <= $_GET['end']; $i++ )
{
  if ( file_exists($_GET['dir'] . "/image_" . $i . ".jpg") )
  {
    print '[img]"image.php?id='[/img]';
  }
}


(Waarschuwing: Gebruik die $_GET['dir'] NIET zoals ik het hier in het voorbeeld doe, dit was alleen om aan te geven hoe het ook kan!)

(en meer doe ik niet, nu mag je zelf verder :))
hmm...(ik ben geen php-god, maar) als ik de code zo bekijk, dan moet mijn start en einde (a en z in mijn geval) tussen de 1000 en de 9999 liggen?...maar dat klopt voor mijn situatie niet, want ik heb ook nrs onder de 1000 (alleen daar plak ik dan een 0 (of meerdere 0-en) voor om toch een lengte van 4 te krijgen)

Acties:
  • 0 Henk 'm!

  • El Reino
  • Registratie: November 2001
  • Laatst online: 26-11-2024
Hmm...ik zie het nog steeds niet hoor...hoe ik ook kijk, ik zie niet dat ie (in mijn script) in een eeuwige loop terecht komt....

en daarbij, ik snap dus ook niet dat het ene album het niet doet, terwijl alle ander albums het wel doen :?

Acties:
  • 0 Henk 'm!

  • nxt
  • Registratie: November 2001
  • Laatst online: 24-08 15:34

nxt

't zal 't probleem waarschijnlijk niet oplossen maar als je nu eens
code:
1
2
3
4
5
6
7
8
9
10
for ($e=1;;$e++){
    $leni = strlen($i);
    if ($leni=="4"){
      $i = $i;
      break;
    } else{
      $i = "0".$i;
    }
}
$foto = "http://home.tiscali.nl/ijmker/fotoalbums/album/thumbs/IMG_".$i.".jpg";

veranderd in
code:
1
2
$fotonr = sprintf("%04d",$i);
$foto = "http://home.tiscali.nl/ijmker/fotoalbums/$album/thumbs/IMG_".$fotonr.".jpg";


dat is imho een stuk netter, en je komt ook niet in de problemen als $i > 9999

Acties:
  • 0 Henk 'm!

  • El Reino
  • Registratie: November 2001
  • Laatst online: 26-11-2024
nxt schreef op 16 januari 2004 @ 16:52:
't zal 't probleem waarschijnlijk niet oplossen maar als je nu eens
code:
1
2
3
4
5
6
7
8
9
10
for ($e=1;;$e++){
    $leni = strlen($i);
    if ($leni=="4"){
      $i = $i;
      break;
    } else{
      $i = "0".$i;
    }
}
$foto = "http://home.tiscali.nl/ijmker/fotoalbums/album/thumbs/IMG_".$i.".jpg";

veranderd in
code:
1
2
$fotonr = sprintf("%04d",$i);
$foto = "http://home.tiscali.nl/ijmker/fotoalbums/$album/thumbs/IMG_".$fotonr.".jpg";


dat is imho een stuk netter, en je komt ook niet in de problemen als $i > 9999
ja dank, staat wel stuk netter idd.
maar tja...problem still exists... :?

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
for ( $i = $a; $i < $z+1; $i++ )
{
    $fotonr = sprintf("%04d",$i);
    $foto = "http://home.tiscali.nl/ijmker/fotoalbums/" . $album . "/thumbs/IMG_" . $fotonr . ".jpg";

    if ( file_exists($foto) )
    {
        echo '<div style="float: left; padding: 7 px;"><a href="http://elreino.host.sk/fotoalbums/foto.php?album=' . $album . '&foto=IMG_' . $fotonr . '.jpg&a=' . $a . '&z=' . $z . '">[img]"'[/img]</a></div>\n';
    }
}
?>

Dit werkt echt niet? Probeer dan eens de waardes van $a en $z uit te printen, want ik denk dan echt dat $a een grotere waarde heeft dan $z waardoor de loop nooit eindigt.

[ Voor 20% gewijzigd door Michali op 18-01-2004 12:45 ]

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • El Reino
  • Registratie: November 2001
  • Laatst online: 26-11-2024
Michali schreef op 18 januari 2004 @ 12:43:
PHP:
1
2
3
<?php
bla
?>

Dit werkt echt niet? Probeer dan eens de waardes van $a en $z uit te printen, want ik denk dan echt dat $a een grotere waarde heeft dan $z waardoor de loop nooit eindigt.
Nee, want de waardes van a en z geef ik zelf mee (b.v.: http://elreino.host.sk/fo...album=ewijk&a=0733&z=0905
) dus ik zorg er wel voor dat a niet groter is dan z.

(oh, en de reden dat ik het met fopen doe ipv met file_exists, is vanwege het feit dat ik die foto's van een andere server afhaal dan van elreino.host.sk, en daar werkt file_exists dus niet :( Ik heb zelf het idee dat daar iets fout gaat, bij dat fopen, maar ik kan maar niet verzinnen wat......)

[ Voor 37% gewijzigd door El Reino op 18-01-2004 14:57 ]


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
PHP Manual User contibutes:
If you are trying to check whether a remote file (or url) exists, you can open it and close it in the same statement.

<?php

if (@fclose(@fopen("http://www.example.com", "r"))) {
print("File exists.");
} else {
print("File does not exist.");
}

?>
Dat is wat korter en werkt voor remote bestanden.

Mischien kan het liggen aan de manier waarop de variabelen met de url worden meegegeven? Als je een getal met een 0 ervoor typt, wordt het gezien als een octaal getal. Ik weet alleen niet zeker of dit ook voor de get variabelen geldt. Wat je verder nog kunt proberen is gewoon wat regels weg halen. Als je een vermoeden hebt dat het ergens aan kan liggen, dan haal je dat stukje gewoon even weg of comment je dat. Dan ben je zo achter.

Noushka's Magnificent Dream | Unity

Pagina: 1