0

チュートリアルから収集したインスタント検索プログラムがあり ます。コードのいくつかの行を変更しました。これがドキュメントです:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <link href="styles.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <script type="text/javascript">
        $(function() {
            $(".search_button").click(function() {
                // getting the value that user typed
                var searchString    = $("#search_box").val();
                // forming the queryString
                var data            = 'search='+ searchString;

                // if searchString is not empty
                if(searchString) {
                    // ajax call
                    $.ajax({
                        type: "POST",
                        url: "instant_search.php",
                        data: data,
                        beforeSend: function(html) { // this happens before actual call
                            $(".results").html('');
                            //$("#uname").value('');
                            //$("#searchresults").show();
                            $(".word").html(searchString);
                        },
                        success: function(html){ // this happens after we get results
                            $(".results").show();
                            $(".results").append(html);
                            $('#uname').value(html);
                            //document.getElementById('uname').value(html);
                            //$("#uname").value(html);
                        }
                    });
                }
                return false;
            });
        });
    </script>
</head>
<body>
<?php echo '<center>';?>

    <div class="header_box"><?php echo $f->SYSTEM_NAME; ?></div>

<?php
if($acc_type == 'admin'){ ?>
    <h1>Create new admin account</h1>
    <table>
        <tr>
            <td>Username</td>
            <td>:</td>
            <td><input type="text" name="id" size="20" class="text_box"/></td>
            <td><input type="button" value="Check"></td>
        </tr>
    </table>

    <?php
}else if($acc_type == 'student'){ ?>
    <h1>.:: Create student's account ::.</h1>
    <label style="font-size: 18px"><label style="color: red">*</label> Marked fields are must</label><br/><br/>
<!--    <form action="" method="post">-->
    <table border="0">
        <tr class="unimportant_text">
            <td>Test Username</td>
            <td>:</td>
            <td>
                <form method="post" action="instant_search.php">
                    <input type="text" name="search" id="search_box" class="unimportant_text"/>
                    <input type="submit" class="search_button" value="Check" style="background: #808080; color: white; border: none"/><br />
                </form>
            </td>
        </tr>
        <tr>
            <td>Username<label style="color: red">*</label></td>
            <td>:</td>
            <td>
                <label class="results" style="font-size: 20px; color: green; font-weight: bold"></label>
                <input type="hidden" name="uname" id="uname"/>
            </td>
        </tr>
        <tr>
            <td>Full Name<label style="color: red">*</label></td>
            <td>:</td>
            <td><input type="text" name="name" class="text_box"/></td>
        </tr>
        <tr>
            <td>Contact<label style="color: red">*</label></td>
            <td>:</td>
            <td><input type="text" name="name" class="text_box" /></td>
        </tr>
        <tr>
            <td>Contact (Optional)</td>
            <td>:</td>
            <td><input type="text" name="name" class="text_box" /></td>
        </tr>
        <tr>
            <td>Email</td>
            <td>:</td>
            <td><input type="text" name="name" class="text_box" /></td>
        </tr>
        <tr>
            <td>Course<label style="color: red">*</label></td>
            <td>:</td>
            <td>
                <select name="course">
                    <?php
                    $courses = $f->get_courses();
                    foreach($courses as $c){ ?>
                        <option value="<?php echo $c[1];?>"><?php echo $c[1];?></option>
                    <?php
                    }
                    ?>

                </select>
            </td>
        </tr>
        <tr>
            <td>Address</td>
            <td>:</td>
            <td><input type="text" name="name" class="text_box" /></td>
        </tr>
    </table>
        <input type="submit" value="Submit">
<!--    </form>-->
    <?php
}
?>
<?php echo '</center>';?>
</body>
</html>

そして、これが私のinstant_search.phpです:

if (isset($_POST['search'])) {
$word = mysql_real_escape_string($_POST['search']);
$res = $f->select_name($word);
if(mysql_num_rows($res) > 0) {
    //echo 'Not available, choose another one';
} else {
    echo $word;
}
}

私が欲しいのはとてもシンプルです。

  1. $wordがデータベースで利用可能かどうかを確認したいだけです。そうでない場合は、それを非表示フィールド(uname)の値として設定します。次に、フォームを別のphpファイルに送信し、アカウントを作成します。

  2. ここでは2つの形式が使用されていますが、これも問題を引き起こしています。

私がその仕事をするのを手伝ってください。前もって感謝します。

4

1 に答える 1

1

PHPから特定のコードを返し、AJAX呼び出しの成功コールバックでテストする必要があります。

Instant_search:

if (isset($_POST['search'])) {
    $word = mysql_real_escape_string($_POST['search']);
    $res = $f - > select_name($word);
    if (mysql_num_rows($res) > 0) {
        //The word is not in DB, then specify error in front of it
        echo '[error]'.$word;
    } else {
        echo $word;
    }
}

成功したコールバック:

success: function (html) { // this happens after we get results
    if(html.search('[error]') >= 0)
    {
       //Error : set your input field with returned text
       $('#uname').val(html.split('[error]')[1]);

       //Call your second form here           
    }
    else
    {
        //No error
        $(".results").show();
        $(".results").append(html);
    }
}
于 2013-02-19T08:59:05.297 に答える