Avatar billede mazey Praktikant
17. august 2005 - 23:07 Der er 21 kommentarer og
1 løsning

Spørgsmål omhandlende koordinatsystem

Jeg har tidligere postet et spørgsmål omhandlende et koordinatsystem som roenving så fint hjalp mig med, og alt virkede som det skulle.
Nu skal jeg have lavet lidt mere på det.
Jeg skal ud fra en række i min tabel i min database bestemme hvilken slags billede den skal vise.

Det som roenving så fint gav mig er som følger:

<script type="text/javascript">
var prikker = new Array();

//her kalder du din database og genererer linjer som de efterfølgende:

prikker[prikker.length] = [100,200,"Ringkøbing",10];//eksempel med venstre, top, titel og amt
prikker[prikker.length] = [300,400,"København",1];

window.onload = function(){
  var pic;
  for(i=0;prikker.length>i;i++){
    pic = document.createElement("img");
    pic.src = "prik.gif";
    pic.style.position = 'absolute';
    pic.style.left = prikker[i][0] + 'px';
    pic.style.top = prikker[i][1] + 'px'
    pic.title = prikker[i][2] + " -- Amt nr. " + prikker[i][3];
    document.body.appendChild(pic);
  }
}
</script>

Nu har jeg så lavet databasekald og det virker som det skal, men jeg skal nu have den til at skifte mellem prik.gif og streg.gif.
Dette skal skelnes mellem en række i en tabel hvor værdien enten er 0 eller 1. Hvordan gør jeg lige det? -Jeg har forsøgt at indblande lidt php i det, men det fungerer ikke rigtigt, da den while løkke jeg laver ikke kan inkludere selve window.onload funktionen.

Er der nogen der lige kan løse dette problem?

Skriv endelig hvis i ikke forstår mit spørgsmål

Mvh

Mazey
Avatar billede roenving Novice
17. august 2005 - 23:50 #1
<script type="text/javascript">
var prikker = new Array();

//her kalder du din database og genererer linjer som de efterfølgende:

prikker[prikker.length] = [100,200,"Ringkøbing",10,0];//eksempel med venstre, top, titel og amt + type
prikker[prikker.length] = [300,400,"København",1,1];//type 0 giver streg, type 1 giver prik !-)

window.onload = function(){
  var pic;
  for(i=0;prikker.length>i;i++){
    pic = document.createElement("img");
    pic.src = prikker[i][4]?"prik.gif":"streg.gif";
    pic.style.position = 'absolute';
    pic.style.left = prikker[i][0] + 'px';
    pic.style.top = prikker[i][1] + 'px'
    pic.title = prikker[i][2] + " -- Amt nr. " + prikker[i][3];
    document.body.appendChild(pic);
  }
}
</script>
Avatar billede mazey Praktikant
18. august 2005 - 00:21 #2
Tak for den hurtige respons...
det virker dog ikke helt...

Det jeg har lavet ser således ud:

<?
$foresp = mysql_query("SELECT * FROM metaltest");
?>

<script type="text/javascript">

var prikker = new Array();
//her kalder du din database og genererer linjer som de efterfølgende:
<?
while ($rec = mysql_fetch_array($metal_result)) {
?>
prikker[prikker.length] = ["<?=$rec["x"]?>","<?=$rec["y"]?>","<?=$rec["metal_by"]?>","<?=$rec["amtnr"]?>","<?=$rec["metal_type"]?>"];//eksempel med venstre, top, titel og amt
<?
}
?>
window.onload = function(){
  var pic;
  for(i=0;prikker.length>i;i++){
    pic = document.createElement("img");
    pic.src = prikker[i][4]?"prik.gif":"prik1.gif";
    pic.style.position = 'absolute';
    pic.style.left = prikker[i][0] + 'px';
    pic.style.top = prikker[i][1] + 'px'
    pic.title = prikker[i][2] + " -- Amt nr. " + prikker[i][3];
    document.body.appendChild(pic);

  }
}

</script>

Den laver ingen fejl og viser også alle prikker, men den laver ingen forskel på om der står 0 eller 1 i feltet, det er stadig den samme prik...

har lavet vis kode i explorer og der ser det rigtigt nok ud, hvor nogle af dem har værdien 1 og andre 0...
Avatar billede roenving Novice
18. august 2005 - 00:26 #3
Du har et sæt gåseøjne i overskud:

prikker[prikker.length] = ["<?=$rec["x"]?>","<?=$rec["y"]?>","<?=$rec["metal_by"]?>","<?=$rec["amtnr"]?>",<?=$rec["metal_type"]?>];

-- alternativt kan du teste på værdien:

    pic.src = prikker[i][4] == "1"?"prik.gif":"prik1.gif";
Avatar billede roenving Novice
18. august 2005 - 00:26 #4
-- altså _enten_ den ene _eller_ den anden !-)
Avatar billede roenving Novice
18. august 2005 - 00:50 #5
Faktisk behøver du kun gåseøjne om den egentlige tekststreng:

prikker[prikker.length] = [<?=$rec["x"]?>,<?=$rec["y"]?>,"<?=$rec["metal_by"]?>",<?=$rec["amtnr"]?>,<?=$rec["metal_type"]?>];
Avatar billede mazey Praktikant
18. august 2005 - 10:22 #6
Mesterligt... det virker som det skal.... lige en sidste ting... kan det lade sig gøre at lave hvert resultat til et link? forstået på den måde, at man gerne skal kunne klikke på hver prik og derved komme til en anden side!... kan det lade sig gøre? Man kan ihvertfald ikke bare sådan lige smide en a href ind i koden :D
Avatar billede roenving Novice
18. august 2005 - 11:47 #7
Jo, alt kan lykkes i en glasovn !-)

window.onload = function(){
  var pic;
  for(i=0;prikker.length>i;i++){
    pic = document.createElement("img");
    pic.src = prikker[i][4]?"prik.gif":"prik1.gif";
    pic.style.position = 'absolute';
    pic.style.left = prikker[i][0] + 'px';
    pic.style.top = prikker[i][1] + 'px';
    if(prikker[i][5]){
      pic.style.cursor = 'pointer';
      pic.onclick = function(){location.href = prikker[i][5];};
    }
    pic.title = prikker[i][2] + " -- Amt nr. " + prikker[i][3];
    document.body.appendChild(pic);
  }
}

-- så skal evt. links lægges som den sjette variabel i arrayet, er der intet, skal der skrives f.eks. en tom streng !-)
Avatar billede mazey Praktikant
18. august 2005 - 13:07 #8
Det er da super rart at alting kan lade sig gøre... dejlig mentalitet!
Men jeg har forsøgt mig med det, og i min "vis kode" ser det også rigtigt nok ud, men den går bare ikke til en ny side, men viser at der er fejl på siden... hvad har jeg nu gjort galt :D

prikker[prikker.length] = [<?=$rec["x"]?>,<?=$rec["y"]?>,"<?=$rec["metal_by"]?>",<?=$rec["amtnr"]?>,<?=$rec["metal_type"]?>, "plu.php?=<?=$rec["afdeling"]?>"];//eksempel med venstre, top, titel og amt

Hvis du vil have flere point, så siger du bare til... det her er jo lidt off topic!
Avatar billede roenving Novice
18. august 2005 - 13:08 #9
Prøv at vise koden, eller endnu bedre linke, så jeg kan se den javascript-genererede kode !-)
Avatar billede roenving Novice
18. august 2005 - 13:09 #10
-- og hvad er fejlen ?-)
Avatar billede mazey Praktikant
18. august 2005 - 13:11 #11
Avatar billede roenving Novice
18. august 2005 - 14:45 #12
Arh, det er lidt tricky engang imellem at skulle bruge anonyme funktioner, men prøv sådan (absolut utestet !-)

window.onload = function(){
  var pic,link;
  for(i=0;prikker.length>i;i++){
    pic = document.createElement("img");
    pic.src = prikker[i][4]?"prik.gif":"prik1.gif";
    pic.style.position = 'absolute';
    pic.style.left = prikker[i][0] + 'px';
    pic.style.top = prikker[i][1] + 'px';
    if(prikker[i][5]){
      pic.style.cursor = 'pointer';
      link = prikker[i][5];
      pic.onclick = function(){location.href = link;};
    }
    pic.title = prikker[i][2] + " -- Amt nr. " + prikker[i][3];
    document.body.appendChild(pic);
  }
}
Avatar billede mazey Praktikant
18. august 2005 - 23:49 #13
Ja, men ikke desto mindre virker det næsten...
Men efter jeg har klikket på en prik og får vist resultatet fra den ene, kan jeg klikke på de andre, men resultatet skifter ikke.... har forsøgt at genindlæse siden (CTRL R), men det virker stadig ikke... er der en eller anden refresh agtig ting som skal lægges ind?

http://jens1.wi.ots.dk/metal/nyindex/index.php?id=901
Avatar billede mazey Praktikant
18. august 2005 - 23:53 #14
efter yderligere test kan jeg se at ligegyldigt hvilken prik man klikker på, kommer man til samme side... efter "vis kode", kan jeg se at det er den sidste række som den vælger...
Avatar billede roenving Novice
19. august 2005 - 00:00 #15
Prøv det i denne version:

window.onload = function(){
  var pic;
  for(i=0;prikker.length>i;i++){
    pic = document.createElement("img");
    pic.src = prikker[i][4]?"prik1.gif":"prik.gif";
    pic.style.position = 'absolute';
    pic.style.left = prikker[i][0] + 'px';
    pic.style.top = prikker[i][1] + 'px';
    if(prikker[i][5]){
      pic.style.cursor = 'pointer';
      var link = prikker[i][5];
      pic.onclick = function(){location.href = link;};
    }
    pic.title = prikker[i][2] + " -- Amt nr. " + prikker[i][3];
    document.body.appendChild(pic);
  }
}
Avatar billede mazey Praktikant
19. august 2005 - 00:02 #16
Samme resultat... må ellers sige du er hurtig! :D

Igen, hvis du vil have flere point (hvilket jeg mener er fortjent), så sig til!
Avatar billede roenving Novice
19. august 2005 - 00:20 #17
Tjah, så må man vel snyde:

window.onload = function(){
  var pic;
  for(i=0;prikker.length>i;i++){
    pic = document.createElement("img");
    pic.src = prikker[i][4]?"prik1.gif":"prik.gif";
    pic.style.position = 'absolute';
    pic.style.left = prikker[i][0] + 'px';
    pic.style.top = prikker[i][1] + 'px';
    if(prikker[i][5]){
      pic.style.cursor = 'pointer';
      pic.link = prikker[i][5];
      pic.onclick = function(){location.href = this.link;};
    }
    pic.title = prikker[i][2] + " -- Amt nr. " + prikker[i][3];
    document.body.appendChild(pic);
  }
}
Avatar billede mazey Praktikant
19. august 2005 - 00:24 #18
Jamen det er jo simpelthen mesterligt... :D

Du skal have mange tak for din tålmodighed og din høje kompetence... altid rart med sådanne brugere på eksperten.dk (og i det virkelige liv :D)

Vil du ikke have lidt flere point?
Avatar billede roenving Novice
19. august 2005 - 00:25 #19
Velbekomme '-)
Avatar billede roenving Novice
19. august 2005 - 00:28 #20
-- og tak fro point ;~}
Avatar billede mazey Praktikant
19. august 2005 - 00:29 #21
Jamen det giver jeg gerne væk for den rette hjælp! :D
God weekend!
Avatar billede roenving Novice
19. august 2005 - 00:30 #22
I lige måde !-)
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