Avatar billede syswatch Novice
05. august 2003 - 13:17 Der er 10 kommentarer og
1 løsning

Problemer med forrige & næste funktion

Hejsa.
Jeg har et galleri som virker lige som jeg gerne vil have det. Når man klikker på et billede for at se det i stort format kommer der et vindue frem med billedet i. Her er der mulighed for at vælge forrige og næste, men når man når det sidste billede, kan man stadig trykke næste og så kommer der bare en billede fejl. Det er der ikke hvis man kører "baglæns(forrige)".

Nogen der kan gennemskue fejlen i min kode ???

Index.php (Den ligger i hver galleri mappe)
<?php
include("$DOCUMENT_ROOT/galleri/maintop.php");
include("$DOCUMENT_ROOT/galleri/dbcon.php");

  $query = "select * FROM Galleri WHERE gid=$event";
  $result = mysql_query($query) or die(mysql_error());

  while($row = mysql_fetch_array($result)){
  extract($row);

  print "<CENTER><FONT FACE=Verdana SIZE=3><B>$overskrift</B></FONT></CENTER><BR>";
  }

  mysql_query("UPDATE Galleri SET vistantal=$vistantal+1 WHERE gid=$event");

?>

<TABLE WIDTH=100% BORDER=0>
<TR>
<TD WIDTH=70%>
<table border="0"><tr>
<?php

// Lidt indstillinger
$path = "./";
$handle = opendir($path);
$cells = 4; // Antal celler ved siden af hinanden
$cellcount = 1;
while (($fil = readdir($handle)) !== false) {
    if ($fil != "." && $fil != ".." && substr($fil,-3) == "jpg") {
        $images[] = $fil;
    }
}
closedir($handle);

foreach ($images AS $key => $value) {
    echo "<td valign=\"bottom\" align=\"center\">";
    $size = getimagesize($path.$value);
    if ($size[0] < $size[1]) {
        echo "<a href=\"#\" onclick=\"popUp('http://www.noddepatruljen.dk/galleri/vispic.php?event=$bib&show=$key'); return false\"><img src=\"thumbs/$value\" alt=\"$value\" border=\"0\" width=\"66\" height=\"100\"></a>";
    } else {
        echo "<a href=\"#\" onclick=\"popUp1('http://www.noddepatruljen.dk/galleri/vispic.php?event=$bib&show=$key'); return false\"><img src=\"thumbs/$value\" alt=\"$value\" border=\"0\" width=\"100\" height=\"66\"></a>";
    }
    echo "</td>";

    if ($cellcount == $cells) {
        $cellcount = 0;
        echo "</tr><tr>";
    }
    $cellcount++;
}
// Udskriver de evt. resterende celler
while ($cellcount <= $cells) {
    echo "<td></td>";
    $cellcount++;
}
?>
</tr></table>
</TD>
<TD VALIGN=TOP WIDTH=30%>
<?php
  $query = "select * FROM Galleri WHERE gid=$event";
  $result = mysql_query($query) or die(mysql_error());

  while($row = mysql_fetch_array($result)){
  extract($row);
  print "<FONT FACE=Verdana SIZE=1px><b>Beretning til Galleriet...</B><BR><BR>$galtext</FONT>";
  }
?>
</TD>
</TR>
</TABLE>

Vispic.php(Filen som viser billederne)
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/style.css">
<SCRIPT LANGUAGE="JavaScript">
var page = new Array();
function popUp(URL) {
    day = new Date();
    id = day.getTime();
    page[id] = window.open(URL, 'nn' +id ,
        'scrollbars=1,width=400,height=500,left=200,top=200');
}
</script>
<title>Galleri Vindue... !</title>
</head>
<body topmargin="0" leftmargin="0">

<center><a href="#" onclick="self.close()">
<?php
$handle = opendir($event);
while (($fil = readdir($handle)) !== false) {
    if ($fil != "." && $fil != ".." && substr($fil,-3) == "jpg") {
        $images[] = $fil;
    }
}
closedir($handle);
echo "<img src=\"/galleri/$event/$images[$show]\" border=\"0\">";

// Opdatering af Databasen for count og comments
  $picture = "$images[$show]";
include("dbcon.php");
  $query = "select * FROM piccount WHERE picname='$picture'";
  $result = mysql_query($query) or die(mysql_error());

if($row1 = mysql_fetch_array($result)) {
    extract($row1);
      mysql_query("UPDATE piccount SET shown=(($shown)+1) WHERE picname='$picture'") or die(mysql_error());
  } else {
      $query1 = "INSERT INTO piccount (id, picname, shown, mappe) VALUES('', '$picture', '1', '$event')";
      $result1 = mysql_query($query1) or die(mysql_error());
  }

?>
</a></center>


<TABLE WIDTH=100% BORDER=0>
<TR>
<TD WIDTH=15%><CENTER>
<?php
if ($show != 0) {
    $forrige = $show-1;
    echo "<a href=\"?event=$event&show=$forrige\"><FONT SIZE=2><B>Forrige</B></FONT></a> ";
}
?>
</TD><TD WIDTH=70%>
<?php
print "<CENTER>Billedet er vist: <b>$shown</b> gange. - <a href=\"#\" onclick=\"popUp('vispiccom.php?sti=$event&picname=$picture'); return false\">Se Kommentarer</A> - <a href=\"#\" onclick=\"popUp('addpiccom.php?sti=$event&picname=$picture'); return false\">Tilføj Kommentarer</A>";
?>
</TD><TD WIDTH=15%><CENTER>
<?php
if (count($billeder)-1 != $show) {
    $naeste = $show+1;
    echo "<a href=\"?event=$event&show=$naeste\"><FONT SIZE=2><B>Næste</B></FONT></a>";
}
?>

</body>
</html>
Avatar billede tipsen Nybegynder
05. august 2003 - 13:34 #1
Hvis dit galleri "virker lige som du gerne vil have det" - hvad er så problemet? ;-)
Avatar billede syswatch Novice
05. august 2003 - 13:37 #2
Ja, ok... formuleringsfejl !
Men jeg håber du forstår problemet ?
Avatar billede tipsen Nybegynder
05. august 2003 - 13:54 #3
Jeg går udfra det er denne der giver problemer:

if (count($billeder)-1 != $show) {
    $naeste = $show+1;
    echo "<a href=\"?event=$event&show=$naeste\"><FONT SIZE=2><B>Næste</B></FONT></a>";
}

Hvorfra har du $billeder ?
Avatar billede syswatch Novice
05. august 2003 - 14:00 #4
Ja, det var da egentlig et godt spørgsmål, det ved jeg faktisk ikke...
Jeg har sammensat koden ud fra nogle eksempler jeg har fået fra folk, og noget kode jeg selv har kunne lave.

Tror du ikke $billeder skulle skiftes ud med $key eller $value ???
Avatar billede tipsen Nybegynder
05. august 2003 - 14:21 #5
i starten af script laver du:

$res = mysql_query(SELECT COUNT(*) FROM billedetabel") or die(mysql_error());
$antalbilleder = mysql_get_result($res, 0);

hvor "billedetabel" skal rettes til navnet på tabellen der indeholder billedeinformationer. (Kan ikke gennemskue, hvilken af dine mange tabeller det skal være)

og så retter du if-stumpen til:

if ($antalbilleder-1 < $show) {
    $naeste = $show + 1;
    echo "<a href=\"?event=$event&show=$naeste\"><FONT SIZE=2><B>Næste</B></FONT></a>";
}
Avatar billede syswatch Novice
05. august 2003 - 14:22 #6
Mine billeder ligger ikke i en database...
Det er en mappe der indeholder en masse billede filer, hvor index filen lister dem i en tabel.
Avatar billede syswatch Novice
05. august 2003 - 15:04 #7
Jeg har selv fundet en løsning. Jeg valgte at tælle antal filer i mappen og bruge dette tal til at sammenligne med det aktuelle viste billede, derved kunne jeg fjerne "næste" knappen for det sidste billede.
Avatar billede tipsen Nybegynder
05. august 2003 - 15:04 #8
Prøv med:
$antalbilleder = count($images);
if ($antalbilleder - 1 < $show) {
    $naeste = $show + 1;
    echo "<a href=\"?event=$event&show=$naeste\"><FONT SIZE=2><B>Næste</B></FONT></a>";
}
Avatar billede syswatch Novice
05. august 2003 - 15:06 #9
Takker mange gange Tipsen... man kunne også gøre det på din måde..
Avatar billede tipsen Nybegynder
05. august 2003 - 15:45 #10
Når du én gang har gennemløbet mappen med filer er der jo ikke grund til at gøre det igen - men tak for point.
Avatar billede kappel Nybegynder
22. april 2004 - 04:25 #11
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