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

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

al_n 15-12-07 14:51

עזרה, הרשאות צפייה בשאילתת SQL
 
בניתי מערכת של כתבות.
לכל כתבה ב db יש שדה שנקרא permissions שמכיל idים של משתמשים מופרדים ע"י פסיקים, רק הם יכולים לצפות בכתבה.

מה התנאי שאני אמור לתת כדי שהמשתמש יראה את הכתבה אם הוא קיים ברשימה של ה idים?..

חשבתי על IN() אבל זה מבצע את הפעולה ההפוכה...

תראו מה עשיתי בינתיים:
PHP קוד:


$userid 
1// סתם דוגמא...

$Query mysql_query("SELECT * FROM `tbl` LIMIT {$start_row},{$perPage}");
while(
$array mysql_fetch_array($Query)){

  if(
array_search($userid,explode(',',$array['an_permissions']))){
     echo 
'........';
  }



אבל הבעיה בקוד כזה שזה דופק את העמודים....
יש לי בדף 1 - 6 תוצאות, בדף 2 - 20 תוצאות......

Tomer 15-12-07 15:10

למה IN מבצע את הפעולה ההפוכה? IN בודק אם ה id שהזנת לו נמצא ב IDs המאופשרים במסד.

al_n 15-12-07 15:12

אבל הוא יבדוק אם המחרוזת שיש בשדה permissions תתאים לאחד הערכים שאני יביא לו ב
ציטוט:

IN('value1','value2')...

לא?

כי אם אני עושה ככה:

PHP קוד:

"WHERE `an_permissions` IN ('$userid')" 

אז זה לא מציג כלום למרות שה id שלי נמצא במלא מקומות

daMn 15-12-07 15:19

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

al_n 15-12-07 15:22

כן אני יודע נתתי רק דוגמא מה אני אמור לעשות

ה LIKE לא עובד לי
ניסיתי
כי הוא מזהה את זה:
4,42,34,11
כמחרוזת אחת שלא דומה נגיד למספר 1


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

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