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

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

SniR-S 21-05-10 18:21

PHP CHECKBOX - נושא קצת מורכב ובעייתי
 
אני יושב על זה כמה שעות כבר ולא עולה לי לראש כלום,
יש לי את הקוד הבא:
HTML קוד:

                <td><input type="checkbox" name="permissions[]" value="1|" /> כללי</td>
                <td><input type="checkbox" name="permissions[]" value="2|" /> הגדרות אתר ושרת</td>
                <td><input type="checkbox" name="permissions[]" value="3|" /> הודעות ומשוב</td>
                <td><input type="checkbox" name="permissions[]" value="5|" /> כתבות</td>

אני רוצה לקבל את הנתונים בצורה הבאה "1|2|3|5|"
ניסיתי עם כל מיני דרכים, foreach, explode, implode, while
הצלחתי להשיג את הנתונים בצורה שאני רוצה
עם while ו foreach אבל לא הצלחתי להוציא אותם מחוץ ללולאות.

SniR-S 21-05-10 19:24

הסתדרתי, תודה.

Ori The Man 22-05-10 09:51

תספר לכולם איך חחח,שאחרים שיתקלו בבעיה ידעו גם איך

SniR-S 22-05-10 10:35

PHP קוד:

    $per "";
    foreach (
$permissions as $key => $value) {
        
$per .= $value;
    } 


הגדרתי את המשתנה $per כריק, בשביל להשתמש בו בלולאה..
ביצעתי לולאה (foreach) על כל התיבות שהתקבלו בטופס ומכל אחד לקחתי את התוכן למשתנה $value
שמתי למשתנה per אופרטור נקודה כדי שיתן את כל הנתונים שהתקבלו
מהשדות טקסט ולא רק אחד .., מן הסתם הוא חיבר אותם ועשה אותם בצורה הזו "1|2|3|5|"..
וזהו בגדול, זה מה שעשיתי כדי להוציא את כל הנתונים .


--- מה שאני כותב עכשיו זה כבר משהו אחר ---
__________________________________________
אבל יש לי בעיה, לא הגעתי עדיין למה שאני צריך.
נניח שיש לי את המשתנה $per שהוא בעצם מערך,
איך אני יכול לבדוק אם מה שיש בו שווה לאחד מהערכים "1,2,3,5"
מבלי להשתמש בו בצורה הבאה:
PHP קוד:

$per['0'] == 1
$per
['1'] == 2
$per
['2'] == 3
$per
['3'] == 5
// אלא שיהיה ככה
$per == 2
$per 
== 1
$per 
== 

ש- $per יוכל להיות שווה לכל אחד מן הערכים שיש במערך (בתוכו) [1,2,3,5]..
מקווה שמישהו הבין אותי ויוכל לעזור לי, כי זה קצת מסובך להסביר את זה, אבל ניסיתי בצורה הכי טובה שאני יכול..:-)

אדיר 22-05-10 10:50

למה שלא תשאיר את מה שאתה מקבל כמערך ותבדוק אם הערך קיים שם ע"י in_array?‏↳‏
וד"א תוריד את הקווים האלה שם..

SniR-S 22-05-10 11:09

אני רוצה לבדוק אם יש למשתמש X הרשאות ל X, Y ו Z נגיד..
יש לי את הקוד הבא, שלוקח את המשתמש שמחובר ומוציא את ההרשאות שלו,
זה הקוד:
PHP קוד:

function getUserPer($id) {
    
$query mysql_query("SELECT permissions FROM admins WHERE id = '$id'");
        
$result mysql_fetch_assoc($query);
        
$permissions $result['permissions'];
    
$permissions explode("|"$permissions);

    return 
$permissions;
}
    
$id $_COOKIE['id'];
$per getUserPer($id); 

ההרשאות במסד שמורים בתבנית הבאה - "1|2|3|4|5|6|7|8|9|10"...
עכשיו אני רוצה לבדוק איזה הרשאות יש למשתמש המחובר ובהתאם להציג לו
את הפרטים שיש לו גישה אליהם ..


נ.ב
לגבי ה | (קווים האלה) ב- value של ה checkbox אני אוריד אותם
זה זמני, אני אשתמש ב implode אחר כך כדי להוסיף אותם לפני שהנתונים נכנסים למסד..

Itay 22-05-10 14:06

כמו שאמרו פה - אתה יכול להשתמש ב-in_array
אבל לדעתי יותר פשוט ויחסוך לך קוד - פשוט תשתמש ב-strstr על הערך מהבסיס נתונים, בלי להפוך אותו למערך..
אתה יכול גם להשתמש ככה בתו שהכנסת לפני כדי לדעת שמדובר נגיד במספר 1 ולא במספר 10

SniR-S 23-05-10 15:43

אוקי לא הצלחתי, לא הלך לי, ניסיתי כל מיני דרכים, כל מיני פונקציות, וגם עם מה שהצעתם in_array ו strstr ועוד ..

למישהו יש רעיון איך להשוות נתונים ?
אם יש לי טבלה של משתמשים במסד, ויש בה שדה של הרשאות,
ההרשאות הם בתבנית הבאה "1|2|3|4|5|6|7|8|9|10"
לכל משתמש יש הרשאות שונות, זאת אומרת יכול להיות לאחד את כל ההרשאות
ולמשתמש אחר רק "1|2|3|4|5" או "1|2|5|7"...

מה שאני צריך לעשות, זה לבדוק אם יש לכל משתמש הרשאה X
לא הצלחתי ניסיתי עם כל מיני דרכים, גם לולאות כמו שכתבתי כבר..
בסך הכל צריך להשוות,
משהו בסגנון הזה
PHP קוד:

if ($per == 1) {
  echo 
"יש הרשאה 1";
}

if (
$per == 10) {
  echo 
"יש הרשאה 10";


למישהו יש רעיון איך לעשות את זה?, או איזה דרך מסויימת ..?

Itay 23-05-10 16:20

PHP קוד:

if(strstr($prems$number."|"))
      echo 
$number." found"

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

SniR-S 24-05-10 12:15

זה לא טוב עם strstr, אני יכול לבנות פונקציה שתבדוק אם יש פרמטר מסויים לפני או אחרי פרמטר אחר
אבל זה לא עוזר לי, כי לאחד יכול להיות הרשאות "1|2|3" ולאחר "2|5|9"..


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

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