שלח תשובה

זירת השאלות

10 תשובות

  1. somebody הגיב:

    ככה:
    אתה בונה שאילתת SQL שבודקת אים יש משתמש בשם הז או הזה.
    אם יש אתה כותב ישנו משתמש בשם זה אם אין אתה רושם אותו.
    ככה:


    sql="select * from tablename where user='"&request.form("filename")&"'"
    set rs= Server.CreateObject("ADODB.Recordset")
    rs.open sql,conn,3,3
    if rs.bof or rs.eof then
    response.write ("שם המשתמש פנוי")
    else
    response.write("שם המשתמש תפוס")
    end if
    rs.close
    set rs=nothing

    כמובן ששנה את זה לפי הקוד שלך..

  2. ניר טייב הגיב:

    למען האמת
    יותר כדאי כבר ברמת המסד לעשות זאת, כלומר להגדיר את העמודה כ-unique  (בכל תא בעמודה יהיה ערך אחד בלעדי לרשומה) וכאשר מכניסים לבדוק שאין שגיאה.

  3. guyorbach הגיב:

    כנסו…
    ל-somebody אם אתה יכול לכתוב את מה שכתבת ב-PHP אודה לך.

    ולניר לא הבנתי איך לבדוק שיש שגיאה??

  4. somebody הגיב:

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


    if rs.eof or rs.bof then
    'code
    else
    'code
    end if

    תרגם לPHP כי ניראה לי ששאילתת הSQL השניהם אותו דבר…
    וגםשנה את ה REQUEST.בשאילת….

    והכי טוב שתעשה מה  שנירר אמר…
    רק אתה צריך את מספר השגיאה וזהו…

  5. guyorbach הגיב:

    כך ניסיתי…
    כך ניסיתי לעשות:


    $name = mysql_escape_string($_POST['name']);
    $q = mysql_query("SELECT COUNT(*) FROM members WHERE name='$name'");
    $result = mysql_fetch_array($q);
    if($result[0] == 1 )
    {
    echo("this user has been already using!");
    }
    else
    {
    echo("thank you!");
    }

    למה זה לא עובד?

  6. crazy2 הגיב:

    מסיבה פשוטה.
    כדי לבדוק אם יש שורות במסד אתה משתמש בפונקציה myqsl_num_rows(); , ואתה השתמש ב fetch_array שזה בגלל להדפסת מידע.
    הנה קוד פשוט:


    $name = $_POST['name'];
    $a = mysql_query("SELECT * FROM members WHERE name = '$name'");
    if(mysql_num_rows($a) == 0) // אין תוצאות, כלומר אין משתמש רשום
    {
    echo "נרשמת בהצלחה";
    }
    else // יש תוצאות, כלומר יש משתמש כזה.
    {
    echo "the user exsist in the DB";
    }

  7. crazy2 הגיב:

    *בכלל
    ובנוסף רציתי להוסיף, שההצעה של ניר באמת יודע כדאית.

  8. ניר טייב הגיב:

    להשתמש ב-try.. catch..
    כדי לתפוס את השגיאה או אם אני לא טועה להשתמש ב-die:

    statement or die("שם המשתמש קיים כבר במערכת")

  9. guyorbach הגיב:

    ניסיון טוב אבל עדין יש בעיה…
    זה כולל הקוד של ההרשמה:


      $query = "INSERT INTO members ( user, password)
           values( '$name', '$number')";
       if ( ! mysql_query( $query, $link ) ) {
        $dberror = mysql_error();
        return false;
      }
      $name = $_POST['name'];
      $q = mysql_query("SELECT * FROM members WHERE username = '$name'");
      if(mysql_num_rows($q) == 0)
    {
    echo "you are a new member";
    }
    else
    {
    echo "sorry the user exsist";
      }
    return true;
    }

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

  10. crazy2 הגיב:

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

שלח תשובה