שאלה תכנותית

moty127

New member
שאלה תכנותית

שלום רב
יש לי טבלה ב DB עם פולים של כתובות IP מסודרים לפי מדינה
הטבלה מכילה שלושה רשומות ומסודרת כך:
START-IP
End-IP
CONTRY

עכשיו, אם נגיד לדוגמה הכתובת IP שלי היא 90.60.90.1
(ועוד שניה תבינו למה בחרתי בכתובת הזאת)
בשביל לדעת שהכתובת 90.60.90.1 שייך לצרפת
עלי לדעת שבטבלה ה StartIP הוא 90.43.254.0
וה EndIP הוא 90.63.128.255
זאת אומרת איך לפי הכתובת ה IP אני מוצא את הפול הנכון בשביל לדעת לאיזה מדינה שייך

 
בהנחה שA וB הם מחרוזות

select * from table where b >= 'xxx.xxx.xxx.xxx' and a <= 'xxx.xxx.xxx.xxx'
&nbsp
דרך אגב, SQL היא לא שפת תכנות.
 

moty127

New member
לא הבנתי

בהנחה שאני רוצה לדעת מאיזה מדינה הגיע המשתמש לאתר שלי
אז אני קודם כל עושה ככה:
IPX = Request.ServerVariables("REMOTE_ADDR")
ועכשיו יש לי משתנה IPX עם כתובת האיפי של המשתמש
איך אני לוקח את המשתנה ומריץ שאילתה?
 
חוששני שבשלב זה השאלה שלך ספציפית לASP

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

IT goldman

New member
אפשר בלי SQL ואפשר עם

אני מניח שהכוונה במציאת ה- IP המתאים לטווח זה שהכוונה שאם הופכים את המחרוזת של ה- IP למספר אז פשוט צריך למצוא את הטווח המתאים.
למשל ככה: 123.14.29.3
יהפוך ל-
123014029003
(תכפיל כל עמודה ב- 1000 וכדומה)
ואז זו שאלה של מציאת השורה שבה START > X > END (או להפך)
&nbsp
נראה לי עדיף לעשות את זה בשפת התוכנה שלך ולאו דווקא ב- SQL כי זה לא טריוויאלי.
אבל אפשר גם עם, אם אתה מתעקש.
&nbsp
 

moty127

New member
like this

UserIPISplit = Split(UserIPIS,".")
&nbsp
integer_ip = (16777216 * UserIPISplit(0))
integer_ip = integer_ip + (65536 * UserIPISplit(1))
integer_ip = integer_ip + (256 * UserIPISplit(2))
integer_ip = integer_ip + UserIPISplit(3)
&nbsp
SQL
&nbsp
 
למעלה