2

我想根据用户在我的搜索表单中单击的内容将用户重定向到另一个页面,该搜索表单使用 ajax 从数据库中填充。

我将如何制作一个 onclick 事件,将页面重定向到另一个页面并传递一个 ID 参数?

目前,只要您从下拉搜索菜单中突出显示一个选项,它就会将我发送到一个新页面(称为 some_page.php?具有正确的卡 ID,我唯一要更改的是仅在用户单击时将其发送到那里卡片。

在此处输入图像描述

JS

function display(id)
    {
        //document.getElementById('text_content').value = word;
            document.getElementById('box').style.display = 'none';
        document.getElementById('text_content').focus();
        window.location.href = "some_page.php?card_id=" + id;

    }

php

<?php
    $mysqli = mysqli_connect('localhost', 'root', '', 'draftdb');

if(mysqli_connect_errno()) 
{
    echo "Connection Failed: " . mysqli_connect_errno();
    exit();
}


<?php
        $str = $_GET['content'];
        if(strlen($str))
        {
            $sel = mysqli_query($mysqli, "select CARD_NAME, CARD_ID,CARD_TYPE from cards where CARD_NAME like '".trim($str)."%'");
            if(mysqli_num_rows($sel))
            {
                echo "<table border =\"0\" width=\"100%\">\n";
                if(mysqli_num_rows($sel))
                {
                    echo "<script language=\"javascript\">box('1');</script>";
                    while($row = mysqli_fetch_array($sel))
                    {
                        $card_info = str_ireplace($str,"<b>".$str."</b>",($row['CARD_NAME']));
                        $card_type = str_ireplace($str,"<b>".$str."</b>",($row['CARD_TYPE']));

                echo "<tr id=\"word".$row['CARD_ID']."\" onmouseover=\"highlight(1,'".$row['CARD_ID']."');\" onmouseout=\"highlight(0,'".$row['CARD_ID']."');\" 
       onClick=\"display('".$row['CARD_NAME']."', " . $row['CARD_ID'] . ");\" >\n<td>".$card_info." ".$card_type."</td>\n</tr>\n";



                    }
                }
                echo "</table>";
            }
        }
        else
        {
            echo "<script language=\"javascript\">box('0');</script>";
        }
4

2 回答 2

1

如果我是你,我会使用标准表单提交。并非所有互联网用户都支持 Javascript。您当然不想回复将其用于会影响或破坏您网站功能的事情。我坚信,如果您使用 Javascript,请提供明确的后备方案。在您的情况下,如果他们没有启用 Javascript……那么他们根本无法搜索。

用户提交表单,例如:

<form method="POST" id="myForm" action="search.php">

于 2012-08-15T03:58:14.297 回答
1

我会重做代码,并使用这样的东西:

PHP:

<?php
$mysqli = mysqli_connect('localhost', 'any_user_other_than_root', 'secure_password_here', 'draftdb');
if(!$mysqli) 
{
    die('Connection Failed: ' . mysqli_connect_errno());
}
$str = $_GET['content'];
if(!empty($str))
{
    $str = trim(mysqli_real_escape_string($mysqli, $str));
    $sel = mysqli_query($mysqli, "SELECT `card_name`, `card_id`, `card_type` FROM `cards` WHERE `card_name` LIKE '$str%'");
    if(mysqli_num_rows($sel) > 0)
    {
        echo '<form action="some_page.php" method="post">' . PHP_EOL;
        echo '<select name="card_id" id="card_id" size="8">' . PHP_EOL;
        while($row = mysqli_fetch_array($sel))
        {
            $card_info = str_ireplace($str, "<strong>$str</strong>", $row['CARD_NAME']);
            $card_info = str_ireplace($str, "<strong>$str</strong>", $row['CARD_TYPE']);
            echo '<option class="card" value="'. $row['CARD_ID'] . '">';
            echo "$card_info $card_type";
            echo '</option>' . PHP_EOL;
        }
        echo '</select>' . PHP_EOL;
        echo '</form>' . PHP_EOL;
    }
}
?>

CSS:

<style type="text/css">
    .card {
        background: #eee
    }
    .card:hover {
        background: #ccc
    }
</style>

当然,需要 CSS 让它看起来像你现在拥有它,并且可能需要一些 JS。

于 2012-08-15T04:01:12.060 回答