devotionMedlem sedan jan. 20013 582 inlägg 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
Du kanske ska förklara ditt JavaScript problem bättre?
Peter SMedlem sedan dec. 20025 483 inlägg <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 :)
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 Ett sätt kan ju vara att använda en frågesträng - typ &storel=6,65.
Peter SMedlem sedan dec. 20025 483 inlägg <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 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ö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
Peter SMedlem sedan dec. 20025 483 inlägg 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 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 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 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 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 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 <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 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 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 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 " "
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