Avatar billede onlineman Nybegynder
11. september 2003 - 17:08 Der er 21 kommentarer og
1 løsning

Noget med arrays og sessions!

Jeg er i færd med, at fremstille et postkort-script v.h.a. MySql & PHP. Men før jeg egentlig er kommet rigtigt igang med den egentlige scripting er jeg stødt ind i et irriterende problem! Tanken er postkort-motiverne først  skal præsenteres for surferen som små thumbnails og det skal være muligt, at klikke på disse thumbnails således, at et vindue åbnes og der vises en stor udgave af de samme motiver samt supplerende oplysninger om foto-titel og foto-beskrivelse! Jeg har forsøgt, at scripte noget som skulle kunne klare dette (vedlægges herunder), men hver gang jeg klikker på de små thumbnails vises nøjagtigt den samme udgave af fotoet! Hvad laver jeg forkert? Herunder kommer de 2 filer jeg har fremstillet:

Postcard.php:

<?
session_start();
?>
<html>

<head>
<link rel="stylesheet" HREF="site.css">
</head>

<body>

<script>

function openpopup(){
var popurl="large_photo.php"
winpops=window.open(popurl,"","width=620,height=600,")
}
</script>


<?
$photo_path = "C:\\............\\fotos\\";


//FELTER I MYSQL: id,titel,beskrivelse,foto,foto_th

$db = mysql_connect ("localhost","","");
mysql_select_db ( "postcard_new" ,$db);


$hent_data = mysql_query ("SELECT * FROM billeder ") or (mysql_error() );
while ($vis_data = mysql_fetch_array ($hent_data)) {

$session_titel = $vis_data[1];
session_register("session_titel");

$session_beskrivelse = $vis_data[2];
session_register ("session_beskrivelse");

$session_foto = $photo_path.$vis_data[3];
session_register("session_foto");


echo "<form name='fotovalgform' action=' $PHP_SELF;' method='post'>";
echo "<input type='hidden' value='$vis_data[0]' name='id'>";
echo "<font class ='titel'>Titel:</font> $vis_data[1]<br>";
echo "<font class ='titel'>Beskrivelse:</font> $vis_data[2]<p>";
echo "<a href=\"java script:openpopup()\">";
echo "<img src='$photo_path$vis_data[4]'></a><br>";
echo "<font class ='titel'>Foto-valg:</font><input type='radio' name='fotovalg' value='$vis_data[3]'><p>";
}

echo "<input type='submit' name='fotovalgsubmit' value='Vælg foto'>";
echo "</form>";


?>


</body>
</html>

-------------------------

Large_photo.php:

<?
session_start();
?>
<html>

<head>
<link rel="stylesheet" HREF="site.css">
</head>

<body>
<?

echo "Foto titel: $session_titel<p>";
echo "Beskrivelse: $session_beskrivelse<p>";
echo "<img src='$session_foto'><p>";
echo "<a href='java script:window.close()'>Luk vinduet</a>";


?>

</body>
</html>
Avatar billede TRoXa Novice
11. september 2003 - 17:14 #1
står der 2 forskellige billeder i databasen ? for lige nu henter den jo samme billede i både postcard.php og large_photo.php og så er det klart, at det er samme størrelse.
Avatar billede TRoXa Novice
11. september 2003 - 17:16 #2
ahhh nej der er 2 forskellige billeder, men billederne må være samme størrelse så på harddisken eller noget, da der står 2 forskellige navne i databasen ?
Avatar billede taskmgr Nybegynder
11. september 2003 - 17:17 #3
Nu blev jeg forvirret...

Er problemet, at du får det samme billede frem, uanset hvilket thumbnail du klikker på? (det sidste?)
Avatar billede TRoXa Novice
11. september 2003 - 17:23 #4
det er sådan jeg har forstået det, og derfor må der stå noget ens i databasen i de 2 felter eller også er billederne samme størrelse på harddisken. Ellers kan de aldrig blive samme størrelse efter min mening
Avatar billede onlineman Nybegynder
11. september 2003 - 17:24 #5
Ja, der er 2 forskellige fotos! Iøvrigt forstår jeg ikke det du skriver!!Når jeg klikker på en lille thumbnail er det jo meningen, at der skal vises en stor udgave af den lille thumbnail samt supplerende oplysninger! Jeg har forsøgt, at bruge sessions fordi jeg skal "overføre" oplysningerne til et nyt vindue, men problemet ligger jo i, at det array som kommer ud af databasen i første udtræk (i postcard.php) ikke umiddelbart kan overføres til næste fil (large_photo.php) - der vises nemlig kun det samme billede uanset hvilket thumbnail der klikkes på!!!! Så problemerne ligger formodentlig i det array der på en eller anden måde skal splittes op og oplysningerne overføres til large_photo.php. Jeg ved bare ikke hvordan!!!
Avatar billede TRoXa Novice
11. september 2003 - 17:26 #6
du kunne som en start smide din session_register("session_titel"); osv op i toppen så de blir registreret inden du giver dem en værdi :)
Avatar billede taskmgr Nybegynder
11. september 2003 - 17:26 #7
Du laver en while løkke, som løber poster i tabellen igennem...

...og hver gang løkken bliver kørt, definerer du $session_foto:
$session_foto = $photo_path.$vis_data[3];
session_register("session_foto");

Så er det klart at du får det samme billede frem.
$session_foto bliver overskrevet hver gang din while løkke bliver kørt.
Avatar billede TRoXa Novice
11. september 2003 - 17:30 #8
lav denne linie

echo "<a href=\"java script:openpopup()\">";

om til

echo "<a href=\"java script:openpopup($vis_data[4])\">";

og din javascript funktion

function openpopup(){
var popurl="large_photo.php"
winpops=window.open(popurl,"","width=620,height=600,")
}

om til

function openpopup(test){
var popurl="large_photo.php?billede=" + test;
winpops=window.open(popurl,"","width=620,height=600,")
}



og så i din vis billede noget mysql der tjekker

select * from blabla where stortbillede='$billede'"
og så en while løkke hvor du henter oplysningerne :)
Avatar billede onlineman Nybegynder
11. september 2003 - 17:33 #9
Vis mig venligst hvorledes den while løkke laves - for nu er vi vist inde på noget af det rigtige!!
Avatar billede TRoXa Novice
11. september 2003 - 17:37 #10
jeg ved ikke hvad du har kaldt overskriften i tabellen for stortbillede, men jeg kalder det bare lige stortbillede i dette sammenhæng :)

<?

photo_path = "C:\\............\\fotos\\";


$hent_data = mysql_query ("SELECT * FROM billeder WHERE stortbillede='$billede'") or (mysql_error() );
while ($vis_data = mysql_fetch_array ($hent_data)) {

$titel = $vis_data[1];
$beskrivelse = $vis_data[2];
$foto = $photo_path.$vis_data[3];

echo $foto;

}
Avatar billede TRoXa Novice
11. september 2003 - 17:38 #11
noget i den retning :)
Avatar billede taskmgr Nybegynder
11. september 2003 - 17:38 #12
Som troxa også skriver, så ville jeg helt undlade at bruge sessions her.

Send en var med din popup, som kan identificere dit billede, og slå det derefter op i databasen igen. Så kan du også trække titlen og beskrivelsen ud på den måde.
Avatar billede taskmgr Nybegynder
11. september 2003 - 17:40 #13
... Der er dog ingen grund til at lave en while i din popup, når der kun er et billede ;) (hint)
Avatar billede TRoXa Novice
11. september 2003 - 17:41 #14
nej okay ;) tænkte jeg ikke lige på :P men meningen er god nok :)
Avatar billede TRoXa Novice
11. september 2003 - 17:43 #15
:) dvs

<?

photo_path = "C:\\............\\fotos\\";


$hent_data = mysql_query ("SELECT * FROM billeder WHERE stortbillede='$billede'") or (mysql_error() );
$vis_data = mysql_fetch_array ($hent_data)
$titel = $vis_data[1];
$beskrivelse = $vis_data[2];
$foto = $photo_path.$vis_data[3];

echo $foto;
Avatar billede TRoXa Novice
11. september 2003 - 17:44 #16
og så selvfølgelig husk

$db = mysql_connect ("localhost","","");
mysql_select_db ( "postcard_new" ,$db);

i den også, men regner ikke med at det er aktuelt for dig at glemme det :)
Avatar billede onlineman Nybegynder
12. september 2003 - 10:38 #17
Tak for svarene - men jeg har alligevel valgt en anden løsning!! Giv gerne svar og jeg vil tildele points!
Avatar billede taskmgr Nybegynder
12. september 2003 - 14:14 #18
ok
Avatar billede taskmgr Nybegynder
12. september 2003 - 15:36 #19
Ehm... troxa skulle nok også ha' haft nogle?

Her er point til dig:
http://www.eksperten.dk/spm/400311
:)
Avatar billede TRoXa Novice
12. september 2003 - 15:42 #20
mange tak :)
Avatar billede onlineman Nybegynder
12. september 2003 - 16:50 #21
Ja, det var bestemt retfærdigt nok, at I delte om pointene - da der kun var svar fra taskmgr kom jeg til, at give ham allesammen - beklager!! Men så er det jo godt, at I efterfølgende retter fejlen - tak for det!!
Avatar billede taskmgr Nybegynder
12. september 2003 - 17:11 #22
Det er i orden :)
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