Avatar billede snixi Nybegynder
19. september 2008 - 18:48 Der er 16 kommentarer

3 små opgaver

Hej alle.

Jeg har 3 opgaver som jeg håber i kan hjælpe mig med. Jeg er selv gået kold i dem så der er 200 point til den der svarer :). Svar helst i html og php. De lyder:

1. Frame refresh:
Jeg har en hjemmeside med 3 frames: top-, menu- og mainframe. Findes der en simpel funktion i html eller php til at refreshe en frame fra en anden? Refresh skal kun ske 1 gang!

2. Udskrive tekst MED linjeskift.
Fra en database henter jeg en lille beskrivende tekst. Når jeg vil skrive teksten ud gør jeg følgende, men får ikke linjeskift med:

include("dbconnect.php"); //opretter forbindelse til db'en.
$query = mysql_query("SELECT description FROM treats WHERE event=1");
$row = mysql_fetch_assoc($query);
mysql_close($link);

echo $row['description'];

Hvad skal der gøres?

3. Automatisk skift mellem billeder hvert 10. sekund.
Mit sidste spørgsmål er næsten selvsigende, men hvordan gør jeg det smartest?

På forhånd tak for hjælpen.
Venlig hilsen
René
Avatar billede j4k0b Nybegynder
19. september 2008 - 19:06 #1
1) <a href="java script:window.top.frames['FRAME_NAVN'].location.refresh()">Reload</a>

2) echo nl2br($row['description']);

3) Det er ikke specielt selvsigende :-)
Avatar billede j4k0b Nybegynder
19. september 2008 - 19:07 #2
1) skulle være

<a href="java script:window.top.frames['FRAME_NAVN'].location.reload(true)">Reload</a>
Avatar billede snixi Nybegynder
19. september 2008 - 19:14 #3
Først mange tak for hurtigt svar.

3)
Jeg har et billede på min forside som skifter tilfældig mellem 100 jpeg filer. Det funker. Men det kunne være super nice hvis den skiftede af sig selv fremfor at man manuelt skal opdatere siden.
Avatar billede erikjacobsen Ekspert
19. september 2008 - 19:21 #4
3)  inspiration i http://n0p.com/so/63011.php
Avatar billede snixi Nybegynder
19. september 2008 - 19:53 #5
1) Virker!
2) Virker ikke. Jeg har sat det ind som html kode.

<?php
switch($status){
case 3{
gør noget...
?>
<a href="java script:window.top.frames['menu'].location.reload(true)">Reload</a>
<?php
}
}
?>

3) Skal jeg lige fatte... Kan man ikke undgå at bruge et defineret array og i stedet lade den søge i en mappe med jpeg filer? Eller i vælge "1-300".jpeg?
Avatar billede erikjacobsen Ekspert
19. september 2008 - 19:57 #6
Javascript kan ikke søge i mapper på serveren.
Avatar billede snixi Nybegynder
19. september 2008 - 19:57 #7
Jeg har set jeg mangler kolon, men det er ikke det der fejler. Jeg kan se den skriver "Reload". Jeg tænker på om mit testmiljø kan have noget at sige? Bruger mowes_portable II med Apache, MySQL og PHP kørende
Avatar billede snixi Nybegynder
19. september 2008 - 20:01 #8
3) Kan man så ikke bygge det her ind i dit svar? Det er den php kode jeg bruger nu, men jeg er ikke verdensmester i java:

// Change this to the total number of images in the folder
$total = "132";
// Change to the type of files to use eg. .jpg or .gif
$file_type = ".jpg";
// Change to the location of the folder containing the images
$image_folder = "images/";
// You do not need to edit below this line
$start = "1";
$random = mt_rand($start, $total);
$image_name = $random . $file_type;
echo "<img src=\"$image_folder/$image_name\" width='400' alt=\"$image_name\" />";
?>
Avatar billede erikjacobsen Ekspert
19. september 2008 - 20:06 #9
Hvis du skal gøre det uden at reloade siden/spørge serveren, og gøre det i javascript, kan du een af

1) Lave et array af billednavn, fx med PHP, som i eksemplet (og tage et tilfældigt i arrayet)
2) Kalde billederne 1.jpg til 300.jpg, og vælge tilfældigt mellem 1 og 300
Avatar billede snixi Nybegynder
19. september 2008 - 20:22 #10
Jeg følger lige op på det i morgen.
Avatar billede showsource Seniormester
19. september 2008 - 20:48 #11
Det skulle lige prøves:

<html><head><title>Rotate image</title>

<script type="text/javascript">

var images = new Array();

<?php

$dir = "images/";

$d = dir($dir);
$i = 0;
while (false !== ($file = $d->read())) {

    if (is_file($dir ."/". $file)) {
    echo"images[".$i."] = \"".$file."\";\r\n";
    $i++;
    }
}

$d->close();

?>

curDate = new Date();
curSec = curDate.getSeconds();
adNr = curSec % images.length;
adTimer = 0;

function rotate(){
adNr = adNr + 1;

  if (adNr >= images.length) {
    adNr = 0;
    }
  var img = document.getElementsByTagName("img")["visimage"];
  img.setAttribute("src", "images/"+images[adNr]);
  adTimer = setTimeout("rotate()",5000);

}


</script>

</head>


<body onload="rotate();">

<img src="images/spacer.gif" id="visimage">



<body></html>

Går så ud fra at der kun er billeder i dir'et images.
Avatar billede erikjacobsen Ekspert
19. september 2008 - 20:52 #12
En lille idé vil være ikke at løbe kataloget med billeder igennem, som showsource viser her, hver gang en side skal vises. Det er hårdt ved serveren. Man behøver kun lave dette array, når der sker ændringer i billederne.
Avatar billede showsource Seniormester
19. september 2008 - 21:05 #13
Du mener at ha' en fil som includes i stedet for, hvori array'et med billeder står?

billeder.txt:

var images = new Array();

images[0] = "billede1.jpg";
images[1] = "billede2.jpg";
images[2] = "billede3.jpg";
images[3] = "billede4.jpg";
images[4] = "billede5.jpg";


Og så:

<html><head><title>Rotate image</title>

<script type="text/javascript">

<?php

include("billeder.txt");

?>

curDate = new Date();
curSec = curDate.getSeconds();
adNr = curSec % images.length;
adTimer = 0;

function rotate(){
adNr = adNr + 1;

  if (adNr >= images.length) {
    adNr = 0;
    }
  var img = document.getElementsByTagName("img")["visimage"];
  img.setAttribute("src", "images/"+images[adNr]);
  adTimer = setTimeout("rotate()",10000);

}


</script>

</head>


<body onload="rotate();">

<img src="images/spacer.gif" id="visimage">



</body></html>
Avatar billede erikjacobsen Ekspert
19. september 2008 - 21:21 #14
ja
Avatar billede snixi Nybegynder
20. september 2008 - 12:56 #15
Hej igen.

#showsource din kode til at skifte billeder virker perfekt. Mange tak!

Så mangler jeg kun at få løst problemet med refresh af mit 'menu' frame fra 'main' som skal ske automatisk når siden løber igennem en switch case....
#j4k0b jeg har prøvet lidt med dit forslag, men det vil ikke virke. Der sker ikke fejl, men menuen opdateres heller ikke.

<?php
switch($status){
  case 3:{
      gør noget... og
      "java script:window.top.frames['menu'].location.reload(true)";
  break;
  }
}
?>
Avatar billede snixi Nybegynder
20. september 2008 - 13:09 #16
Jeg skal også lange nogle points afsted på et tidspunkt. Synes i fortjener det :).
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