2012-11-21 4 views
0

저는 코믹스 웹 사이트를 만들고 있는데, 여기에는 만화와 아트 워크가 있습니다. 만화와 아트 워크는 두 개의 별도 테이블에 저장됩니다.jquery를 사용하여 라디오 버튼으로 여러 개의 테이블을 쿼리하도록 선택하십시오.

사용자가 이미지를 검색 할 수있는 검색 기능이 있습니다.

만화, 예술 작품 또는 둘 다를 검색하도록 선택할 수있는 옵션을 제공하고 싶습니다.

enter image description here

나는 내가 믿는 다음 자바 스크립트가 작동해야 있습니다

<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와 여기에 두 테이블을 쿼리하는 경우 :

정확하게 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); 

고마워요!

+0

참으로 가입하려면 입력 할 필드를 지정해야합니다. 2 개의 select 문을 실행하는 것이 좋습니다. 나는 또한'where' 절도 보지 않아 모든 것을 반환한다는 것을 의미합니다. – Archer

답변

1

아니, 당신은 두 테이블에서보고의 경우도 2 개 테이블을 조인에 대한 모든 조건을, 당신이 같이 대신 UNION를 사용하는 것이 좋습니다 진술하지 않을 : 사용하려면

SELECT * FROM comics 
UNION 
SELECT * FROM artwork 
+0

안녕하세요, 위의 PHP SQL 문을 편집했습니다. 검색은 만화를 선택한 경우에도 항상 마지막 else 문 (만화 및 아트 워크 모두 쿼리)을 기본값으로 설정하는 것처럼 보입니다. – Growler

+0

'$ choice'에 기대되는 값을 얻었습니까? – DarkAjax

+0

"alert ("Choice : "+ choice") 올바른 선택 ("만화", "아트웍"또는 "all"선택에 따라)을 알립니다 ... 올바른 옵션이 자바 스크립트에 들어 있다는 것을 알고 있습니다. – Growler

2

JOIN 함수 테이블간에 관계가 필요합니다 (서로를 연결하는 외래 키)

+0

안녕하세요. 위의 PHP SQL 문을 편집했습니다. 만화책 만 골랐다 고해도 검색은 만화와 작품 모두를 반환합니다. 왜 그런가? – Growler

관련 문제