HWzoneHWzoneHWzone
  • ראשי
  • כתבות פופולריות
  • הגדרת התראות
  • מחשבים
    מחשבים
    הצג עוד
    כתבות מובילות
    הדרך להפסיק לשלם ולקחת בעלות: בנינו שרת AI מפלצתי מקומי
    22/08/2026
    מחשב ASUS Ascent GX10 מבוסס NVIDIA DGX Spark בסקירה: דמוקרטיזציה של מודלים מקומיים
    04/10/2026
    מחיקת זיכרון: למה מיקרוסופט מסתירה פתאום את המלצת ה-32 גיגה-בייט למחשבים אישיים?
    06/08/2026
    כתבות אחרונות
    NVIDIA הגבילה את ביצועי ה-AI בכרטיסי GeForce – מודרים הצליחו להכפיל אותם
    26/10/2026
    אחד הכרטיסים ממשלוח ה-RTX 5090 שנעלם – הופיע באינטרנט
    24/10/2026
    מייסד 3dfx: בזכות Quake מכרנו כנראה מיליוני כרטיסי Voodoo
    23/10/2026
    סיכום השבוע: Claude, GTA 6 ועוד
    23/10/2026
  • גאדגטים
    גאדגטים
    הצג עוד
    כתבות מובילות
    ניסיתי סמארטפון מתקפל בפעם הראשונה – התרשמויות משימוש Galaxy Z Fold8
    27/09/2026
    הדמיה של מערכת הבית החכם החדשה של אפל עם מסך HomePad, רמקול HomePod mini ומזרים Apple TV 4K
    אפל חוזרת לסלון: שלושה מוצרים חדשים בדרך, כולל מסך חכם שיתחרה באמזון ובגוגל
    10/10/2026
    שחזור דיגיטלי של ה-iPod המקורי משנת 2001 מופיע בתוך דף אינטרנט במחשב נייד
    אפל מחזירה את ה-iPod המקורי לחיים, ומחביאה אותו באתר שלה
    25/10/2026
    כתבות אחרונות
    אפל מחזירה את ה-iPod המקורי לחיים, ומחביאה אותו באתר שלה
    25/10/2026
    סיכום השבוע: Claude, GTA 6 ועוד
    23/10/2026
    25 שנה ל-HWzone: מהיום, האתר נבנה סביבך
    20/10/2026
    ה-iPhone Duo נמכר עד ינואר 2027, אבל אפל כבר מקדימה משלוחים
    20/10/2026
  • גיימינג
    גיימינג
    הצג עוד
    כתבות מובילות
    GIGABYTE GAMING A16 עם RTX 5060 – מה תקבלו בקטגוריה הזולה של מחשבי גיימינג ניידים?
    12/09/2026
    המחשה של לוח אם בקונסולת משחקים עתידית עם שבבי זיכרון ואחסון חשופים
    ה-PlayStation 6 עשויה לעלות יותר מ-1,000 דולר
    20/10/2026
    Control Resonant הוא משחק כבד, אבל עמוס בטכנולוגיות מתקדמות – בדקנו
    30/09/2026
    כתבות אחרונות
    בלי מחשב ובלי סטרימינג: משחקי PC רצים ישירות על PlayStation 5
    27/10/2026
    סיכום השבוע: Claude, GTA 6 ועוד
    23/10/2026
    מיקרוסופט תגבה 12 דולר על 50 שעות משחק ב-Xbox Cloud Gaming
    22/10/2026
    חודש לפני ההשקה, GTA 6 כבר מתקרב ל-600 מיליון דולר
    21/10/2026
  • טכנולוגיה
    טכנולוגיה
    הצג עוד
    כתבות מובילות
    מודל 44 טריליון הדולר של אנתרופיק: כשהמתכנתים יפנו את מקומם לחשמלאים
    14/09/2026
    לווייני תקשורת של Starlink מעל רשת סלולרית עירונית עם אנטנות קרקעיות וסמארטפון המחובר לרשת
    מאסק בונה חברת סלולר עם 15 אלף לוויינים ואנטנות קרקעיות
    11/10/2026
    סיכום השבוע ב-HWzone
    סיכום השבוע: Claude, GTA 6 ועוד
    23/10/2026
    כתבות אחרונות
    NVIDIA רוצה להרוויח מה-GPU שלכם גם אחרי שכבר שילמתם עליו
    27/10/2026
    81 מיליארד דולר הפסד: המספר החריג מאחורי ההנפקה של Anthropic
    27/10/2026
    ביקרנו במרכז התקשורת של בזק בתל-אביב – כך מתמודדים עם זינוק של פי 3 בפעילות AI ברשת
    26/10/2026
    גוגל משנה את הכללים: Gmail ו-Photos עשויים להשפיע על הפרסומות שלכם
    25/10/2026
  • ביקורות
    ביקורות
    הצג עוד
    כתבות מובילות
    הדרך להפסיק לשלם ולקחת בעלות: בנינו שרת AI מפלצתי מקומי
    22/08/2026
    ניסיתי סמארטפון מתקפל בפעם הראשונה – התרשמויות משימוש Galaxy Z Fold8
    27/09/2026
    מחשב ASUS Ascent GX10 מבוסס NVIDIA DGX Spark בסקירה: דמוקרטיזציה של מודלים מקומיים
    04/10/2026
    כתבות אחרונות
    מחשב ASUS Ascent GX10 מבוסס NVIDIA DGX Spark בסקירה: דמוקרטיזציה של מודלים מקומיים
    04/10/2026
    ניסיתי סמארטפון מתקפל בפעם הראשונה – התרשמויות משימוש Galaxy Z Fold8
    27/09/2026
    GIGABYTE GAMING A16 עם RTX 5060 – מה תקבלו בקטגוריה הזולה של מחשבי גיימינג ניידים?
    12/09/2026
    זיכרון Novakey של ADATA XPG – אסתטיקת ה-Cyberpunk של ה-DDR5
    07/09/2026
  • ספיישלים
    • CES
      • CES 2026
      • CES 2025
      • CES 2024
      • CES 2023
      • CES 2022
      • CES 2020
      • CES 2019
      • CES 2018
      • CES 2017
      • CES 2016
      • CES 2015
      • CES 2013
      • CES 2012
      • CES 2011
      • CES 2009
    • Computex
      • Computex 2019
      • Computex 2018
      • Computex 2016
      • Computex 2014
      • Computex 2013
      • Computex 2012
      • Computex 2011
      • Computex 2010
      • Computex 2009
      • Computex 2008
      • Computex 2007
    • E3 2016
    • עשור לאתר המחשבים
    • CeBIT 2008
    • CeBIT 2007
  • פורומים
  • זכרונות
  • הפיד שלי
  • כתבות שקראתי
  • ניהול העדפות
  • ערוצים פרסומיים
עקבו אחרינו ברשתות
  • אודות האתר
  • צרו קשר
  • פרסם אצלנו
  • תנאי שימוש ומדיניות פרטיות
  • הצהרת נגישות
בקריאה עכשיו: מדריך ל-SQL – שפת שאילתות למסדי נתונים
HWzoneHWzone
  • ראשי
  • כתבות פופולריות
  • הגדרת התראות
  • מחשבים
  • גאדגטים
  • גיימינג
  • טכנולוגיה
  • ביקורות
  • ספיישלים
    • CES
    • Computex
    • E3 2016
    • עשור לאתר המחשבים
    • CeBIT 2008
    • CeBIT 2007
  • פורומים
  • זכרונות
עקבו אחרינו
  • אודות האתר
  • צרו קשר
  • פרסם אצלנו
  • תנאי שימוש ומדיניות פרטיות
  • הצהרת נגישות
מדריכיםמחשבים

מדריך ל-SQL – שפת שאילתות למסדי נתונים

עדכון אחרון: 11/04/2015 בשעה 09:34
29/08/2012
61 דקות קריאה
שיתוף
רוצים לראות יותר מ-HWzone בתוצאות של Google?הוסיפו אותנו כמקור מועדף ב-Google

כעת אם נפתח את העמוד שלנו בדפדפן (באמצעות לחיצה על צלמית ה-EasyPHP ולחיצה על Local Web) ניראה את העמוד שלנו עם התגובה שהכנסנו עוד בסביבת ה-PhpMyAdmin:

כעת כל מה שנשאר לנו זה לכתוב את הקוד האחראי להוספת תגובת המשתמש. אם נסתכל בתמונה ניראה כי מופיעות לנו שני תיבות טקסט וכפתור. לכל פקד נתנו שם:

אם נסתכל על קוד המקור של הטופס הוא יראה כך:

<form method="POST" id="leave_comment">

    <h3>Say your opinion</h3>

    <table>

        <tr><td>Your name:</td><td><input name="username" type="text" value="<?php echo $username; ?>" style="width: 150px;" /></td></tr>

        <tr><td>Your comment:</td><td><input name="content" type="text" value="<?php echo $content; ?>" style="width: 200px;" /></td></tr>

        <tr><td colspan="2"><input style="margin-top: 5px;" type="submit" name="submit" value="Leave your opinion" /></td></tr>

    </table>

</form>

הטופס שלנו ישלח בשיטת POST. ברגע שנלחץ על כפתור ה-Submit כל הנתונים המופיעים בתיבות הטקסט ישלחו. שימו לב שלתיבות הטקסט מופיעים כבר ערכים (Value).

למשל, לתיבת ה-username הערך המשויך הוא משתנה ב-PHP הנקרא $username. משתנה זה אומנם בעל שם של משתנה שכבר ציינו אך הוא אינו אותו המשתנה. משתנה זה יכיל בעצם בברירת מחדל ערך של מחרוזת ריקה כך שתיבת הטקסט כמעט תמיד תהיה ריקה. אך במקרים שבהם המשתמש ירצה להזין תגובה אך הוא שגה והתגובה לא נכנסה, הערך של משתנה זה יהיה שווה לאותו התוכן שהמשתמש הקליד לפני ששלח את הטופס. אותו הדבר תקף גם לתיבת ה-content.

כעת נבין היכן אנו מכריזים על המשתנים $username ו-$content.

כאשר המשתמש שולח את הטופס המשתנים $_POST['username'], $_POST['content'] ו-$_POST['submit'] נשלחים גם הם. זאת מפני שהטופס שלנו שולח את המידע בשיטת POST. בכדי שנוכל להוסיף את תגובת המשתמש עלינו לוודא שהמשתנה $_POST['submit'] נשלח. אם כן – אנו יודעים שהמשתמש שלח את הטופס.

מיד לאחר קטע הקוד האחראי להתחברות למסד הנתונים ולבחירת מסד הנתונים נוסיף את המשתנים הבאים:

/* The username and content in the comment submit form */

$username = "";

$content = "";

 

$err = ""; //The error generated while verifying the comment posted data

$comment_added = false; //True if comment added succesfully

$dialog_text = ""; //Our dialog text that appears when user submitted the form. Telling the user about his post status

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

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

כעת נעבור על 3 המשתנים שנותרו:

  • $err – משתנה זה מכיל בעצם את הודעת השגיאה שנציג למשתמש במקרה שחסרים נתונים בטופס שהוא שלח.
  • $comment_added – משתנה בוליאני אשר אומר לנו אם תגובת המשתמש נוספה למסד הנתונים או לא. בברירת המחדל ערכו של המשתנה הוא 'שקר' (התגובה לא נוספה).
  • $dialog_text – הטקסט שיופיע בדיאלוג שידווח למשתמש על סטטוס התגובה שלו.

כעת נעבור לחלק העיקרי בקוד – החלק האחראי לוודא אם כל נתונים הטופס קיימים או לא. אם כל הנתונים קיימים, התגובה תתווסף למסד הנתונים. את הקוד הנ"ל נוסיף מתחת למשתנים:

/* Checking if user submited a comment */

if (isset($_POST['submit'])) {

               

                /* Putting the user submited comment in the associated variables */

                $username = $_POST['username'];

                $content = $_POST['content'];

               

                /* Checking for valid input */

                if ($username == "" || $content == "") //No username or password provided

                {

                                $err = "Username or comment is missing";

                }

                elseif (strlen($content) > 400) { //Content exceeded maximum number of characters

                                $err = "Comment is too long!";             

                }

                elseif (strlen($username) > 50)  { //Username exceeded maximum number of characters

                                $err = "Username is too long!";            

                }

                else {

                                /* Recommended to add some security code like mysql_real_escape_string on the variables to prevent SQL Injections

                                It is also recommended to strip any HTML tags to prevent from malicoius scripts to be executed (like XSS) */

                               

                               

                                //Running the query to add this comment entry

                                $result = mysql_query("INSERT INTO comments (username, content, date) VALUES ( '$username', '$content', NOW() )");

                               

                                if ($result) {

                                                $comment_added = true;

                                               

                                                /* User succesfully added comment, no need to save his submission */

                                                $username = "";

                                                $content = "";

                                }

                                else { //It seems like the query failed

                                                $err = "Failed to add comment. Please try again later.";    

                                }

                }

               

               

                //Dialog text set according to the errorsuccess

                $dialog_text = ($comment_added) ? "Comment succesfully added!" : $err;

}

אומנם קטע הקוד קצת ארוך, אך מבחינה לוגית הוא פשוט. נסביר את החלק הלוגי של הקוד:

קודם כל אנו בודקים אם המשתמש שלח את הטופס באמצעות התנאי הבא:

if (isset($_POST['submit'])) {
פונקציית ה-isset מאפשרת לנו לדעת אם משתנה מסוים נקבע/הוכרז או במקרה שלנו – אם הגיע המשתנה $_POST['submit'] אנו יודעים כי הטופס נשלח. לכן, נוודא את הנתונים שקיבלנו עם הטופס בתוך התנאי.

 

אנו מכניסים למשתנים $username ו-$content את הערכים שקיבלנו מהטופס שנשלח. לאחר מכן בודקים אם הערכים שקיבלנו ומוודאים שהם עונים על התנאים הבאים: אף ערך אינו ריק, ערך תוכן ההודעה לא עולה על 400 תווים וערך שם המשתמש אינו עולה על 50 תווים. אם אחד מהתנאים שציינו אינו מתקיים – אנו מכניסים למשתנה ה-$err את הסיבה למה הטופס אינו תקין:

                /* Putting the user submited comment in the associated variables */

                $username = $_POST['username'];

                $content = $_POST['content'];

               

                /* Checking for valid input */

                if ($username == "" || $content == "") //No username or password provided

                {

                                $err = "Username or comment is missing";

                }

                elseif (strlen($content) > 400) { //Content exceeded maximum number of characters

                                $err = "Comment is too long!";             

                }

                elseif (strlen($username) > 50)  { //Username exceeded maximum number of characters

                                $err = "Username is too long!";            

                }

                else {

 

אם כל התנאים נענו אנו אמורים נכנס לתנאי ה-else.

 

תנאי ה-else מכיל בתוכו את הקוד הנחוץ להכנסת התגובה למסד הנתונים:

                else {

                                /* Recommended to add some security code like mysql_real_escape_string on the variables to prevent SQL Injections

                                It is also recommended to strip any HTML tags to prevent from malicoius scripts to be executed (like XSS) */

                               

                               

                                //Running the query to add this comment entry

                                $result = mysql_query("INSERT INTO comments (username, content, date) VALUES ( '$username', '$content', NOW() )");

                               

                                if ($result) {

                                                $comment_added = true;

                                               

                                                /* User succesfully added comment, no need to save his submission */

                                                $username = "";

                                                $content = "";

                                }

                                else { //It seems like the query failed

                                                $err = "Failed to add comment. Please try again later.";    

                                }

                }

 

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

כעת, כל מה שנותר לעשות זה להריץ את שאילתה להכנסת הנתונים לשרת. נשתמש בפונקציית ה-

mysql_query עם השאילתה הבאה:

 

INSERT INTO comments (username, content, date) VALUES ( '$username', '$content', NOW() )

 

השאילתה מוכרת לכם? זאתי אותה השאילתה שהרצנו בממשק ה-PhpMyAdmin רק שהפעם הפרמטרים הם המשתנים שהמשתמש שלח בטופס. אם השאילתה בוצעה בהצלחה, משתנה ה-comment_added$ יקבל ערך של 'אמת'. ננקה את המשתנים username$ ו-content$ זאת מפני שאנו רוצים שהטופס שיוצג יהיה ריק בגלל שהמשתמש הכניס את התגובה בהצלחה. אם השאילתה נכשלה, נכניס למשתנה ה-err$ את הודעת השגיאה.
בחלק האחרון של קטע הקוד אנו מכניסים למשתנה ה-$dialog_text את תוכן ההודעה שנציג בסוף למשתמש. אם התגובה לא נכנסה – נציג למשתמש את השגיאה ($err), אם התגובה נכנסה – נציג למשתמש את ההודעה "Comment successfully added!":

 

 

//Dialog text set according to the errorsuccess

$dialog_text = ($comment_added) ? "Comment succesfully added!" : $err;

הערה: לאלו מכם שלא מכירים – המשתנה שלנו מקבל את הערך העונה על התנאי המופיע לפני סימן השאלה – אם התנאי הוא פסוק 'אמת', הערך שמשמאל יתקבל, אם הוא שקר הערך שמימין יתקבל.

רוצים לראות יותר מ-HWzone בתוצאות של Google?הוסיפו אותנו כמקור מועדף ב-Google
העמוד הקודם123456789העמוד הבא

הצטרפו לערוץ הטלגרם שלנו!

קבלו עדכונים שוטפים וחדשות מעולם הטכנולוגיה ישירות לטלפון שלכם.

הצטרפו עכשיו

היום לפני 3-14 שנים ב-HWzone: Radeon RX 6000, MacBook Pro ועוד
היום לפני 2-23 שנים ב-HWzone: Mi MIX, 144 הרץ ועוד
היום לפני 2-23 שנים ב-HWzone: 52 גיגה-ביט, BioDrive ביומטרי ועוד
צוקרברג ידע שהמשתמשים מבולבלים: Meta חויבה בקנס של 25 מיליארד דולר
סיכום השבוע: Claude, GTA 6 ועוד
תגיות:FacebookiPhoneאבטחהאינטרנטפייסבוק
איך זה גורם לך להרגיש?
אהבתי!1
מצחיק!0
עצוב0
מופתע0
משועמם0
כועס0
טוען תגובות...

כתבות פופולריות

הדרך להפסיק לשלם ולקחת בעלות: בנינו שרת AI מפלצתי מקומי
22/08/2026
ניסיתי סמארטפון מתקפל בפעם הראשונה – התרשמויות משימוש Galaxy Z Fold8
27/09/2026
מחשב ASUS Ascent GX10 מבוסס NVIDIA DGX Spark בסקירה: דמוקרטיזציה של מודלים מקומיים
02/10/2026
מחיקת זיכרון: למה מיקרוסופט מסתירה פתאום את המלצת ה-32 גיגה-בייט למחשבים אישיים?
06/08/2026
HWzoneHWzone
עקבו אחרינו
  • אודות האתר
  • צרו קשר
  • פרסם אצלנו
  • תנאי שימוש ומדיניות פרטיות
  • הצהרת נגישות