Avatar billede krk Nybegynder
05. april 2005 - 12:16 Der er 14 kommentarer og
1 løsning

variable fra php til javascript

Hej.
Jeg har noget javascript der ligger uden for mine php-tags og ser sådan ud:
<script type="text/javascript">
var activeImg;
function swapImages(ID) {
      elm = document.getElementById(ID).style
      if (activeImg) {activeImg.display="none";}
      elm.display = (elm.display == "block") ? "none" : "block";
      activeImg = elm;
}
function initImg() {
      activeImg = document.getElementById("pic1").style;
      activeImg.display = "block";
}
window.onload=initImg;
</script>
<?php
//udsnit af min php kode:
$offset = $page* $rowPrPage;
$query        ="SELECT * FROM katte_galleri ORDER BY id LIMIT $offset,$rowCount1;";
$result    = mysql_db_query ($database, $query, $link );


print"<table width='700' border='0' cellspacing='0' cellpadding='0'>
  <tr valign='top'> ";
    while($row = mysql_fetch_array($result)){
        $id                = $row[id];
        $billede        = $row[billede];
        $tekstindhold     = $row[tekstindhold];
        $imgaestor         = $row[imgaestor];
        print"<td width='100'><a href='http://kryt.dk/gade'><img src ='content/upload/$billede' width='90' height='70' border='0' onmouseover=\"swapImages('pic$id')\" onmouseout=\"swapImages('pic$id')\"  ></a> </td>\n";
       
}       
   
print"</tr><tr valign='top'><td width='100'>";
   

?>

Men jeg vil gerne have laver "pic1" til en variabel ($id) som jeg bruger i min php-kode. Altså så "pic1" bliver til "pic$id"
Kan det lade sig gøre ?
Avatar billede busschou Praktikant
05. april 2005 - 12:21 #1
Af det jeg så i din kode i det andet spørgsmål så kører du jo en løkke hvor du sætter alle til style.display="none" ...
Her kunne du jo evt sætte den første i løkken til block?
Avatar billede barklund Nybegynder
05. april 2005 - 12:25 #2
Så er du i hvert fald nødt til at beregne alle dine $id før du outputter dit javascript. For eksempel kan du lave noget med:

<script type="text/javascript">
var activeImg;
function swapImages(ID) {
      elm = document.getElementById(ID).style
      if (activeImg) {activeImg.display="none";}
      elm.display = (elm.display == "block") ? "none" : "block";
      activeImg = elm;
}
function initImg() {
    var imgs = [<?php
$offset = $page* $rowPrPage;
$query        ="SELECT id FROM katte_galleri ORDER BY id LIMIT $offset,$rowCount1;";
$result    = mysql_db_query ($database, $query, $link );
$imgs = array();
while ($r = mysql_fetch_row($result)) {
    $imgs[] = $r[0];
}
print "  var imgs = [\"".join("\",\"",$imgs)."\"];\n";
?>
      for (var i = 0; i < imgs.length; i++) {
          activeImg = document.getElementById("pic"+imgs[i]).style;
          activeImg.display = "block";
      }
}

Så vil dine id'er dynamisk blive indsat i dit javascript.

--
Morten Barklund
Avatar billede krk Nybegynder
05. april 2005 - 12:33 #3
barklund, jeg har sat din kode ind og nu er der ikke rigtig noget der virker.
( www.kryt.dk/katte )
Avatar billede krk Nybegynder
05. april 2005 - 12:35 #4
sig til hvis jeg skal sende hele koden - jeg advarre. Den er rimelig lang ;-)
Avatar billede busschou Praktikant
05. april 2005 - 12:37 #5
du får også en warning som kan ses i kildekoden
<b>Warning</b>:  mysql_fetch_row(): supplied argument is not a valid MySQL result resource in <b>/hsphere/local/home/boris/kryt.dk/katte/content/galleri.php</b> on line <b>15</b><br />
Avatar billede busschou Praktikant
05. april 2005 - 12:38 #6
måske pga dobbelte semikolon ...fjern det næstsidste
$query="SELECT id FROM katte_galleri ORDER BY id LIMIT $offset,$rowCount1;";
Avatar billede barklund Nybegynder
05. april 2005 - 12:39 #7
Skyldes sikkert, at din $rowCount1 ikke er defineret. Den skal du lige definere inden du laver dette script oppe i dit javascript.
Avatar billede krk Nybegynder
05. april 2005 - 12:44 #8
Nej, det virker stadig ikke.

Jeg sender lige hele koden med som den ser ud nu:

<?php
$pageparm = $_REQUEST['pageparm'];

$offset         = 0;
$rowCount1         = 7;
$rowCount2         = 5;
$rowCount3         = 5;
$rowPrPage        = $rowCount1+$rowCount2+$rowCount3;
$page            = $pageparm;
$imgCounter        = ($page+1)*$rowPrPage;
?>

<script type="text/javascript">
var activeImg;
function swapImages(ID) {
      elm = document.getElementById(ID).style
      if (activeImg) {activeImg.display="none";}
      elm.display = (elm.display == "block") ? "none" : "block";
      activeImg = elm;
}
function initImg() {
    var imgs = [<?php
$query        ="SELECT id FROM katte_galleri ORDER BY id ";
$result    = mysql_db_query ($database, $query, $link );
$imgs = array();
while ($r = mysql_fetch_row($result)) {
    $imgs[] = $r[0];
}
print "  var imgs = [\"".join("\",\"",$imgs)."\"];\n";
?>
      for (var i = 0; i < imgs.length; i++) {
          activeImg = document.getElementById("pic"+imgs[i]).style;
          activeImg.display = "block";
      }
}

window.onload=initImg;
</script>

<?php


//Henter counter.php som tæller hvor mange rækker der er i tabellen i databasen
require("counter.php");

//Henter de første 7 billeder i tabellen
$offset = $page* $rowPrPage;
$query        ="SELECT * FROM katte_galleri ORDER BY id LIMIT $offset,$rowCount1;";
$result    = mysql_db_query ($database, $query, $link );


print"<table width='700' border='0' cellspacing='0' cellpadding='0'>
  <tr valign='top'> ";
    while($row = mysql_fetch_array($result)){
        $id                = $row[id];
        $billede        = $row[billede];
        $tekstindhold     = $row[tekstindhold];
        $imgaestor         = $row[imgaestor];
        print"<td width='100'><a href='http://kryt.dk/gade'><img src ='content/upload/$billede' width='90' height='70' border='0' onmouseover=\"swapImages('pic$id')\" onmouseout=\"swapImages('pic$id')\"  ></a> </td>\n";
       
                                                                                                                                   
    }       
   
print"</tr><tr valign='top'><td width='100'>";
   

//Henter de næste 5 billeder fra tabellen
$offset =$offset+$rowCount1;   
$query        ="SELECT * FROM katte_galleri ORDER BY id LIMIT $offset,$rowCount2;";
$result    = mysql_db_query ($database, $query, $link );

    print"<table width='100' border='0' cellspacing='0' cellpadding='0'>";
    while($row = mysql_fetch_array($result)){
        $id                = $row[id];
        $billede        = $row[billede];
        $tekstindhold     = $row[tekstindhold];
        $imgaestor         = $row[imgaestor];
        print"<tr><td><a href='http://kryt.dk/gade'><img src ='content/upload/$billede' width='90' height='70' border='0' onmouseover=\"swapImages('pic$id')\" onmouseout=\"swapImages('pic$id')\"  ></a> </td>
               
            </tr>";
    }   
   
print"</table></td><td colspan='5' rowspan='5'>";









//Henter de store billeder der skal skifte ved mouseover
$start        = $page*$rowPrPage;
$query        ="SELECT * FROM katte_galleri ORDER BY id LIMIT $start,1;";
$result        = mysql_db_query ($database, $query, $link );
    print"<table><tr><td>";
    while($row = mysql_fetch_array($result)){
        $id                = $row[id];
        $billede        = $row[billede];
        $tekstindhold     = $row[tekstindhold];
        $imgaestor         = $row[imgaestor];
       
        print"<img id='pic$id' src='content/upload/$imgaestor' style='display:block'>\n ";
    }
   
   
//$start = $start+1;
$query        ="SELECT * FROM katte_galleri ORDER BY id LIMIT $start,$num_rows;";
$result    = mysql_db_query ($database, $query, $link );


    while($row = mysql_fetch_array($result)){
        $id                = $row[id];
        $billede        = $row[billede];
        $tekstindhold     = $row[tekstindhold];
        $imgaestor         = $row[imgaestor];
       
        print"<img id='pic$id' src='content/upload/$imgaestor' style='display:none'>\n ";
    }

print"</td></tr>";
print"<tr><td></td></tr></table>";

print"</td><td width='100'>";
































   
   
//Henter de sidste 5 billeder fra tabellen   
$offset =$offset+$rowCount2;   
$query    ="SELECT * FROM katte_galleri ORDER BY id LIMIT $offset,$rowCount3;";
$result    = mysql_db_query ($database, $query, $link );

    print"<table width='100' border='0' cellspacing='0' cellpadding='0'>";
    while($row = mysql_fetch_array($result)){
        $id                = $row[id];
        $billede        = $row[billede];
        $tekstindhold     = $row[tekstindhold];
        $imgaestor         = $row[imgaestor];
        print"<tr><td><a href='http://kryt.dk/gade'><img src ='content/upload/$billede' width='90' height='70' border='0' onmouseover=\"swapImages('pic$id')\" onmouseout=\"swapImages('pic$id')\"  ></a> </td>
               
            </tr>";
    }   

print"</table></td></tr>";

//Previous knap
$page = $page-1;
print"<tr align='left'><td colspan='3'>";

    if($page>-1){
        print" <a href='?page=galleri&pageparm=$page'>Previous</a> &nbsp;&nbsp;&nbsp;&nbsp;</td>";
    }

   
//Next knap
$page = $page+2;
print"<td colspan='4' align='right'>";
    if($num_rows>$imgCounter){
    print" <a href='?page=galleri&pageparm=$page'>Next</a> &nbsp;&nbsp;&nbsp;&nbsp;</td></tr></table>";
    }

?>
Avatar billede krk Nybegynder
05. april 2005 - 12:45 #9
Ups. kommet til at stå lidt/meget rodet. Håber I kan læse det
Avatar billede krk Nybegynder
05. april 2005 - 12:57 #10
Det kan godt være jeg ikke har fået beskrevet tydeligt nok hvad det er der skal ske -Undskyld for det.

Men det jeg regnede med der "bare" kunne ske var at "pic1" blev til en variabel, så når jeg var på side "o" ville der i stå pic1 fordi det første billede skal være block. Og så på side "1" ville pic1 blive ændret til "pic18" fordi nu er det jo det billede der skal være block.

Giver det mere mening??

Altså "pic1" vil jeg gerne have lavet til en variabel (pic$id)som så tæller 17 op for hver gang jeg skifter side.

Kan det lade sig gøre??
Avatar billede barklund Nybegynder
05. april 2005 - 13:01 #11
Hov, jeg fik vist også lavet nogle fejl - det skulle være:

function initImg() {
<?php
$offset = $page* $rowPrPage;
$query  = "SELECT * FROM katte_galleri ORDER BY id LIMIT $offset,$rowCount1";
$result = mysql_db_query ($database, $query, $link );
$imgs  = array();
while ($r = mysql_fetch_row($result)) {
    $imgs[] = $r[0];
}
print "\tvar imgs = [\"".join("\",\"",$imgs)."\"];\n";
?>
      for (var i = 0; i < imgs.length; i++) {
          activeImg = document.getElementById("pic"+imgs[i]).style;
          activeImg.display = "block";
      }
}

Så burde der ske et eller andet :)

--
Morten Barklund
Avatar billede barklund Nybegynder
05. april 2005 - 13:03 #12
Så det er kun første billede, der skal være block? Ikke dem allesammen? Se, det vidste jeg jo ikke :)

Så er det bare:

<?php
  $offset = $page* $rowPrPage;
  $query  = "SELECT id FROM katte_galleri ORDER BY id LIMIT 1 OFFSET $offset";
  $result = mysql_db_query ($database, $query, $link );
  $id = mysql_result($result, 0, 0);
?>
function initImg() {
      activeImg = document.getElementById("pic<?php print $id;?>").style;
      activeImg.display = "block";
}

--
Morten Barklund
Avatar billede krk Nybegynder
05. april 2005 - 13:06 #13
Hvor ville det have været smart hvis jeg havde beskrevt opgaven ordentligt.
Det virker nu :-)
Tak for hjælpen
Avatar billede barklund Nybegynder
05. april 2005 - 13:09 #14
Det havde nok hjulpet - held og lykke med kattene :)
Avatar billede barklund Nybegynder
05. april 2005 - 13:34 #15
Tark for points :)
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