24-06-2005, 16:16
|
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
|
|
חבר מתאריך: 25.10.01
הודעות: 42,775
|
|
לא מבין איך זה לכתיבה במערך
מה שכן, POST_$ זה מערך, שמכיל כל מיני עצמים.
ב PHP, לכל תא במערך יש מזהה, שיכול להיות מזהה סודר, או מזהה מילולי
לדוגמא:
או:
קוד PHP:
$shimi["country"] = "Israel";
הדבר הזה, שכתוב בתוך הסוגריים המרובעים, נקרא ה"אינדקס" או ה"מפתח" של המערך.
מה שהודעת השגיאה שלך אומרת, בעצם, שהיא בכלל לא הודעת שגיאה - כתוב שם Notice - הערה - ולא שגיאה - שזה Error.
מה ההערה אומרת? ההערה אומרת, שאת מנסה לבדוק את הערך של אינדקס שלא קיים במערך (POST_$ זהו המערך). PHP מוגדרת בשרת שלך ב"מקסימום הערות תכנותיות, אפילו כאלה שהקוד יעבוד איתן בצורה תקינה" - מה שמכונה בשפת PHP בשם E_NOTICE. קודם כל, אסביר שהפקודה שנתתי בתגובה הקודמת, משנה את מצב הגדרות ההערות ל"הכל חוץ מ E_NOTICE", מה שמבטל בעצם התראות מסוג Notice. פעולה זו מתבצעת על ידי פעולות לוגיות על ביטים שנשלחים לפונקציה error_reporting, אבל זה כבר הרבה מעבר להסבר הזה
כיצד אפשר לפתור את הבעייה שלך? על ידי בדיקה האם האינדקס קיים בתוך המערך POST_$, ואם כן, אז, ורק אז, לבדוק מה ערכו. איך בודקים אם אינדקס קיים במערך? עם הפונקציה array_key_exists. או במילים אחרות, הקוד הבא:
קוד PHP:
<?php if (array_key_exists("lecture", $_POST) && $_POST["lecture"]==true) $lecture='yes'; if (array_key_exists("practice", $_POST) && $_POST["practice"]==true) $practice='yes'; if (array_key_exists("checker", $_POST) && $_POST["checker"]==true) $checker='yes'; ?>
יהיה גם נכון יותר, וגם לא אמור לתת לך את השגיאה הזאת.
|