פונקציות

[CooLeR]

New member
פונקציות

בניתי פונקציה, והיא לא מחזירה ערך אלא אם כן אני כותב ריספונז רייט למשתנה בסוף. מדוע? ועוד שאלה: יש לי פונקציה ש"פותחת" ו"סוגרת" הודעות אבל כשלוחצים על הודעה ופותחים אותה, העמוד מפסיק להטען, ואם היו סמיילים בהודעה שעדיין לא נטענו, הם לא נטענים. יש פתרון?
 

[CooLeR]

New member
בהמשך לשאלתי

אלו הפונקציות שאמורות להחליף סמיילים ותגים בתוך הטקסט. אבל למה אני לא מצליח להפעיל את 2 הפונקציות באותו זמן??? אני כותב:
inserttagas(smilies(text))
function smilies(text) textrep = text set rs=Server.CreateObject("adodb.recordset") sql = "select * from smilies" rs.open sql,c,3,3 do until rs.eof a=rs("id") b=rs("text") textrep=replace(textrep,b,"<img src=´/images/forums/smilies/"&a&".gif´ border=´0´>") rs.movenext loop rs.close text = textrep response.write text end function function inserttagas(text) textrep = text set rs=Server.CreateObject("adodb.recordset") sql = "select * from tags" rs.open sql,c,3,3 do until rs.eof a=rs("what") b=rs("inwhat") textrep=replace(textrep,b,a) rs.movenext loop rs.close text = textrep response.write smilies(text) end function​
יש לציין שהפונקציות יעבדו כל אחת בנפרד, אך לא ביחד. בתודה...
 

נתן.ל

New member
אוקי ... נראה לי משהו כזה ...

פונקציות צריכות להחזיר משתנה ... בסוף של הפונקציה smilies תכתוב
smilies= text​
רק ככה תעבוד הפונקציה ... כשאתה כותב response.write זה בסך הכל מדפיס את המשתנה אבל לא עושה איתו כלום ... תנסה ותראה ...
 

[CooLeR]

New member
וזה בדיוק מה שעשיתי,

textrep = text​
אבל עדיין, אם אני מפעיל את אחת מהפונקציות על קטע טקסט, אז זה פועל, אבל אם אני מפעיל את שתיהן, פועלת רק הראשונה.
 

נתן.ל

New member
אבל זה לא הפונקציה !!!

פונקציה מחזירה ערך כאשר המשתנה הוא היא עצמה !!! function FuncName . . . . FuncName = something end function רק ככה ... אם אתה רוצה שמשהו אחר יחזיר לך ערך אז תכתוב SUB ולא פונקציה ...
 

[CooLeR]

New member
טוב, בסדר

עכשיו באמת לא צריך לעשות response.write לטקסט, אבל בכל זאת, רק הפונקציה העליונה פועלת והתחתונה לא. ובקשר לעידכון טבלה עם נתונים של טבלה אחרת, זה צריך להראות כך:
sql = "update tbl1 set active=False where EXISTS(select * from tree where a=1)" ​
 

נתן.ל

New member
בטח שיש לך בעיה בפונקציות ...

תראה איך כתבת אותן ... בפונקציה הראשונה אתה מפעיל יחד עם השניה ... וגם כאשר הראשונה רצה - השניה שוב פועלת ... נראה לי שאתה צריך לסדר לך את העיניינים האלה טיפה ... תזכור שפונקציה מחזירה ערך את עצמה - את ההדפסה (WRITE) תעשה מחוץ לפונקציה.
 

[CooLeR]

New member
לא הבנתי...

בכל אופן, הנה הפונקציות שלי:
function inserttagas(texttags) set rs=Server.CreateObject("adodb.recordset") sql = "select * from tags" rs.open sql,c,3,3 do until rs.eof a=rs("what") b=rs("inwhat") texttags=replace(texttags,b,a) rs.movenext loop rs.close inserttagas = texttags end function function smilies(textsmily) set rs=Server.CreateObject("adodb.recordset") sql = "select * from smilies" rs.open sql,c,3,3 do until rs.eof a=rs("id") b=rs("text") textsmily=replace(textsmily,b,"<img src=´/images/forums/smilies/"&a&".gif´ border=´0´>") rs.movenext loop rs.close smilies = textsmily end function​
וכך אני קורא להן:
response.write inserttagas(smilies(text)) ​
 

[CooLeR]

New member
לא משנה, הצלחתי.

ועכשיו אני יכול לקרוא לעצמי "טיפש! טיפש! טיפש! טיפש!"!!! הייתה לי טעות טפשית בפונקציה של התגים:
texttags=replace(texttags,b,a)​
במקום
texttags=replace(texttags,a,b)​
עכשיו אני מבין את משמעות כתיבת המשתנים הארוכים בעלי השמות המשמעותיים...
 

דלילה

New member
מטעויות לומדים...

וטעות לעולם חוזרת
 
למעלה