הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 15-11-11, 11:53   # 11
IgalSt
מנהל פורום, עסק רשום
 
IgalSt's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: המרכז
גיל: 37
הודעות: 1,432
Send a message via Skype™ to IgalSt

IgalSt לא מחובר  

משהו כזה לדעתי:
קוד:
Select *, count(*) as viewsCount
From entries e
Where e.PageType=2
Group By e.ID
Order By viewsCount DESC
Limit 10
שזה מאוד דומה למה שאיתי הציע.

מה הבעיה עם השאילתה שלו/שלי?
  Reply With Quote
ישן 15-11-11, 12:19   # 12
M.a.T.a.N
חבר על
 
מיני פרופיל
תאריך הצטרפות: Jan 2009
הודעות: 755

M.a.T.a.N לא מחובר  

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

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

והשאילתא של איתי לא עבדה כמו שרציתי
גם כדי לדעת את כל הפרמטרים האלה לא חייב לעשות לכל אחד רשומה חדשה.
פשוט בכל דף תתן גם עמודה "IP" שתפריד כל IP בסימן "|" לדוגמא הטבלה תראה כך:
ID - מזהה העמוד (לדוגמא - 3)
VIEWS - מספר צפיות בעמוד (לדוגמא - 2)
IP - הIPים שצפו כבר בעמוד (לדוגמא - "123.256.23.31|88.62.642.12)
pageType - מה שאמרת, "סוג הדף" (נניח שכמו שרצית הסוג הוא 2)

עכשיו פשוט בכל פעם לפני שאתה מוסיף לעמוד +1 בכמות הצפיות (VIEWS) אתה בודק אם הIP של מי שצופה בדף שווה לאחד מהIPים שנשמרו בעמודה "IP".
אתה יכול לבצע את הכנסת הIP והבדיקה אם הוא כבר קיים ע"י EXPLODE פשוט של העמודה, הנה קוד דוגמא (נניח שהערכים שהבאתי לעיל הם ערכי הטבלה):
PHP קוד:
$ip $_SERVER['REMOTE_ADDR'];
$pageID $_GET['id'];
$upView '1';
$query mysql_query("SELECT * FROM table WHERE id='$pageID' ")
$row mysql_fetch_array($query);
$views $row['VIEWS']+1;
$exp explode("|"$row['IP']) //מפרקים את הערך שנמצא בעמודה IP בין הסימנים "|" (מה שמפריד את רשימות הIP
for($i='0';$i<count($exp);$i++) { //נתחיל לולאת FOR כדי לבדוק את כל רשימות הIP שקיימים בעמודה
    
if($i=='0'//אם לולאה רצה פעם ראשונה...
        
$updateIP $exp[$i]; //נקבע משתנה חדש שמעתה יכיל את כל הIP של הטבלה על מנת לסדר IP מחדש במידה והIP הצופה עכשיו הוא ייחודי (ההכנס לטבלה לאחר הסידור מחדש תעשה רק אם הIP ייחודי)
    
else
        
$updateIP .= "|".$exp[$i]; //יתחיל להפריד IP הסימן | בין IP לIP
    
if($exp[$i]==$ip//אם הוא מוצא IP בעמוד שכבר שווה לIP של מי שצופה אז הוא שנה את המשתנה ל0
        
$upView='0';
}
if(
$upView=="1") { //בודק אם המשתנה שווה ל1, אם כן, כלומר אם לא בוצע שינוי אז הIP לא קיים כבר בעמוד ולכן זו צפייה ייחודית ואז...
    
$updateIP .= "|".$ip//אם הIP שצופה הוא ייחודי ולא קיים בטבלה נשרשר אותו למשתנה שיעדכן את הIP הייחודים ונכניס לטבלה את הכל...
    
mysql_query("UPDATE table SET VIEWS='$views', IP='$updateIP' WHERE id='$pageID'"); //פשוט, לאחר הבדיקה שביצענו אם הIP שצופה הוא ייחודי ואינו נמצא בטבלה, אם אמת נכניס מחדש את רשומות הIP וגם את מספר הצפיות בעמוד

בקשה, זה הקוד שבעצם יבצע לך את הבדיקה אם הIP שצופה בעמוד כבר צפה בעמוד בעבר או לא, במידה והוא ייחודי ואינו צפה בעמוד עדיין כמות הצפיות בדף תגדל ב1 ורשומות הIP יעדוכנו ויכללו מעתה את המזהה של הצופה העכשווי.
כמובן שיש עוד דרכים לכתוב אותו, אולי אפילו בדרכים יעילות יותר אבל אני לא מאמין שזה משמעותי כל כך..

עכשיו את הקוד שביקשת בהתחלה הרבה יותר פשוט לכתוב, כמובן שחוץ מזה שיותר פשוט לכתוב מעכשיו לא תכנס לך כל פעם רשומה חדשה למסד עם כל צפייה ייחודית...
אני די בטוח שאת הקוד שביקשת בהתחלה לאחר השינוי אתה תדע לכתוב אבל בכל זאת, שנעשה עבודה מלאה (:
PHP קוד:
$query mysql_query("SELECT * FROM table WHERE pageType='2' ORDER BY VIEWS DESC LIMIT 0,10");
while(
$row=mysql_fetch_array($query)){
    print 
'יציג לך את 10 העמודים הכי נצפים מסוג pageType ששווים ל2';

מקווה שעזרתי
__________________
מתן, מתכנת צד שרת PHP
מייל mataname@gmail.com
  Reply With Quote
ישן 15-11-11, 13:52   # 13
Somdir
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2008
הודעות: 119

Somdir לא מחובר  

ציטוט:
נכתב במקור על ידי City-Games.co.il צפה בהודעה
גם כדי לדעת את כל הפרמטרים האלה לא חייב לעשות לכל אחד רשומה חדשה.
פשוט בכל דף תתן גם עמודה "IP" שתפריד כל IP בסימן "|" לדוגמא הטבלה תראה כך:
ID - מזהה העמוד (לדוגמא - 3)
VIEWS - מספר צפיות בעמוד (לדוגמא - 2)
IP - הIPים שצפו כבר בעמוד (לדוגמא - "123.256.23.31|88.62.642.12)
pageType - מה שאמרת, "סוג הדף" (נניח שכמו שרצית הסוג הוא 2)

עכשיו פשוט בכל פעם לפני שאתה מוסיף לעמוד +1 בכמות הצפיות (VIEWS) אתה בודק אם הIP של מי שצופה בדף שווה לאחד מהIPים שנשמרו בעמודה "IP".
אתה יכול לבצע את הכנסת הIP והבדיקה אם הוא כבר קיים ע"י EXPLODE פשוט של העמודה, הנה קוד דוגמא (נניח שהערכים שהבאתי לעיל הם ערכי הטבלה):
PHP קוד:
$ip $_SERVER['REMOTE_ADDR'];
$pageID $_GET['id'];
$upView '1';
$query mysql_query("SELECT * FROM table WHERE id='$pageID' ")
$row mysql_fetch_array($query);
$views $row['VIEWS']+1;
$exp explode("|"$row['IP']) //מפרקים את הערך שנמצא בעמודה IP בין הסימנים "|" (מה שמפריד את רשימות הIP
for($i='0';$i<count($exp);$i++) { //נתחיל לולאת FOR כדי לבדוק את כל רשימות הIP שקיימים בעמודה
    
if($i=='0'//אם לולאה רצה פעם ראשונה...
        
$updateIP $exp[$i]; //נקבע משתנה חדש שמעתה יכיל את כל הIP של הטבלה על מנת לסדר IP מחדש במידה והIP הצופה עכשיו הוא ייחודי (ההכנס לטבלה לאחר הסידור מחדש תעשה רק אם הIP ייחודי)
    
else
        
$updateIP .= "|".$exp[$i]; //יתחיל להפריד IP הסימן | בין IP לIP
    
if($exp[$i]==$ip//אם הוא מוצא IP בעמוד שכבר שווה לIP של מי שצופה אז הוא שנה את המשתנה ל0
        
$upView='0';
}
if(
$upView=="1") { //בודק אם המשתנה שווה ל1, אם כן, כלומר אם לא בוצע שינוי אז הIP לא קיים כבר בעמוד ולכן זו צפייה ייחודית ואז...
    
$updateIP .= "|".$ip//אם הIP שצופה הוא ייחודי ולא קיים בטבלה נשרשר אותו למשתנה שיעדכן את הIP הייחודים ונכניס לטבלה את הכל...
    
mysql_query("UPDATE table SET VIEWS='$views', IP='$updateIP' WHERE id='$pageID'"); //פשוט, לאחר הבדיקה שביצענו אם הIP שצופה הוא ייחודי ואינו נמצא בטבלה, אם אמת נכניס מחדש את רשומות הIP וגם את מספר הצפיות בעמוד

בקשה, זה הקוד שבעצם יבצע לך את הבדיקה אם הIP שצופה בעמוד כבר צפה בעמוד בעבר או לא, במידה והוא ייחודי ואינו צפה בעמוד עדיין כמות הצפיות בדף תגדל ב1 ורשומות הIP יעדוכנו ויכללו מעתה את המזהה של הצופה העכשווי.
כמובן שיש עוד דרכים לכתוב אותו, אולי אפילו בדרכים יעילות יותר אבל אני לא מאמין שזה משמעותי כל כך..

עכשיו את הקוד שביקשת בהתחלה הרבה יותר פשוט לכתוב, כמובן שחוץ מזה שיותר פשוט לכתוב מעכשיו לא תכנס לך כל פעם רשומה חדשה למסד עם כל צפייה ייחודית...
אני די בטוח שאת הקוד שביקשת בהתחלה לאחר השינוי אתה תדע לכתוב אבל בכל זאת, שנעשה עבודה מלאה (:
PHP קוד:
$query mysql_query("SELECT * FROM table WHERE pageType='2' ORDER BY VIEWS DESC LIMIT 0,10");
while(
$row=mysql_fetch_array($query)){
    print 
'יציג לך את 10 העמודים הכי נצפים מסוג pageType ששווים ל2';

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

Syntax - leave the work for the code
www.SyntaxServices.co.il
  Reply With Quote
ישן 15-11-11, 16:38   # 14
IgalSt
מנהל פורום, עסק רשום
 
IgalSt's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: המרכז
גיל: 37
הודעות: 1,432
Send a message via Skype™ to IgalSt

IgalSt לא מחובר  

ציטוט:
נכתב במקור על ידי City-Games.co.il צפה בהודעה
גם כדי לדעת את כל הפרמטרים האלה לא חייב לעשות לכל אחד רשומה חדשה.
פשוט בכל דף תתן גם עמודה "IP" שתפריד כל IP בסימן "|" לדוגמא הטבלה תראה כך:
ID - מזהה העמוד (לדוגמא - 3)
VIEWS - מספר צפיות בעמוד (לדוגמא - 2)
IP - הIPים שצפו כבר בעמוד (לדוגמא - "123.256.23.31|88.62.642.12)
pageType - מה שאמרת, "סוג הדף" (נניח שכמו שרצית הסוג הוא 2)

עכשיו פשוט בכל פעם לפני שאתה מוסיף לעמוד +1 בכמות הצפיות (VIEWS) אתה בודק אם הIP של מי שצופה בדף שווה לאחד מהIPים שנשמרו בעמודה "IP".
אתה יכול לבצע את הכנסת הIP והבדיקה אם הוא כבר קיים ע"י EXPLODE פשוט של העמודה, הנה קוד דוגמא (נניח שהערכים שהבאתי לעיל הם ערכי הטבלה):
PHP קוד:
$ip $_SERVER['REMOTE_ADDR'];
$pageID $_GET['id'];
$upView '1';
$query mysql_query("SELECT * FROM table WHERE id='$pageID' ")
$row mysql_fetch_array($query);
$views $row['VIEWS']+1;
$exp explode("|"$row['IP']) //מפרקים את הערך שנמצא בעמודה IP בין הסימנים "|" (מה שמפריד את רשימות הIP
for($i='0';$i<count($exp);$i++) { //נתחיל לולאת FOR כדי לבדוק את כל רשימות הIP שקיימים בעמודה
    
if($i=='0'//אם לולאה רצה פעם ראשונה...
        
$updateIP $exp[$i]; //נקבע משתנה חדש שמעתה יכיל את כל הIP של הטבלה על מנת לסדר IP מחדש במידה והIP הצופה עכשיו הוא ייחודי (ההכנס לטבלה לאחר הסידור מחדש תעשה רק אם הIP ייחודי)
    
else
        
$updateIP .= "|".$exp[$i]; //יתחיל להפריד IP הסימן | בין IP לIP
    
if($exp[$i]==$ip//אם הוא מוצא IP בעמוד שכבר שווה לIP של מי שצופה אז הוא שנה את המשתנה ל0
        
$upView='0';
}
if(
$upView=="1") { //בודק אם המשתנה שווה ל1, אם כן, כלומר אם לא בוצע שינוי אז הIP לא קיים כבר בעמוד ולכן זו צפייה ייחודית ואז...
    
$updateIP .= "|".$ip//אם הIP שצופה הוא ייחודי ולא קיים בטבלה נשרשר אותו למשתנה שיעדכן את הIP הייחודים ונכניס לטבלה את הכל...
    
mysql_query("UPDATE table SET VIEWS='$views', IP='$updateIP' WHERE id='$pageID'"); //פשוט, לאחר הבדיקה שביצענו אם הIP שצופה הוא ייחודי ואינו נמצא בטבלה, אם אמת נכניס מחדש את רשומות הIP וגם את מספר הצפיות בעמוד

בקשה, זה הקוד שבעצם יבצע לך את הבדיקה אם הIP שצופה בעמוד כבר צפה בעמוד בעבר או לא, במידה והוא ייחודי ואינו צפה בעמוד עדיין כמות הצפיות בדף תגדל ב1 ורשומות הIP יעדוכנו ויכללו מעתה את המזהה של הצופה העכשווי.
כמובן שיש עוד דרכים לכתוב אותו, אולי אפילו בדרכים יעילות יותר אבל אני לא מאמין שזה משמעותי כל כך..

עכשיו את הקוד שביקשת בהתחלה הרבה יותר פשוט לכתוב, כמובן שחוץ מזה שיותר פשוט לכתוב מעכשיו לא תכנס לך כל פעם רשומה חדשה למסד עם כל צפייה ייחודית...
אני די בטוח שאת הקוד שביקשת בהתחלה לאחר השינוי אתה תדע לכתוב אבל בכל זאת, שנעשה עבודה מלאה (:
PHP קוד:
$query mysql_query("SELECT * FROM table WHERE pageType='2' ORDER BY VIEWS DESC LIMIT 0,10");
while(
$row=mysql_fetch_array($query)){
    print 
'יציג לך את 10 העמודים הכי נצפים מסוג pageType ששווים ל2';

מקווה שעזרתי

לדעתי זה פתרון לא טוב.
בצורה כזאת מגיעים למצב שבו מעדכנים שדות מאוד ארוכים של טקסטים הרבה פעמים.
ל-DB יותר קל להוסיף רשומות חדשות מאשר לעדכן שדה טקסט גדול מאוד.

כמו כן לבצע חיפוש על טקסט זו גם פעולה יחסית יקרה.

אני הייתי הולך על רשומה ייחודית לכל אחד. ככה בעתיד גם ניתן לבצע חיתוכים מעניינים במידת הצורך (לדוגמה לפי תאריך או במה צפה כל IP וכו')
  Reply With Quote
ישן 15-11-11, 16:55   # 15
אדיר
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Mar 2008
מיקום: אשקלון
הודעות: 1,714

אדיר לא מחובר  

ציטוט:
נכתב במקור על ידי Somdir צפה בהודעה
חייב לציין שהרעיון שלך חכם במיוחד , אולי אפשר לייעל יותר אבל בסיס הרעיון הוא טוב .
אני חושב ליישם זאת תודה על העזרה אפשר לנעול אני אסתדר מכאן
פתרון טוב יותר יהיה ליצור שדה שיכיל את מס' הצפיות הכולל של הדף בטבלה של הדפים,
וטבלה נוספת למידע מפורט של כל צפייה (אם אתה צריך).
  Reply With Quote
ישן 15-11-11, 19:50   # 16
Itay
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 34
הודעות: 564

Itay לא מחובר  

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

למה שאתה מתאר באמת נראה לי הכי נכון לפעול כמו שעבדת, אבל אין סיבה סתם להפעיל שאילתות שמעמיסות כמו זאת שכתבתי קודם, השאילתה בעצם תעבור (אם מדובר על צפיות באתר חיי) על אלפי רשומות ותבצע סינונים, זה דבר שמעמיס ולוקח זמן
מצד שני, כשאתה מבצע את השאילתה שמכניסה את הערכים האלו, לעדכן שדה נפרד ב +1 זה לא כזה נורא. ככה רק כשאתה צריך את הנתונים האלה ספציפית תשתמש בהם, בשאר הזמן תשתמש בשדה שמתעדכן בפלוס 1 בכל פעם
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


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

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