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

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

dor77 28-08-09 18:41

עזרה| השלמת ההרשמה לאחר ביצוע בדיקה לטופס.
 
שלום.
יצרתי טופס הרשמה, הכל פועל מעולה.
החטתי לשפר אותו לעשות בדיקה בJS.
הפונקציה פועלת על ידי onsubmit="return validate();
עכשיו בקוד הישן עשיתי בדיקה אם הכפתור submit נלחץ תכניס את הפרטים, כרגע אני לא יכולה לעשות את זה, כי אני צריך לוודאות שאין בעיות בטופס והכל true.
לצורך הבנה ניד וזהו הדף שלי:


PHP קוד:

<html>
<head>
<title>Untitiled</title>
<script>
function validate()
{
    document.getElementById('first_name_error').innerHTML = "";
    document.getElementById('last_name_error').innerHTML = "";
    var val = true;
    
    var fName = document.frm.first_name.value;
    if(fName.length < 3)
    {
        document.getElementById('first_name_error').innerHTML = "Enter first name please.";
        document.frm.first_name.style.border = "red 1px solid";
        val = false;
    }
    var lName = document.frm.last_name.value;
    if(lName.length < 3)
    {
        document.getElementById('last_name_error').innerHTML = "Enter last name please.";
        document.frm.last_name.style.border = "red 1px solid";
        val = false;
    }
    return val;
}
</script>
</head>
<body>

        <form name="frm" id="frm" onsubmit="return validate();">
        <table id="registertable" cellpadding="10">
                <tr>
                <td align="left">
                <span class="field">First name:</span>
                        </td>
                        <td align="left">
                        <input type="text" name="first_name" id="first_name" />
                            <div id="first_name_error" style="display:inline; font-family:arial; color:red;"></div>
                        </td>
                </tr>
                <tr>
                <td align="left">
                <span class="field">Last name:</span>
                        </td>
                        <td align="left">
                        <input type="text" name="last_name" id="last_name">
                        <div id="last_name_error" style="display:inline; font-family:arial; color:red;"></div>
                        </td>
                </tr>    
                    <td></td>
                    <td><input type="submit" value="Submit" />&nbsp;
                        <input type="reset" value="Reset" /></td>
                </tr>
            </table>
        </form>
        </div>
</body>
</html>

<?php

mysql_connect
("localhost""root""");
mysql_select_db("phpmyadmin");


$first_name=$_POST['user_name'];
$last_name=$_POST['last_name'];

mysql_query("INSERT INTO users (first_name, last_name) VALUES ('$first_name', '$last_name')");
echo 
"נרשמת בהצלחה!";

?>

איך אני מפעיל את הקוד ב php רק במידה ולא נמצאו שגיאות בטופס והמשתנה val האחרון הוא אכן true?

חושב שהבנתם אותי.

תודה רבה ושבת שלום.

anti 28-08-09 19:31

if $_POST['submit']== "Submit"
תוסיף תIF הזה בהתחלה

dor77 28-08-09 19:54

עשיתי דבר כזה, עדיין, כי זה שה submit נלחץ, לא אומר שהטופס תקין.

אשמח לעוד הצעות, תודה (:

sholaman 29-08-09 07:35

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

ככה שגם אם אתה עושה מליון בדיקות בJS אתה עדיין חייב לעשות בדיקה שהשרת עצמו יבדוק את הנתונים, PHP.

בהצלחה.

dor77 29-08-09 10:46

ברור שאני יעשה, אבל לאט לאט, קודם שיכניס את הנתונים.
הקוד לא עובד, מה לא טוב בקוד?
עזרה בבקשה :)

עריכה: הצלחתי, עשיתי דבר כזה:

PHP קוד:


if(isset($_POST['submit']) && (val==true))
{
mysql_query("INSERT INTO users (first_name, last_name) VALUES ('$first_name', '$last_name')");
echo 
"נרשמת בהצלחה!";


זה נכון לעשות?
ה val הוא מהג'אווה סקריפט, אבל זה משום מה עובד, זה בסדר?

תודה :)

anti 29-08-09 14:14

קודם כל משתנה בPHP מתחיל ב$ לכן לא הגיוני שזה נכון.
ואתה לא יכול להעביר בצורה כזאת משתנה מJS לPHP

dor77 29-08-09 14:19

בגל זה זה אל היה נראה לי נכון, אבל עובדה שזה עובד.
בכל אופן אני רוצה שזה יהיה תקני ויעבוד.
משתנה בphph מתחיל ב$ בjs זה אחרת.

sholaman 29-08-09 20:57

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

Shay Ben Moshe 29-08-09 21:28

זה די פשוט להבין מה הולך שם.
דבר ראשון שצריך להבין זה שPHP רצה לפני צד הלקוח (HTML,JS,CSS...). משמע לא ניתן להשתמש בצד הלקוח באופן ישיר לתוך PHP מבלי לשלוף וכדומה בצורות של פתיחת קבצים.
דבר שני נסביר מה קרה:
כתבת val, אני מאמין שPHP ניסתה להתייחס אל זה כאל קבוע אבל לא הצליחה. בכל אופן, לכתוב משהו PHP יודעת, גם אם היית רושם שם hey==true, או 3==true זה היה עובד. אם היית רושם 0==true או false==true זה לא היה עובד.
אם אתה רוצה להעביר משתנה דרך JS אני ממליץ להשתמש בAJAX או COOKIE (ולעשות REFRESH).
בהצלחה.

AlmogBaku 30-08-09 06:06

לדעתי הבעיה שלך היא ב- document.frm.first_name.value והשני, תבחר אותם על פי ID


וכמו שאמרו לך מקודם, אין קשר בין ה PHP ל JS(אלא אם כן יוצרים אותו, וזה כבר סיפור אחר..)


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

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