webForumDet fria alternativet

Visa ruta med länkar

JavaScriptur Javascript

18 svar · 879 visningar · startad av devotion

devotionMedlem sedan jan. 20013 582 inlägg
#1

Hej!

Håller på med ett litet avancerat projekt som är i sin linda...

Men!

Kan man göra så att man sparar en utsökning från en databas i en array.

Om det är "flera träffar" blir resultatet en länk. Där det står "fler resultat" typ.

Klickar man på länken "öppnas" en ruta med ´samtliga sökresultat som länkar. Man kan sedan välja ett resultat genom att klicka på länken. Rutan stängs då.

Som sagt jag är precis i början av detta...

Mvh
Henrik

ett_alternativ.gif
devotionMedlem sedan jan. 20013 582 inlägg
#2

Hmmm!

Ingen?

Mvh
Henrik

PepeJeriaMedlem sedan feb. 2003774 inlägg
#3

Du kanske ska förklara ditt JavaScript problem bättre?

Peter SMedlem sedan dec. 20025 483 inlägg
#4
<script>
function showResults(e,a)
{
  var left, top;
  if (window.event){
    left = window.event.clientX;
    top  = window.event.clientY;
  } else if (e){
    left = e.pageX;
    top  = e.pageY;
  }

  if (left && top){
    window["a"] = a;
    elm.style.left = left;
    elm.style.top  = top;
    elm.style.visibility = "visible";
  }

  return false;
}

window.onload = function()
{
  window["elm"] = document.getElementById("result");
}

document.onclick = function(e)
{
  var tmp = window.event ? window.event.srcElement : e ? e.target : 0,
      fnd = false;
  if (tmp){
    while (tmp){
      if (tmp == elm || (typeof a != "undefined" && tmp == a)) {
        fnd = true;
        break;
      }
      tmp = tmp.parentNode;
    }
  }

  if (!fnd) elm.style.visibility = "hidden";
}
</script>

<table border="1">
 <tr>
  <td>asfdasölfasöfkaökfaslkf</td>
  <td>asdfasödlfjaslöjasljfasljfalsjalsjfalsjfaöljfajsfasöjlfjas</td>
  <td>safasfasfasfaa</td>
  <td><a href="" onclick="return showResults(event,this)">5,55 kr</a></td>
 </tr>
</table>

<style>
#result{
  background: white;
  border    : 1px solid;
  padding   : 5px;
  position  : absolute;
  visibility: hidden;
}

ul,li{
  list-style: none;
  margin    : 0;
  padding   : 0;
}
</style>
<div id="result">
 <ul>
  <li><a href="">resultat 1</a></li>
  <li><a href="">resultat 2</a></li>
 </ul>
</div>

Om antalet resultat från databassökningen > 1, loopar du ut de länkar du vill ha i div#result och skriver ut "5,55 kr" som länk enligt bifogat exempel. Annars skriver du inte ut "5,55 kr" som länk. :)

devotionMedlem sedan jan. 20013 582 inlägg
#5

:)

Ser ju fint ut....

Men hur gör man för att fylla i det resulatet man klickar på i tabellen så att säga?

Jag "tror" att min tanke är att ladda o sidan med det valda prisen i tabellraden...

Var jag luddig?

;)

/Henrik

Peter SMedlem sedan dec. 20025 483 inlägg
#6

Ett sätt kan ju vara att använda en frågesträng - typ &storel=6,65.

devotionMedlem sedan jan. 20013 582 inlägg
#7

Peter S skrev:

Ett sätt kan ju vara att använda en frågesträng - typ &storel=6,65.

Hur menar du?

Mvh
Henrik

Peter SMedlem sedan dec. 20025 483 inlägg
#8
<div id="result">
 <ul>
  <li><a href="&storel=5,55">0400123 - 5,55 kr</a></li>
  <li><a href="&storel=6,65">0400103 - 6,65 kr</a></li>
 </ul>
</div>

Om det existerar ett värde för storel i frågesträngen använder du det när texten skrivs i tabellraden.

devotionMedlem sedan jan. 20013 582 inlägg
#9

Något sådant här kanske?

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>S&ouml;k artikel</title>
<script>
function showResults(e,a)
{
  var left, top;
  if (window.event){
    left = window.event.clientX;
    top  = window.event.clientY;
  } else if (e){
    left = e.pageX;
    top  = e.pageY;
  }

  if (left && top){
    window["a"] = a;
    elm.style.left = left;
    elm.style.top  = top;
    elm.style.visibility = "visible";
  }

  return false;
}

window.onload = function()
{
  window["elm"] = document.getElementById("result");
}

document.onclick = function(e)
{
  var tmp = window.event ? window.event.srcElement : e ? e.target : 0,
      fnd = false;
  if (tmp){
    while (tmp){
      if (tmp == elm || (typeof a != "undefined" && tmp == a)) {
        fnd = true;
        break;
      }
      tmp = tmp.parentNode;
    }
  }

  if (!fnd) elm.style.visibility = "hidden";
}

</script>
</head>
<body>
<%
If request("Storel") = "" then
	Storel = "start"
Else
	Storel = request("Storel")
End If

%>
<table border="1">
 <tr>
  <td>asfdasölfasöfkaökfaslkf</td>
  <td>asdfasödlfjaslöjasljfasljfalsjalsjfalsjfaöljfajsfasöjlfjas</td>
  <td>safasfasfasfaa</td>
  <td><a href="" onclick="return showResults(event,this)"><% =Storel %></a></td>
 </tr>
</table>

<style>
#result{
  background: white;
  border    : 1px solid;
  padding   : 5px;
  position  : absolute;
  visibility: hidden;
}

ul,li{
  list-style: none;
  margin    : 0;
  padding   : 0;
}
</style>
<div id="result">
 <ul>
  <li><a href="ruta.asp?storel=5,55">0400123 - 5,55 kr</a></li>
  <li><a href="ruta.asp?storel=6,65">0400103 - 6,65 kr</a></li>
 </ul>
</div>
</body>
</html>

Tanken är ju att man ska kunna jämföra priserna i raden...

Och kunna lägga artiklaran i en varukorg för att kunna se vad det toatalia priset blir för en jämförelse...

Innan så jämförde jag ju unika artiklenummer och det var ju inga problem. Jag hade en add-knapp som tog med sig artikelnumret till databasen...

Men, hur gör man nu... Kan man få med sig värdet som står i en tabellcell på något sätt??

BVifogade en bild på hur det såg ut förrut...

Hmm.. avancerat kanske?

//Henrik

Mvh
Henrik

Capture_34.jpg
Peter SMedlem sedan dec. 20025 483 inlägg
#10

Du kan använda dig av input.hidden-fält som är kopplade till tabellrutorna:

<script>
function showResults(e,a)
{
  var left, top;
  if (window.event){
    left = window.event.clientX;
    top  = window.event.clientY;
  } else if (e){
    left = e.pageX;
    top  = e.pageY;
  }

  if (left && top){
    window["a"] = a;
    elm.style.left = left;
    elm.style.top  = top;
    elm.style.visibility = "visible";
  }

  return false;
}

window.onload = function()
{
  window["elm"] = document.getElementById("result");
}

document.onclick = function(e)
{
  var tmp = window.event ? window.event.srcElement : e ? e.target : 0,
      fnd = false;
  if (tmp){
    while (tmp){
      if (tmp == elm || (typeof a != "undefined" && tmp == a)) {
        fnd = true;
        break;
      }
      tmp = tmp.parentNode;
    }
  }

  if (!fnd) elm.style.visibility = "hidden";
}

function changeValue(s,i)
{
  if (a && elm){
    a.innerHTML = s + " kr";
    document.forms[0].elements[i].value = s;
    elm.style.visibility = "hidden";
  }
}
</script>

<form>
<table border="1">
 <tr>
  <td>asfdasölfasöfkaökfaslkf</td>
  <td>asdfasödlfjaslöjasljfasljfalsjalsjfalsjfaöljfajsfasöjlfjas</td>
  <td>safasfasfasfaa</td>
  <td><a href="" onclick="return showResults(event,this)">5,55 kr</a><input type="hidden" name="foo"></td>
 </tr>
</table>

<style>
#result{
  background: white;
  border    : 1px solid;
  padding   : 5px;
  position  : absolute;
  visibility: hidden;
}

ul,li{
  list-style: none;
  margin    : 0;
  padding   : 0;
}
</style>
<div id="result">
 <ul>
  <li><span onclick="changeValue('5,55','foo')" style="cursor:pointer;color:blue">5,55 kr</span></li>
  <li><span onclick="changeValue('6,65','foo')" style="cursor:pointer;color:blue">6,65 kr</span></li>
 </ul>
</div>
</form>
devotionMedlem sedan jan. 20013 582 inlägg
#11

Men det är ju helt fantastiskt.... Det finns ju lösningar för allt!

Tack så länge, Peter S.. :)

Mvh
//Henrik

devotionMedlem sedan jan. 20013 582 inlägg
#12

Hej!

Har testat koden lite (http://www.webforum.nu/showthread.php?p=1189318#post1189318)

Kan man utveckla det hela lite kanske. Jag skulle vilja ha lite mer information i rutan som öppnas förutom priset...

Tex artikelnummer, kategori mm... Fast när jag väljer en artikel är det bara priset som skall hoppa upp i hiddenfältet...

Snurrigt?
Hoppas någon fattar...

Mvh
Henrik

devotionMedlem sedan jan. 20013 582 inlägg
#13

Då tar vi om det...;) blir snurrigare och snurrigare detta..

Jag vill även att artikelnumret skall visas i tabellen tillsammans med priset.

Mvh
Henrik

Peter SMedlem sedan dec. 20025 483 inlägg
#14

Tjena Henrik! :)

Like so?

<script>
function showResults(e,a)
{
  var left, top;
  if (window.event){
    left = window.event.clientX;
    top  = window.event.clientY;
  } else if (e){
    left = e.pageX;
    top  = e.pageY;
  }

  if (left && top){
    window["a"] = a;
    elm.style.left = left;
    elm.style.top  = top;
    elm.style.visibility = "visible";
  }

  return false;
}

window.onload = function()
{
  window["elm"] = document.getElementById("result");
}

document.onclick = function(e)
{
  var tmp = window.event ? window.event.srcElement : e ? e.target : 0,
      fnd = false;
  if (tmp){
    while (tmp){
      if (tmp == elm || (typeof a != "undefined" && tmp == a)) {
        fnd = true;
        break;
      }
      tmp = tmp.parentNode;
    }
  }

  if (!fnd) elm.style.visibility = "hidden";
}

function changeValue(c,s,i)
{
  if (a && elm){
    a.innerHTML = c + s + " kr";
    document.forms[0].elements[i].value = s;
    elm.style.visibility = "hidden";
  }
}
</script>

<form>
<table border="1">
 <tr>
  <td>asfdasölfasöfkaökfaslkf</td>
  <td>asdfasödlfjaslöjasljfasljfalsjalsjfalsjfaöljfajsfasöjlfjas</td>
  <td>safasfasfasfaa</td>
  <td><a href="" onclick="return showResults(event,this)" style="color:blue;text-decoration:none">0400123 - 5,55 kr</a><input type="hidden" name="foo"></td>
 </tr>
</table>

<style>
#result{
  background: white;
  border    : 1px solid;
  padding   : 5px;
  position  : absolute;
  visibility: hidden;
}

ul,li{
  list-style: none;
  margin    : 0;
  padding   : 0;
}
</style>
<div id="result">
 <ul>
  <li><span onclick="changeValue('0400123 - ','5,55','foo')" style="cursor:pointer;color:blue">0400123 - 5,55 kr</span></li>
  <li><span onclick="changeValue('0400103 - ','6,65','foo')" style="cursor:pointer;color:blue">0400103 - 6,65 kr</span></li>
 </ul>
</div>
</form>
devotionMedlem sedan jan. 20013 582 inlägg
#15

Perfekt.. :)

Men, skulle man få till ett tredje val också?

så det blir:
Artikelnummer
Pris
Kategori....

När jag tänker efter så är det nog bara artikelnummer som behöver kopplas till hidden-fältet... Det blir ju unikt tillsammans med leverantörsid´t

Har nog tagit mig vatten över huvudet....

Hela denna idén verkar bli mycket komplicerad.. men, men.. vi kör på så får vi se var vi hamnar...

Tack Peter S!

Mvh
Henrik

Peter SMedlem sedan dec. 20025 483 inlägg
#16
<script>
function showResults(e,a)
{
  var left, top;
  if (window.event){
    left = window.event.clientX;
    top  = window.event.clientY;
  } else if (e){
    left = e.pageX;
    top  = e.pageY;
  }

  if (left && top){
    window["a"] = a;
    elm.style.left = left;
    elm.style.top  = top;
    elm.style.visibility = "visible";
  }

  return false;
}

window.onload = function()
{
  window["elm"] = document.getElementById("result");
}

document.onclick = function(e)
{
  var tmp = window.event ? window.event.srcElement : e ? e.target : 0,
      fnd = false;
  if (tmp){
    while (tmp){
      if (tmp == elm || (typeof a != "undefined" && tmp == a)) {
        fnd = true;
        break;
      }
      tmp = tmp.parentNode;
    }
  }

  if (!fnd) elm.style.visibility = "hidden";
}

function changeValue(p,c,s,i)
{
  if (a && elm){
    a.innerHTML = p + " - " + c + " - " + s + " kr";
    document.forms[0].elements[i].value = c;
    elm.style.visibility = "hidden";
  }
}
</script>

<form>
<table border="1">
 <tr>
  <td>asfdasölfasöfkaökfaslkf</td>
  <td>asdfasödlfjaslöjasljfasljfalsjalsjfalsjfaöljfajsfasöjlfjas</td>
  <td>safasfasfasfaa</td>
  <td><a href="" onclick="return showResults(event,this)" style="color:blue;text-decoration:none">Kat1 - 0400123 - 5,55 kr</a><input type="hidden" name="foo"></td>
 </tr>
</table>

<style>
#result{
  background: white;
  border    : 1px solid;
  padding   : 5px;
  position  : absolute;
  visibility: hidden;
}

ul,li{
  list-style: none;
  margin    : 0;
  padding   : 0;
}
</style>
<div id="result">
 <ul>
  <li><span onclick="changeValue('Kat1','0400123','5,55','foo')" style="cursor:pointer;color:blue">Kat1 - 0400123 - 5,55 kr</span></li>
  <li><span onclick="changeValue('Kat3','0400103','6,65','foo')" style="cursor:pointer;color:blue">Kat3 - 0400103 - 6,65 kr</span></li>
 </ul>
</div>
</form>

:)

devotionMedlem sedan jan. 20013 582 inlägg
#17

Funkar ju finfint....

Men, om jag testar att skicka värdet på "foo" utan att ha ändrat i listrutan så skickas inget... Om jag däremot ändrat i listrutan så skickas värdet... Hur sätter jag defaultvärdet på "foo"?

<input type="hidden" name="foo">

Mvh
Henrik

devotionMedlem sedan jan. 20013 582 inlägg
#18

Löste det föregående inlägg med:

<input type="hidden" name="foo" value="<% =sArticleNumber %>">

Mvh
Henrik

devotionMedlem sedan jan. 20013 582 inlägg
#19

Hej!

Nu börjar det närma sig.. :)

Jag har följande kod:

<%
'Deklarera variabler
'*******************
Dim objConn, objRS, objDict, sSQL, sSuppliers, sSupplierArticles, sArticles, sKey, iSupplierId, sArticle, sSupplierarticle

' Öppna databasen
' ***************
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString = Application("sConn")
objConn.Open

sSQL = 	"SELECT tblArticle.articleName, tblArticle.articleUnit, tblPrice.articlePrice, tblSupplier.SupplierName, " &_
		"tblCart.articleAmount, tblSupplier.SupplierId, tblCategory.CategoryName, tblPrice.articleNumber " &_
		"FROM tblArticle " &_
		"INNER JOIN tblPrice ON tblArticle.articlenumber = tblPrice.articleNumber " &_
		"INNER JOIN tblSupplier ON tblPrice.articleSupplierId = tblSupplier.SupplierId " &_
		"INNER JOIN tblCart ON tblArticle.articleName = tblCart.articleName " &_
		"INNER JOIN tblCategory ON tblPrice.articleSupplierId = tblCategory.supplierId AND tblPrice.articleCategoryNumber = tblCategory.categoryNumber " &_
		"ORDER BY tblPrice.articlePrice"

Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open sSQL, objConn, 3, 1

set sSuppliers=CreateObject("Scripting.Dictionary")
set sArticles=CreateObject("Scripting.Dictionary")
set sSupplierArticles=CreateObject("Scripting.Dictionary")

Do while not objRS.EOF

	sSuppliers(cstr(objRS("SupplierId"))) = cstr(objRS("SupplierName"))		
	sArticles(cstr(objRS("articleName"))) = cstr(objRS("articleUnit"))
	sKey=cstr(objRS("SupplierId")) & vbTab & cstr(objRS("articleName"))
	if not sSupplierarticles.Exists(sKey) then
		set sSupplierArticles(sKey)=CreateObject("Scripting.Dictionary")
	end if
	sSupplierArticles(sKey)(cstr(objRS("articleNumber")))=cdbl(objRS("articlePrice"))

	objRs.MoveNext
	
Loop	

response.write "<table border='1'><tr><td>Artikelbenämning</td><td>Enhet</td>"

	for each iSupplierId in sSuppliers
		response.write "<td>" & sSuppliers(iSupplierId) & "</td>"
	next

	response.write "</tr>"

	for each sArticle in sArticles
		response.write "<tr><td>" & sArticle & "</td><td>" & sArticles(sArticle) & "</td>"
		for each iSupplierId in sSuppliers
			response.write "<td>" 
			skey=iSupplierId & vbTab & sArticle
			if not sSupplierArticles.Exists(sKey) then
				response.write "&nbsp;"
			else
				for each sSupplierarticle in sSupplierarticles(sKey)
					response.write [b]sSupplierarticle & ":" & sSupplierarticles(sKey)(sSupplierarticle) & "<br>"[/b]
				next
			end if
			response.write "</td>"
		next
		response.write "</tr>"
	next

response.write "</table>"

objRS.Close
Set objRS = Nothing

objConn.Close
Set objConn = Nothing

set sSuppliers = Nothing
set sArticles = Nothing
set sSupplierArticles = Nothing
%>

som ger resultatet:
http://80.73.182.130/articles/Cart.asp

Hur kan man kombinera denna koden med din javascript-kod Peter S? så jag får en sån fin länkruta istället för alla priser i tabellcellen??

Mvh
Henrik

141 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
137 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)