Archief - ASP: Hulp beginner

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

733F

Legacy Member
Ik zit op mn stage en ik heb de opdracht gekregen een bestelformulier te maken voor abonnementen.
De website is in asp wat ik nooit kreeg op school, maar ik zou deze opdracht toch tot een goed eind willen brengen om er van bij te leren en omdat ze hier volgens mij toch niet weten welke opdracht ze mij anders moeten geven.

Deze code is mij deels gegeven.

PHP:
<%	Option Explicit
	Session.LCID = 2067
	Response.Expires = 0

	Function GetPodiumConnection()
		Dim oRet
		Dim strDSN
		strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("/") & "/stage/podium.mdb"
		Set oRet = Server.CreateObject("ADODB.Connection")
		oRet.Open strDSN
		Set GetPodiumConnection = oRet
	End Function	

	dim rs, rsConn, SQL, Prijs
	
	Set rsConn = GetPodiumConnection()	
	
	SQL = "SELECT * FROM tData INNER JOIN tEvents ON tData.tEvent_ID = tEvents.Event_ID WHERE datum >= now() AND Prijs <> 0 ORDER BY Datum"

	Set rs = rsConn.execute(SQL)
%>

	<SELECT id="lijst" onchange="voorstelling()">
	<option></option>
	
<%	do while not rs.EOF
		Response.Write("<OPTION value='" & rs("event_id") & "'>" & rs("Datum") & ": " & rs("Gezelschap") & " - " & rs("Titel") & " " & rs("Prijs") & "</OPTION>")
		rs.movenext
		

	loop
%>

	</SELECT>
		<br>


<%	rs.Close()
	Set rs = Nothing
	rsConn.Close()
	Set rsConn = Nothing
%>

Voor de rest heb ik al dingen toegevoegd waardoor een groot deel van mn werk gedaan is, natuurlijk weet ik niet of deze een beetje goed is, het is dan ook nog maar voorlopig.

PHP:
<head>
<%	Option Explicit
	Session.LCID = 2067
	Response.Expires = 0

	Function GetPodiumConnection()
		Dim oRet
		Dim strDSN
		strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("/") & "/stage/podium.mdb"
		Set oRet = Server.CreateObject("ADODB.Connection")
		oRet.Open strDSN
		Set GetPodiumConnection = oRet
	End Function	

	dim rs, rsConn, SQL, Prijs
	
	Set rsConn = GetPodiumConnection()	
	
	SQL = "SELECT * FROM tData INNER JOIN tEvents ON tData.tEvent_ID = tEvents.Event_ID WHERE datum >= now() AND Prijs <> 0 ORDER BY Datum"

	Set rs = rsConn.execute(SQL)
%>

	<SELECT id="lijst" onchange="voorstelling()">
	<option></option>
	
<%	do while not rs.EOF
		Response.Write("<OPTION value='" & rs("event_id") & "'>" & rs("Datum") & ": " & rs("Gezelschap") & " - " & rs("Titel") & " " & rs("Prijs") & "</OPTION>")
		rs.movenext
		

	loop
%>

	</SELECT>
		<br>


<%	rs.Close()
	Set rs = Nothing
	rsConn.Close()
	Set rsConn = Nothing
%>

<script language="javascript"> 
var inti = 0;
var favorite
function delRow(button) 
{ 
var row = button.parentNode.parentNode; 
var tbody = document.getElementById('table1').getElementsByTagName('tbody')[0]; 
tbody.removeChild(row); 
inti--;
document.getElementById("inti").innerHTML = inti;

} 

function addRow() 
{ 
var selected = document.getElementById("favorite").value;

var tbody = document.getElementById('table1').getElementsByTagName('tbody')[0]; 

var row = document.createElement('TR'); 

var cell1 = document.createElement('TD');
var cell2 = document.createElement('TD');

var inp2 = document.createElement('INPUT')

inp2.setAttribute('type','button'); 
inp2.setAttribute('value','Delete'); 
inp2.onclick=function(){delRow(this);} 

cell1.innerHTML = selected;
cell2.appendChild(inp2); 

row.appendChild(cell1); 
row.appendChild(cell2);

tbody.appendChild(row); 
inti++;

document.getElementById("inti").innerHTML = inti;
} 

function voorstelling()
{
var lijst=document.getElementById("lijst");
document.getElementById("favorite").value=lijst.options[lijst.selectedIndex].text;
}

</script>

</head> 
<body> 
 <input type="hidden" id="favorite">
<form method="get">
 <input type="button" value="Selecteer" onclick="addRow()">
</form>
 <br><br>

 <table id="table1" border="0"  bgcolor="#EEEEEE" cellspacing="0" cellpadding="1" width="70%">
<tbody> 
<tr bgcolor="#AAAAAA"> 
<th width="700px" align="left">Voorstelling</th> 

<th> &nbsp; </th>
</tr> 
</tbody> 
</table> 

	<br><br>

<table id="gegevens" width="70%" bgcolor="#EEEEEE" cellspacing="0">
<tr>
	<td> Voornaam </td>
	<td> <input type="text" id="voornaam" size="50"> </td>
</tr>

<tr>
	<td> Naam </td>
	<td> <input type="text" id="voornaam" size="50"> </td>
</tr>

<tr>
	<td> Mail </td>
	<td> <input type="text" id="mail" size="50"> </td>
</tr>

<tr>
	<td> Telefoon </td>
	<td> <input type="text" id="tel" size="50"> </td>
</tr>

<tr>
	<td> Geboortedatum </td>
	<td> <input type="text" id="datum" size="50"> </td>
</tr>
<tr bgcolor="#FFFFFF">
	<td> &nbsp; </td>
	<td> &nbsp; </td>
</tr>

<tr>
	<td> <B>Aantal</B> </td>
	<td id="inti"> &nbsp </td>
</tr>
</table>
</body>
</html>

Nu zou ik de prijs van al deze voorstellingen willen laten optellen op een of ander manier, maar ik heb geen idee hoe dit kan.

Als het nodig is wil ik de database + code wel uploaden maar ik hoop dat ik zo al een eindje verder geholpen kan worden.
Ik vraag voor alle duidelijkheid niet om mn opdracht af te werken maar ik heb er al een hele tijd op zitten zoeken en ik ben een beetje teneinde raad om eerlijk te zijn.

BuZz.LiGhTYeAr

Legacy Member
Probleem imo is dat ge alles naar HTML schrijft met javascript. Dat is leuk, zo heeft de gebruiker geen postbacks maar ge maakt het u eigen moeilijk omdat ge zelf zegt dat ge ne beginner zijt.

BTW, ge doet niks met ASP... ge hebt enkel javascript en HTML toegevoegd.

How to get out of this mess?

In de options van uwe select steekt ge ook de prijs...
<select><option value="$id%$prijs"></option></select>

dat stript ge met een string functie en dan maakt ge een veld bij waar ge iedere keer de geselecteerde waarde bij optelt.

733F

Legacy Member
Ik heb het mijzelf inderdaad moeilijk gemaakt.
Is er geen andere manier om rijen aan die tabel toe te voegen en de geselecteerde voorstellingen daarin te plaatsen?

BuZz.LiGhTYeAr

Legacy Member
Met postbacks dus met ASP:
De geselecteerde waarden in een Session steken en met ASP de tabellen opbouwen aan de hand van die session

Zonder postbacks dus met javascript:
iedere keer dat ge een option selecteerd schrijft ge de id naar een array.

om het totaal te bepalen haalt ge de prijzen op aan de hand van die ID. imo veel moeilijk dan gewoon ff uw value van uw options ophalen en strippen.

733F

Legacy Member
Daar begrijp ik al helemaal niets van van die session.
Ik zal je eerste voorstel eens proberen.

Alvast bedankt Buzz

733F

Legacy Member
Dat van die totaalprijs is ondertussen gefixed met vrij veel omwegen.

PHP:
<script language="javascript"> 
var inti = 0;
var favorite
var totaalprijs = 0;
function delRow(button) 
{ 
var row = button.parentNode.parentNode; 
var tbody = document.getElementById('table1').getElementsByTagName('tbody')[0]; 
tbody.removeChild(row); 
inti--;
document.getElementById("inti").innerHTML = inti; 
} 

function addRow() 
{ 
var selected = document.getElementById("favorite").value;

var tbody = document.getElementById('table1').getElementsByTagName('tbody')[0]; 

var row = document.createElement('TR'); 

var cell1 = document.createElement('TD');
var cell2 = document.createElement('TD');

var inp2 = document.createElement('INPUT')

inp2.setAttribute('type','button'); 
inp2.setAttribute('value','Delete'); 
inp2.onclick=function(){delRow(this);} 

cell1.innerHTML = selected;
cell2.appendChild(inp2); 

row.appendChild(cell1); 
row.appendChild(cell2);

tbody.appendChild(row); 
inti++;

document.getElementById("inti").innerHTML = inti;

var intlengte
intlengte = selected.length;

var intj=0;
var letter

do
	{
	intj++
	letter = selected.substring(intj-1, intj)
	}
while(letter != "&#8364;")


var verschil
verschil = intlengte - intj

var prijs
prijs = selected.substring(intlengte - verschil)
var prijss
prijss = prijs.replace("," , ".")
prijs.replace("," , ".")
var pprijs = parseFloat(prijss)

totaalprijs = totaalprijs + pprijs
document.getElementById("test").value = totaalprijs;
document.getElementById("totaalprijs").innerHTML = "&#8364; " + totaalprijs;
}

function voorstelling()
{
var lijst=document.getElementById("lijst");
document.getElementById("favorite").value=lijst.options[lijst.selectedIndex].text;
}																				  

function send()
{
var leeftijd=document.getElementById("leeftijd").value;
}
</script>

Maar met dit is er een ander probleem gekomen.
Wanneer de gebruiker een voorstelling opnieuw wist zou de prijs daarvan moeten afgetrokken worden.

Maar omdat de tabel gegenereerd wordt door het javascript en de hoeveelheid rijen afhankelijk is van de hoeveelheid gekozen voorstelling hebben de rijen geen id waar door ik geen gebruik kan maken van de "document.getElementById("id")".

Heef iemand een idee hoe de value van de cell die gedelete wordt te verkrijgen?


//EDIT

Ondertussen heb ik de oplossing gevonden, had iets over het hoofd gezien.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan