اطلاعات داخل دیتابیس رو وارد تابع جاوا کنید

mehdi_25

Member
توسط یه برنامه اطلاعات تعداد فیلدهای داخل دیتابیس رو به ترتیب داخل یه سری متغیر مثل : Name[1] و Name[2] و Name[3] و Name[4] و ... میریزم .
حالا یه اسکریپت Java هم دارم که یه آرایه داره و باید این متغیر ها رو داخل آرایه به نام pausecontent وارد کنم .
مشکل من اینه که تعداد فیلد های جدول متغیره و در نتیجه آرایه هم تعداد ایتم هاش متغیر میشه . چطوری من با استفاده از توایع جاوا این متغیر هایه ASP رو داخل آرایه جاوا بریزم ؟ :shock:
آیا میتونم برای پر کردن آیتم های آرایه از یه حلقه استفاده کنم و اگر می تونم چطور ؟:neutral:

این آرایه جاواست که باید بجای 1 و 2 و 3 و 4 و 5 و ... اون Name[1] و ... وارد بشه .
کد:
var pausecontent2=new Array()
pausecontent2[0]='1'
pausecontent2[1]='2'
pausecontent2[2]='3'
pausecontent2[3]='4'
pausecontent2[4]='5'
 

mehdi_25

Member
راستی یه چیز دیگه
آیا میتونم داخل حلقه ای که متغیر های Name پر میشه همونجا متغیر های جاوا رو هم پر کنم ؟

چطوری این کار رو بکنم ؟
 

mazoolagh

Active Member
همه کار میتونی بکنی - البته خیلی ساده است ولی الآن نمیتونم بنویسم چون یک کمی توضیح لازم داره.
فردا سعی میکنم جواب بدم.
 

amirlol

Well-Known Member
ولی تا اونجا که من فهمیدم و اگه منظورت جاوا اسکریپت باشه
در کل نیازی بهش نیست و با خود asp میشه چنین کاری رو کرد
 

mehdi_25

Member
این اسکریپت جاواست :
HTML:
<script type="text/javascript">

var pausecontent2=new Array()
pausecontent2[0]='Data1'
pausecontent2[1]='Data2'
pausecontent2[2]='Data3'
pausecontent2[3]='Data4'
pausecontent2[4]='Data5'


</script>
این هم تکه ای از برنامه ASP :
کد:
<%
Do While (Not rs.Eof) And (nRecCount < nStopRec)
	nRecCount = nRecCount + 1
	If CLng(nRecCount) >= CLng(nStartRec) Then
		nRecActual = nRecActual + 1

	' Set row color
	sItemRowClass = " class=""ewTableRow"""
	sListTrJs = " onmouseover='ew_mouseover(this);' onmouseout='ew_mouseout(this);' onclick='ew_click(this);'"

	' Display alternate color for rows
	If nRecCount Mod 2 <> 1 Then
		sItemRowClass = " class=""ewTableAltRow"""
	End If
	x_TLName = rs("TLName")
	x_TFName = rs("TFName")
	x_TMonth = rs("TMonth")
	x_TYear = rs("TYear")
	x_TJayezeh = rs("TJayezeh")

If ( CLng(x_TMonth) = Ms ) AND ( CLng(x_TYear) = Ys ) Then
x_pausecontent= x_TLName & "&nbsp;" & x_TFName &"'"
xpausecontent = "pausecontent[" & x_Counter &"]='"
'xpausecontent = x_pausecontent %>
<%=xpausecontent%><%=x_pausecontent%>
<%
	x_Counter = x_Counter + 1
	Else
	End If
	End If
	rs.MoveNext
Loop
 End If 

' Close recordset and connection
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
%>
این xpausecontent ایتم های آرایه رو میسازه و x_pausecontent هم مقداری که باید به هر آیتم آرایه نصبت داده بشه .
 

mehdi_25

Member
من خودم یه کارایی کردم ولی نمیدونم چرا یه آیتم اضافی میکنه و موقع نمایش undefined رو اضافی نمایش میده . دیگه دارم قاطی میکنم .
HTML:
<script type="text/javascript">

/*Example message arrays for the two demo scrollers*/

var pausecontent=new Array()
'<%

' Avoid starting record > total records
If CLng(nStartRec) > CLng(nTotalRecs) Then
	nStartRec = nTotalRecs
End If

' Set the last record to display
nStopRec = nStartRec + nDisplayRecs - 1

' Move to first record directly for performance reason
nRecCount = nStartRec - 1
If Not rs.Eof Then
	rs.MoveFirst
	rs.Move nStartRec - 1
End If
nRecActual = 0
Do While (Not rs.Eof) And (nRecCount < nStopRec)
	nRecCount = nRecCount + 1
	If CLng(nRecCount) >= CLng(nStartRec) Then
		nRecActual = nRecActual + 1

	' Set row color
	sItemRowClass = " class=""ewTableRow"""
	sListTrJs = " onmouseover='ew_mouseover(this);' onmouseout='ew_mouseout(this);' onclick='ew_click(this);'"

	' Display alternate color for rows
	If nRecCount Mod 2 <> 1 Then
		sItemRowClass = " class=""ewTableAltRow"""
	End If
	x_TLName = rs("TLName")
	x_TFName = rs("TFName")
	x_TMonth = rs("TMonth")
	x_TYear = rs("TYear")
	x_TJayezeh = rs("TJayezeh")

If ( CLng(x_TMonth) = Ms ) AND ( CLng(x_TYear) = Ys ) Then
x_pausecontent= x_TLName & "&nbsp;" & x_TFName &"'"
xpausecontent = "pausecontent[" & x_Counter &"]='"
'xpausecontent = x_pausecontent %>'
<%=xpausecontent%><%=x_pausecontent%>
'<%
	x_Counter = x_Counter + 1
	Else
	End If
	End If
	rs.MoveNext
Loop
 End If 

' Close recordset and connection
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
%>'
</script>
 

mehdi_25

Member
کسی نبود رفتیم ها

mazoolagh جان کماکان منتظرم تا وقتشو پیدا کنی و مشکلمو حل کنی . ممنونم
 

mazoolagh

Active Member
کجا ؟؟:D

راستش این کدت رو خوندم ولی نفهمیدم دقیقا" چکار میخوای بکنی!

ولی یک مثال برات میگذارم که میاد اسامی فیلدهای یک جدول رو میخونه و یک array برات درست میکنه که در سمت کلاینت قابل دسترسی هست.

حالا در سمت کلاینت وقتی صفحه load میشه میاد مقادیر این array رو تو یک combo میریزه.

البته میشد این combo رو در سمت سرور هم ساخت ولی اینجا فقط واسه روشن شدن مطلب هست.

دیتابیس northwind رو هم که همه دارن

HTML:
<%@ language="vbscript"%>
<%
Set CONN=Server.CreateObject("ADODB.CONNection")
CONN.Provider="Microsoft.Jet.OLEDB.4.0"
CONN.Open(Server.Mappath("/ASP/DataBases/northwind.mdb"))
SQLQ = "Select * from products"
set RS = Server.CreateObject("ADODB.recordset")
RS.Open SQLQ,CONN
Set FIELDS = RS.Fields
%>
<html>
<head>
<script language="javascript">
var flds = new Array() ;
<%
i=0
for each x in FIELDS
	Response.Write ("flds[" & i & "] = '" & x.name & "' ; " & chr(13))
	i=i+1
next
RS.Close
Set RS=Nothing
CONN.close
Set CONN=Nothing
%>
</script>
<script language="javascript">
function init() {
	for (i=0; i<flds.length ; i++) {
		var OPT = document.createElement("OPTION");
		document.getElementById("combo1").options.add(OPT) ;
		OPT.innerText = flds[i] ;
	}
}
</script>
</head>
<body onload="init()">
<select id="combo1">
</select>
</body>
</html>
 

mehdi_25

Member
ببين من هم تقريباً همين کار شما رو کردم با اين تفاوت که بعد از برداشتن اطلاعات از ديتابيس مستيماً ميريزه تو آرايه اي که با جاوا اسکريپت ساخته شده . فقط يه آيتم اضافي وارد مي کنه بدون اطلاعات.



آرايه من در جاوااسکريپت درست همون پست شماره 6 قسمت اول هست . فقط بجاي Data ها اطلاعات ديتابيس وارد ميشه .



يه سوال mazoolagh جان: شما در جاوااسکريپت يه متغير از نوع آرايه درست کردي به نام flds که همونو داخل تابع ASP استفاده کردي . اگر من هم همين کار رو انجام بدم متغير داخل تابع ASP در توابع جاوااسکريپت هم فراخاني ميشه ؟

يا شما داخل تابع جاوا اون متغير رو باز سازي کردي منظورم اينه که شما داخل تابع ASP تعداد زيادي متغير درست کردي شکل همون آرايه جاوااسکريپت؟
 

mazoolagh

Active Member
ببین مهدی جان اون آرایه flds در سمت سرور قابل استفاده نیست مگر اینکه صفحه رو پست کنی. کلا اینها از هم مستقل هستن. اگر همین کد رو بصورت لوکال اجرا کنی و سورس صفحه رو ببینی و با این کد مقایسه کنی ابهام برطرف میشه.

شما اگر هم دقیقا" بگی چی میخوای کدش رو روی northwind بهت میدم.
 

mehdi_25

Member
آقا درست شد . دستت در نکنه .

اون برنامه بالایی من که یه آیتم اضافی اد میکرد درست بود فقط من رکورد های آرایه رو از 1 شروع کرده بودم ولی باید از 0 شورع می کردم .

ممنون mazoolagh جان . خدا عمرت بده
 

جدیدترین ارسال ها

بالا