Avatar billede mekaniker Nybegynder
23. september 2004 - 20:19 Der er 6 kommentarer og
1 løsning

Problemer med array til galleri

Jeg fylder et par javascripts array's med nogle poster som jeg hiver ud af en MySQL database med PHP.

$SQL_pic = mysql_query("select * from galleri order by placering");
while ($row_pic = mysql_fetch_array($SQL_pic))
    {

    $plac = $row_pic["placering"];
    $picture = $row_pic["picture"];
    $tekst = $row_pic["tekst"];
       

        $plac_array = $plac_array."\"".$plac."\",";
        $picture_array = $picture_array."\"".$picture."\",";
        $tekst_array = $tekst_array."\"".$tekst."\",";

    }
    $plac_array = substr($plac_array,0,(strlen($plac_array) -1));
    $picture_array = substr($picture_array,0,(strlen($picture_array) -1));
    $tekst_array = substr($tekst_array,0,(strlen($tekst_array) -1));

--------------------------------------------------
Her smidder jeg det så ind i javascriptets array's
og har lavet to links. et til at bladre fremad og et til bagud.
Fremad virker det fint, men tilbage kan jeg ikke gennemskue.
Det skulle gerne være sådan, at når den når til den sidste post starter den forfra med den første.

Jeg er ikke helt så stærk i javascript, så jeg er åben for løsninger. Det kan også godt være, at det er helt hen i skoven det jeg har lavet....??

<script language="JavaScript">
bill = new Array(<?php echo $picture_array ?>);
txt = new Array(<?php echo $tekst_array ?>);
plac = new Array(<?php echo $plac_array ?>);

pb3 = new Array();
for (y = 0; y < bill.length; y++) {
pb3[y] = new Image();
pb3[y] = bill[y];
}

function next(y) {
if(y == '' || y > (plac.length)-1){
    y = 0;}

document.images["pic"].src = "images/galleri/" + pb3[y];
document.all.plac_next.href = "java script:next("+plac[y]+")";
document.all.plac_prev.href = "java script:prev("+plac[y]+")";
document.all.tekst.innerText = txt[y];
}
</script>

<body onLoad="next(0);">

<a href="#" name="plac_prev">prev</a>&nbsp;&nbsp;<a href="#" name="plac_next">next</a>
<div align="left" class="pic_overskrift" style="overflow:hidden;height:15;width:325;padding-left:10px;" id="tekst"></div>
<img src="images/blank_stor.gif" border="0" name="pic">
Avatar billede olebole Juniormester
24. september 2004 - 01:23 #1
<ole>

Prøv noget à la:

<?php

# En hel masse kode her

$picture_array = array();
$tekst_array = array();

$SQL_pic = mysql_query("select * from galleri order by placering");
while ($row_pic = mysql_fetch_array($SQL_pic)) {
    $picture_array[] = "\"".$row_pic["picture"]."\"";
    $tekst_array[] = "\"".$row_pic["tekst"]."\"";
}
?>

<script language="JavaScript">
var bill = new Array(<?php echo implode(",",$picture_array) ?>);
var txt = new Array(<?php echo implode(",",$tekst_array) ?>);

var pb3 = new Array();
for (y = 0; y < bill.length; y++) {
    pb3[y] = new Image();
    pb3[y] = bill[y];
}

function showPic(y) {
    if (y == '' || y > (bill.length)-1 || y < 0) {
        y = 0;
    }
    document.images["pic"].src = "images/galleri/" + pb3[y];
    document.all.tekst.innerText = txt[y];
    document.all.plac_next.href = "java script:showPic("+(y+1)+")";
    document.all.plac_prev.href = "java script:showPic("+(y-1)+")";
}
</script>

/mvh
</bole>
Avatar billede olebole Juniormester
24. september 2004 - 01:41 #2
... og så i lidt mere ordentlig kode  ;o)

<?php

# En hel masse kode her

$picture_array = array();
$tekst_array = array();

$SQL_pic = mysql_query("select * from galleri order by placering");
while ($row_pic = mysql_fetch_array($SQL_pic)) {
    $picture_array[] = "\"".$row_pic["picture"]."\"";
    $tekst_array[] = "\"".$row_pic["tekst"]."\"";
}
?>

<script language="JavaScript">
var bill = new Array(<?php echo implode(",",$picture_array) ?>);
var txt = new Array(<?php echo implode(",",$tekst_array) ?>);

var pb3 = new Array();
for (y = 0; y < bill.length; y++) {
    pb3[y] = new Image();
    pb3[y] = bill[y];
}

function showPic(y) {
    if (y == '' || y > (bill.length)-1 || y < 0) {
        y = 0;
    }
    document.getElementById("pic").src = "images/galleri/" + pb3[y];
    document.getElementById("tekst").innerHTML = txt[y];
    document.getElementById("plac_next").onclick = function() {
        showPic(y+1);
        return false;
    }
    document.getElementById("plac_prev").onclick = function() {
        showPic(y-1);
        return false;
    }
}
</script>
</head>
<body onLoad="next(0);">

<a href="#" id="plac_prev">prev</a>&nbsp;&nbsp;<a href="#" id="plac_next">next</a>
<div align="left" class="pic_overskrift" style="overflow:hidden;height:15;width:325;padding-left:10px;" id="tekst"></div>
<img src="images/blank_stor.gif" border="0" id="pic">
Avatar billede mekaniker Nybegynder
24. september 2004 - 08:09 #3
Det virker helt ok, men hvis man bladre tilbage og når til den første post, og prøver at bladre videre tilbage går den ikke til den sidste post, hvis du ved hvad jeg mener. sagt på en anden måde:
Loopet virker fremad, men ikke tilbage.
Avatar billede roenving Novice
24. september 2004 - 14:38 #4
function showPic(y) {
    y = (y == '' || y > (bill.length)-1)?0:(y < 0)?(bill.length)-1:y;

    document.getElementById("pic").src = "images/galleri/" + pb3[y];
Avatar billede olebole Juniormester
24. september 2004 - 17:35 #5
Det var faktisk med fuldt overlæg, jeg lavede det, som jeg gjorde. Jeg har svært ved at se fornuften i at blive smidt til det sidste billede ved at forsøge at bladre ned forbi det første. Men bevares ... hvis du synes, det er fikst  :)
Avatar billede mekaniker Nybegynder
27. september 2004 - 14:04 #6
>> olebole
Jeg kan godt se hvad du mener, i praksis er der ingen ide i at den looper baglens.
Men nu virker det i hvertfald, så kan jeg jo bruge den løsning jeg synes er bedst.!

Kan du ikke lægge et svar så du kan få nogle points.
Avatar billede olebole Juniormester
27. september 2004 - 16:57 #7
yups ... det er lagt  :)
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