הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   שאלה על include בASP (https://hosts.co.il/forums/showthread.php?t=7137)

LBY 26-11-05 14:56

שאלה על include בASP
 
רציתי להשתמש לאתר שלי (שבASP) בinclude במקום באיי פריים, אז כותבים:
קוד:

<!--#include file=-->
ושם הקובץ, עכשיו רציתי להשתמש במשתנה שאני אעביר דרך הURL בדפים, כאילו שאם לוחצים על כפתור מסוים המשתנה שאני אבחר ישתנה לשם הדף, ואז בinclude אני אעשה שהוא יהיה שווה למשתנה, נגיד:
קוד:

<!--#include file="<%=Page%>"-->
אז עשיתי את זה אבל זה כותב לי שגיאה שכאילו הוא מנסה לפתוח דף שקוראים לו <%=Page%> ולא את הערך של זה, אז איך אני יכול לעשות שזה יקח את הערך ולפי זה יפתח דף? אפשר להשתמש בcase אבל זה כבר סתם מאריך ואני לא יוכל לעשות את זה אוטומטי

astricks 26-11-05 14:58

לפי מה שידוע לי, ב asp, ה include מתבצע ראשון (כמו שבמתמטיקה כפל קודם לחיבור). לכן המשתנה ריק בעצם.

Valid 26-11-05 15:04

הוא פותח את האינקלוד לפני הקימפול של הקוד, וגם לפני ההפעלה של המנגנון שמריץ את הקוד שלך. לכן אתה לא יכול להשתמש במשתנה בשם הקובץ.

LBY 26-11-05 17:00

כן אני יודע אבל אי אפשר לעשות שום דבר? אולי להשתמש בסוג של include של JS שפועל אחרת או משהו?

אם לא אז יש משהו אחר שאפשר להשתמש בו שיותר טוב מאיי פריים? כי אז כשרציתי להשתמש באיי פריים אמרו לי להשתמש בinclude אבל זה לא כל כך אפשרי..

somebody 26-11-05 17:05

תשתמש ב:
Server.Execute ("")
עושה אותה פעולה כמו INCLUDE רק אחרי כל הפעולות.
זאת אומרת אתה יכול להשתמש בו במשפט IF או לעשות מה שאתה רוצה לעשות עם ה INCLUDE.
בהצלחה:)

activate 26-11-05 17:59

ציטוט:

נכתב במקור על ידי somebody
תשתמש ב:
Server.Execute ("")
עושה אותה פעולה כמו INCLUDE רק אחרי כל הפעולות.
זאת אומרת אתה יכול להשתמש בו במשפט IF או לעשות מה שאתה רוצה לעשות עם ה INCLUDE.
בהצלחה:)

זה לא אותו דבר

server.execute לא מעביר פונקציות (אם קיימות בדף שצריך לאנקלד)

Neoteric 26-11-05 18:18

תשתמש ב-CASE. נגיד המשתנה שדרכו אתה מעביר הוא-URL אז הנה דוגמא קצרה:
קוד:

<%
SELECT CASE request.querystring("url")
  Case help
%>
  <!--#include file="help.asp"-->
<%
  Case about
%>
  <!--#include file="about.asp"-->
<%
  Case Else
%>
  <!--#include file="index.asp"-->
<%
  End SELECT
%>

קצת מסורבל אבל זו הדרך שבא עושים את זה.

activate 26-11-05 18:31

ציטוט:

נכתב במקור על ידי PhoenixBoy
תשתמש ב-CASE. נגיד המשתנה שדרכו אתה מעביר הוא-URL אז הנה דוגמא קצרה:
קוד:

<%
SELECT CASE request.querystring("url")
  Case help
%>
  <!--#include file="help.asp"-->
<%
  Case about
%>
  <!--#include file="about.asp"-->
<%
  Case Else
%>
  <!--#include file="index.asp"-->
<%
  End SELECT
%>

קצת מסורבל אבל זו הדרך שבא עושים את זה.

זו גם לא הדרך שבה עושים את זה

כשאתה עושה SSI (האינקלוד הזה שציינת), הוא מאונקלד בכל מקרה, ללא שום קשר לתנאי שלפניו. נסה בעצמך.

Neoteric 26-11-05 18:41

ציטוט:

נכתב במקור על ידי activate
זו גם לא הדרך שבה עושים את זה

כשאתה עושה SSI (האינקלוד הזה שציינת), הוא מאונקלד בכל מקרה, ללא שום קשר לתנאי שלפניו. נסה בעצמך.

ניסיתי בעצמי וזה עובד. אל תגיד דברים בלי ביסוס.

activate 26-11-05 19:04

ציטוט:

נכתב במקור על ידי PhoenixBoy
ניסיתי בעצמי וזה עובד. אל תגיד דברים בלי ביסוס.

כמו שאמרתי לך, ה SERVER קודם כל מוסיף את ה includeים ואח"כ בודק לפי ה IFים מה צריך להפעיל.

כל שלושת האינקלודים שלך יצטרפו לקומפילציה אבל רק בהתאם ל IF הסרבר יחליט מה לבצע ומה לא.

בקיצור, היעילות של האפליקציה שלך בזבל.

אז לפני שאתה קופץ, תבדוק את הדברים אצלך, כי אני יודע על מה אני מדבר.

LBY 26-11-05 19:09

אוקיי תודה לכולם על העזרה
Phoniexboy תודה וחשבתי על case אבל אם אני עושה את זה בשביל המשתמשים אז אני לא יודע את השמות של כל הקבצים, וגם ככה זה סתם מסובך, יש לי רעיון אחר
activate תודה על התשובות שהסברת מה כל אחד מהדברים עושה, זה עוזר לי ואממ אם הבנתי את מה שאמרת על הקוד של לירן נכון, אז זה הרעיון, שרק אחד מהדפים יופיע בהתאם למשתנה, לגביי פונקציות זה ישים את כולם אבל אין לי פונקציות בדפים האלה, בכל מקרה אני אעזוב את השיטה הזאת

somebody יופי זה בדיוק מה שחיפשתי =} אני לא צריך שפונקציות יעברו, בשביל הפונקציות אני עושה include בתחילת הדף לדף פונקציות שהכנתי, אני אנסה את זה ואם יהיו לי בעיות אני אערוך את ההודעה או אכתוב עוד אחת למקרה שהדיון ישקע

תודה לכולם על העזרה =}

Neoteric 26-11-05 19:10

ציטוט:

נכתב במקור על ידי activate
כמו שאמרתי לך, ה SERVER קודם כל מוסיף את ה includeים ואח"כ בודק לפי ה IFים מה צריך להפעיל.

כל שלושת האינקלודים שלך יצטרפו לקומפילציה אבל רק בהתאם ל IF הסרבר יחליט מה לבצע ומה לא.

בקיצור, היעילות של האפליקציה שלך בזבל.

אז לפני שאתה קופץ, תבדוק את הדברים אצלך, כי אני יודע על מה אני מדבר.

אני יודע שהוא קודם עושה אינקלוד אבל מה זה קשור? הוא עושה את מה שהוא רוצה. זה הרבה יותר טוב מלהשתמש באיפריים. אל תלמד אותי על יעילות, במקרה הזה אין דרך אחרת. אבל כמו שמישהו כאן אמר הוא פשוט יכול להשתמש ב Server.Execute.

activate 26-11-05 19:17

ציטוט:

נכתב במקור על ידי PhoenixBoy
אני יודע שהוא קודם עושה אינקלוד אבל מה זה קשור? הוא עושה את מה שהוא רוצה. זה הרבה יותר טוב מלהשתמש באיפריים. אל תלמד אותי על יעילות, במקרה הזה אין דרך אחרת. אבל כמו שמישהו כאן אמר הוא פשוט יכול להשתמש ב Server.Execute.

תגיד לי, אם יש לו 200 שורות קוד בכל אינקלוד (שצריך לקמפל ולהריץ), תכפיל ב 3 אינקלודים, קיבלת 600 שורות קוד שצריך לקמפל וזה עוד לפני שהרצת את העמוד שבתוכו יש את ה IFים.

היית מקבל 0 עגול בנושאי יעילות.

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

Neoteric 26-11-05 19:23

ציטוט:

נכתב במקור על ידי activate
תגיד לי, אם יש לו 200 שורות קוד בכל אינקלוד (שצריך לקמפל ולהריץ), תכפיל ב 3 אינקלודים, קיבלת 600 שורות קוד שצריך לקמפל וזה עוד לפני שהרצת את העמוד שבתוכו יש את ה IFים.

היית מקבל 0 עגול בנושאי יעילות.

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

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

עריכה: הרגע בדקתי ו-Server.Execute עושה את העבודה כמו שצריך.

activate 26-11-05 19:28

ציטוט:

נכתב במקור על ידי PhoenixBoy
יופי, כל הכבוד לך. זה מה שרצית? מילה טובה?
אם אתה אומר שזה לא יעיל תן דרך אחרת לבצע את זה. אני יודע שזה לא יעיל אבל הדרך היחידה שאני חושב עליה היא Server.Execute שלא יצא לי לבדוק אם זה עובד כמו שצריך.
תאמין לי גם אני בניתי אפליקציות לא קטנות שהחזיקו הרבה משתמשים יחד.

אני לא צריך מילת עידוד ממך או מאף אחד אחר. אני כבר הוכחתי למה אני מסוגל.

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

עבודה עם server.execute (שזה בעצם צד שרת) תהיה הכי נכונה והכי יעילה במקרה הזה (בתנאי שאין לו פונקציות בדף המאונקלד שצריך להשתמש בהם - כי אז זה פשוט לא יעבוד).

LBY 26-11-05 21:03

אוקיי צריך עוד עזרה =}
יש לי בעיה, כשאני משתמש בפקודה שנתתם לי server.execute על סתם דף זה פועל, אבל אחר כך כשאני מוסיף לקישור משתנים זה כותב לי שגיאה:
קוד:

Error Type:
Server object, ASP 0231 (0x80004005)
Invalid URL form or fully-qualified absolute URL was used. Use relative URLs.

נגיד אם אני כותב:
קוד:

<%Server.Execute("Try.asp")%>
זה פועל
אבל אם אני כותב:
קוד:

<%Server.Execute("Try.asp?User=LBY")%>
זה כותב את השגיאה שקודם כתבתי,
מה עושים?

עריכה: טוב קראתי איפשהו וראיתי שאין מה לעשות אי אפשר להעביר משתנים ככה, אבל הדף שקוראים לו יכול להשתמש במשתנים שנמצאים בURL של אותו עמוד, אז אולי אני יכול לתאם את זה עם response.redirect

תודה בכל מקרה =}

LBY 26-11-05 22:33

טוב מצטער על ההודעה הכפולה אבל בגלל שבקודמת ערכתי את ההודעה וכתבתי שהסתדרתי אז אני מניח שלא ישימו לב לזה

רציתי לשאול אם יש פקודה אחרת שתעשה את זה? כי זה שאני לא יכול להעביר עם הURL משתנים זה ממש מסבך את זה.
אני אתן דוגמה, מערכת סקרים, נגיד וקוראים לדף bla.asp, עכשיו בסקר יש שתי אפשרויות, לראות את התוצאות או להצביע, אז כדי שהמחשב ידע אם להפעיל את התוצאות או את ההצבעה, שמתי משתנה בכותרת.
עכשיו נגיד שקוראים לו Status, אז כשאני רוצה לראות את ההצבעה אני אכתוב:
bla.asp?Status=vote
וכשאני רוצה לראות את התוצאות
bla.asp?Status=view

אם אני אשתמש בserver.execute כדי להכניס את הדף של הסקר (bla.asp) לדף אינדקס שמחבר בין כל הדפים (index.asp), אז אם אני רוצה להשתמש בזה אני חייב לשים את המשתנה Status כחלק מהURL של הדף אינדקס, כי אי אפשר לשים את זה בURL של bla.asp אחרת זה יכתוב שגיאה, ככה שהדף אינדקס יראה ככה:
index.asp?Status=View
וזה דיי מפריע לעשות כזה דבר, אם על כל מערכת שבדף אינדקס אני אצטרך לשים את המשתנים שהשתמשתי בהם אז זה יצור לינק ערוך ועוד במערכת כמו שלי זה ממש גרוע... יש פיתרון לשנות את זה או שאני צריך להשתמש באיי פריים שלפי מה שאמרתם לא כדאי?

Valid 27-11-05 20:04

אני עדיין לא מבין למה לא להשתמש בSSI... הכי יעיל, הכי פשוט.
אתה מנסה לחסוך בדפים או משהו? ב ASP תמיד עדיף לך לבנות דף לכל פעולה (או מס' פעולות דומות שמשתמשות באותן פונקציות).
לפי דעתי אתה מסתבך יותר מדי עם זה. פשוט תבנה עוד כמה עמודים, למה שאתה צריך, ובכל אחד תאנקלד מה שצריך.

LBY 27-11-05 23:13

ציטוט:

נכתב במקור על ידי Valid
אני עדיין לא מבין למה לא להשתמש בSSI... הכי יעיל, הכי פשוט.
אתה מנסה לחסוך בדפים או משהו? ב ASP תמיד עדיף לך לבנות דף לכל פעולה (או מס' פעולות דומות שמשתמשות באותן פונקציות).
לפי דעתי אתה מסתבך יותר מדי עם זה. פשוט תבנה עוד כמה עמודים, למה שאתה צריך, ובכל אחד תאנקלד מה שצריך.

מה זה הSSI?
sever.execute או include?

ועם הinclude בכל מקרה זו בעיה אפילו אם זה בכמה דפים, וזה גם סתם מאריך את הדפים של המערכת לשים ממש כל דבר בדף, נגיד התנתקות שלוקח לי שתי שורות אני אצטרך לשים בדף שונה (או שבעניין הזה אני יכול עוד איכשהו להסתדר בלי משתנה בURL אבל בנוגע לשאר זה דיי בזבוז להפריד בין הכל)

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

אני פשוט רוצה לעשות כמו שמקובל לעשות בכל האתרים


בכל מקרה תודה על העזרה =}

LBY 29-11-05 21:24

אנשים? (שוב מצטער על הדאבל פוסט אבל אני חייב עזרה בזה)


כל הזמנים הם GMT +2. הזמן כעת הוא 00:12.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ