0

コミックとアートワークの 2 つのサブサイトを持つコミック Web サイトを構築しています。コミックとアートワークは 2 つの別々のテーブルに格納されます。

ユーザーが画像を検索できる検索機能があります。

コミックのみ、アートワークのみ、またはその両方を検索するオプションを提供したいと思います。

ここに画像の説明を入力

私は次のjavascriptを持っていますが、これはうまくいくはずです:

    <script type="text/javascript">

        function search(searchString) {     
           var site = $("#site").val();
           $.get("./scripts/search.php", {_input : searchString, _site : site},
                function(returned_data) {
                    $("#output").html(returned_data);
                }
            );
        }

        function searchChoice(choice) {     
           $.get("./scripts/search.php", {_choice : choice}
           );
        }

</script>

そして、次の HTML:

    <!--Search filtering for comics, artwork, or both-->
<span class="search"><b>Search for: </b> </span>

<div class="btn-group" data-toggle="buttons-radio">
<span class="search">
    <button type="button" class="btn" id="comics" onclick="searchChoice(this.id)">Comics</button> 
    <button type="button" class="btn" id="artwork" onclick="searchChoice(this.id)">Artwork</button> 
    <button type="button" class="btn" id="all" onclick="searchChoice(this.id)">All</button> 
</span>
</div>

<br/>
<br/>

<!--Search functionality-->
<span class="search">
    <input type="text" onkeyup="search(this.value)" name="input" value="" />
    <input id="site" type="hidden" value="<?php echo $site; ?>">
</span>

<br />
<span id="output"><span class="sidebarimages">  </span></span>

私の質問は、PHPで 2 つのテーブルをクエリする場合です。

JOIN を正しく実行していますか?

$input = (isset($_GET['_input']) ? ($_GET['_input']) : 0); 
$choice = (isset($_GET['_choice']) ? ($_GET['_choice']) : "all");
$site = (isset($_GET['site']) ? ($_GET['site']) : null);


if ($choice == "artwork") {
    $sql = "SELECT id, title, thumb FROM artwork";
    $thumbpath = "./images/Artwork/ArtThumbnails/";
}
else if ($choice == "comics") {
    $sql = "SELECT id, title, thumb FROM comics";
    $thumbpath = "./images/Comics/ComicThumbnails/";
}
else {
    $sql = "SELECT id, title, thumb FROM comics 
            UNION 
            SELECT id, title, thumb FROM artwork";
    $thumbpath = "./images/AllThumbnails/";
}


$imgpaths = $mysqli->query($sql);
mysqli_close($mysqli);

ありがとう!

4

2 に答える 2

2

JOIN 関数を使用するには、テーブル間のリレーションが必要です (互いに接続する外部キー)

于 2012-11-21T21:01:41.763 に答える
1

UNIONいいえ、2 つのテーブルを結合するための条件を述べているわけではありません。また、両方のテーブルを参照する場合は、代わりに次のように使用することを検討してください。

SELECT * FROM comics
UNION
SELECT * FROM artwork
于 2012-11-21T21:01:01.730 に答える