2012-06-29 2 views
2

사용자 체크 박스 선택에 따라 PHP 페이지에서 필터링 가능한 MySQL 데이터를 표시하는 방법을 익히려고합니다. 도메인 이름 데이터베이스와 Nominet DAC 정보에 따라 갱신해야하는 날짜가 있으며 필터링되지 않은 데이터를 표시 할 수 있지만 도메인 확장을 기준으로 결과를 필터링하는 것은 까다로울 수 있습니다. 이 단계에서 나는 여기서 내가 함께 일하는 법을 배우려는 많은 아이디어에 진지한 초보자임을 지적해야한다. 따라서 부드럽게 지내라. 나는 여기에도 다른 기사를 쓰려고했지만 주사위는 사용하지 않았다. AJAX 필터 체크 박스를 사용하여 MySQL 결과

는 내가 지금까지 다음과 같은 한 :

HTML

<input type="checkbox" class="extensions" name="extensions" value=".co.uk">.co.uk</input> 
<input type="checkbox" class="extensions" name="extensions" value=".org.uk">.org.uk</input> 

스크립트

$('.extensions').live('click', function() { 
var all_boxes = $('.extensions'); 
var all_boxes_values = []; 
var i = 0; 
for (var i; i < all_boxes.length; i++) { 
    if (all_boxes[i].checked) { 
     all_boxes_values.push(all_boxes[i].value) 
    } 
} 
var all_boxes_values_clean = all_boxes_values.join(", "); 
console.log(all_boxes_values_clean); 
$.get("sql-test.php", {q: all_boxes_values_clean}, 
function(result) { 
$("div#output").html(result); 
} 
    )});  

PHP

$g = $_GET['q']; 
$extensionsql=""; 
$extension=1; 
if(isset($g)) { 
$extension=1; 
$param = "" . str_replace(",", "','", $_GET['q']) . ""; 
} 

그리고 그것은 지금까지 내가 내 제한으로받은대로입니다 능력. 다음은 도메인 일치 열을 검색하여 해당 결과를 사용자에게 반환하는 것입니다. 다음과 같은 것을 모방하는 것이지만 그것을 성취 할 방법이 확실하지 않습니다. 어떤 도움이 많이 주시면 감사하겠습니다 :

SELECT * FROM `refresh` WHERE `domainName` LIKE '%.co.uk%' AND renewalDate LIKE '%2012-06-30%' ORDER BY `domainName` ASC 

감사합니다 이름

답변

2

이름 변경 = "확장"=이 요소의 배열을 만듭니다으로 "확장 []": 마지막 점검 값으로 덮어 쓰기 (당신이) 일반적으로

과 체크 박스의

$g = explode(',', $_GET['q']); 

$param=''; 
while(list($key,$value)=each($g)) 
{ 
    $param.="`domainName` LIKE '%".mysql_real_escape_string($value)."' OR "; 
} 
$param=substr($param,-3); // knock off last OR 

$sql="SELECT * FROM `refresh` WHERE renewalDate LIKE '%2012-06-30%' AND (".$param.") ORDER BY `domainName` ASC 
+1

일을하지만, , 친구. [foreach] (http://php.net/manual/en/control-structures.foreach.php)를 사용하십시오. – goat

+0

Thanks @Waygood. while (list ...를 foreach로 바꾸었지만 스크립트가 실행될 때 SQL 오류를 반환합니다. 또는 SQL 구문에 오류가 있습니다. 올바른 구문을 보려면 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. 'OR ORDER BY domainName ASC'1 번 줄 근처에서 사용하십시오. 이것이 왜 그런지에 관해 조언 할 수 있습니까? 이것에 대한 귀하의 도움에 다시 한번 감사드립니다. – keepitnang

1

이름 변경을 게시 할 경우 PHP에 다시 게시 된 경우 (확장 []) 그들에게 배열을 만들려면 :

<input type="checkbox" class="extensions" name="extensions[]" value=".co.uk">.co.uk</input> 
<input type="checkbox" class="extensions" name="extensions[]" value=".org.uk">.org.uk</input> 

아마 당신의 자바 스크립트 조금 정리해야합니다 : (목록 ($ 키 $ 값) = 각 ($의 g이))`일찍 PHP 4 시대 동안`

$('.extensions').live('click', function() { 
var all_boxes = $('.extensions'); 
var checked_boxes = $('.extensions:checked'); 
var all_boxes_values = []; 

checked_boxes.each(function(){ 
var cb_value = $(this).val(); 
all_boxes_values.push(cb_value); 
}); 

var all_boxes_values_clean = all_boxes_values.join(", "); 
console.log(all_boxes_values_clean); 
$.get("sql-test.php", {q: all_boxes_values_clean}, 
     function(result) { 
     $("div#output").html(result); 
     }) 
}); 
+0

감사 코드 @David. 내 아마추어 시도보다 나은 방법 :) – keepitnang

관련 문제