2013-03-01 2 views
0

데이터베이스에 4 개의 레코드를 삽입하는 for 루프에서 삽입이 발생했습니다. 이 새로운 레코드 중 하나만을 가지고 싶다면 변수 $ action에 포함 된 양식의 선택 메뉴에서 값을 가져 오십시오. 이 메뉴는 사용자 선택에 따라 양식의 한 레코드에 대해서만 나타납니다.for 루프에서 삽입 - 하나의 레코드에만 선택 옵션 값을 추가하십시오.

테이블 구조는 다음과 같습니다

CREATE TABLE IF NOT EXISTS `pathway` (
    `pathway_pk` int(3) NOT NULL AUTO_INCREMENT, 
    `case_fk` int(3) NOT NULL, 
    `level` int(1) NOT NULL, 
    `pathway_allowed` char(1) NOT NULL DEFAULT 'n', 
    `pathway_action_fk` int(2) NOT NULL DEFAULT '0', 
    `comment` text NOT NULL, 
    `created` datetime NOT NULL, 
    `created_by` int(3) NOT NULL, 
    `updated` datetime NOT NULL, 
    `updated_by` int(3) NOT NULL, 
    PRIMARY KEY (`pathway_pk`) 
) 

PHP의 :

나머지

$author_pk = $_GET['author_pk']; 
$case_pk = $_GET['case_pk']; 
$patient_pk = $_GET['patient_pk']; 

$pathway_allowed = intval($_POST['allowed']); 

$action = mysql_real_escape_string($_POST['actions']); 


if(isset($_POST['submit'])){ 

$pathway_comment = array(); 
foreach($_POST['comment'] as $comment) { 
    $pathway_comment[]= mysql_real_escape_string($comment); 
} 
for($i=0, $count = count($pathway_comment);$i<$count;$i++) { 
    $comment = $pathway_comment[$i]; 
    $query = sprintf(
     "INSERT INTO pathway (    
      pathway_pk, 
      case_fk, 
      level, 
      pathway_action_fk, 
      pathway_allowed, 
      comment 
     ) VALUES (
      '', 
      '$case_pk', 
      '1', 
      '$action', 
      '%s', 
      '$comment')", $pathway_allowed === $i ? 'y' : 'n'); 

     $result = mysql_query($query, $connection) or die(mysql_error()); 
:

<script type="text/javascript"> 
$(document).ready(function() { 
$("#jMenu").jMenu(); 
$("select, input, a.button, button").uniform(); 


$("input:radio[id='allowed_0']").click(function() { 

$("#required_p2").remove(); 
$("#required_p3").remove(); 
$("#required_p4").remove(); 

if($(".p1_action").text().trim()==""){ 
$(".p1_action").append('<div class="required" id="required_p1"><select name="actions" id="actions"><option>Select an action for this pathway...</option></select></div>'); 
} 

$.getJSON('../scripts/get_pathway_actions.php', function(data){ 
    var html = ''; 
    var len = data.length; 
    for (var i = 0; i< len; i++) { 
     html += '<option value="' + data[i].pathway_action_pk + '">' + data[i].action + '</option>'; 
    } 
    if($('select#actions option').length == 1){ 
    $('#actions').append(html); 
    } 
}); 
}); 


$("input:radio[id='allowed_1']").click(function() { 

$("#required_p1").remove(); 
$("#required_p3").remove(); 
$("#required_p4").remove(); 

if($(".p2_action").text().trim()==""){ 
$(".p2_action").append('<div class="required" id="required_p2"><select name="actions" id="actions"><option>Select an action for this pathway...</option></select></div>'); 
} 

$.getJSON('../scripts/get_pathway_actions.php', function(data){ 
    var html = ''; 
    var len = data.length; 
    for (var i = 0; i< len; i++) { 
     html += '<option value="' + data[i].pathway_action_pk + '">' + data[i].action + '</option>'; 
    } 
    if($('select#actions option').length == 1){ 
    $('#actions').append(html); 
    } 
}); 
}); 



$("input:radio[id='allowed_2']").click(function() { 

$("#required_p1").remove(); 
$("#required_p2").remove(); 
$("#required_p4").remove(); 

if($(".p3_action").text().trim()==""){ 
$(".p3_action").append('<div class="required" id="required_p3"><select name="actions" id="actions"><option>Select an action for this pathway...</option></select></div>'); 
} 

$.getJSON('../scripts/get_pathway_actions.php', function(data){ 
    var html = ''; 
    var len = data.length; 
    for (var i = 0; i< len; i++) { 
     html += '<option value="' + data[i].pathway_action_pk + '">' + data[i].action + '</option>'; 
    } 
    if($('select#actions option').length == 1){ 
    $('#actions').append(html); 
    } 
}); 
}); 



$("input:radio[id='allowed_3']").click(function() { 

$("#required_p1").remove(); 
$("#required_p2").remove(); 
$("#required_p3").remove(); 

if($(".p4_action").text().trim()==""){ 
$(".p4_action").append('<div class="required" id="required_p4"><select name="actions" id="actions"><option>Select an action for this pathway...</option></select></div>'); 
} 

$.getJSON('../scripts/get_pathway_actions.php', function(data){ 
    var html = ''; 
    var len = data.length; 
    for (var i = 0; i< len; i++) { 
     html += '<option value="' + data[i].pathway_action_pk + '">' + data[i].action + '</option>'; 
    } 
    if($('select#actions option').length == 1){ 
    $('#actions').append(html); 
    } 
}); 
}); 


}); 

function validate(){ 
valid = true; 

if (document.form.comment_1.value == ""){ 
    alert ("Please enter a comment for Pathway 1"); 
    valid = false; 
    return valid; 
} 

if (document.form.comment_2.value == ""){ 
    alert ("Please enter a comment for Pathway 2"); 
    valid = false; 
    return valid; 
} 

if (document.form.comment_3.value == ""){ 
    alert ("Please enter a comment for Pathway 3"); 
    valid = false; 
    return valid; 
} 

if (document.form.comment_4.value == ""){ 
    alert ("Please enter a comment for Pathway 4"); 
    valid = false; 
    return valid; 
} 




return valid; 
} 

function delayer(){ 
window.location = "create_pathways.php?author_pk=<?php echo $author_pk; ?>&case_pk=<?php echo $case_pk; ?>&patient_pk=<?php echo $patient_pk; ?>" 
} 
</script> 
<body> 
<?php include('menu_bar.php'); ?> 
<div class="settings"> 
    <div class="buttonn"> <a href="<?php echo $_SERVER['PHP_SELF'], '?logout=true' ?>" class="buttonn">Logout</a> </div> 
    <div class="buttonn"> <a href="change_password.php?author_pk=<?php echo $author_pk; ?>" class="buttonn">Change Password</a> </div> 
</div> 
<div class="title">Create Pathways for Level 1<span class="message"><?php echo $message; ?></span></div> 
<div class="top_form"> 
    <form action="" method="post" name="form" id="form" onSubmit="return validate();"> 
    <table width="182%" border="0" cellpadding="5"> 

     <tr> 
     <td valign="top"><strong>Pathway</strong></td> 
     <td align="center" valign="top"><strong>Allowed</strong></td> 
     <td colspan="2"><strong>Blocking or Accepting Comment</strong></td> 
     <td valign="top">&nbsp;</td> 
     </tr> 
     <tr> 
     <td width="23%" valign="top"><strong>Pathway 1:</strong> No action - See again</td> 
     <td width="6%" align="center" valign="top"><input type="radio" name="allowed" value="0" id="allowed_0" /></td> 
     <td colspan="2"><div class="required"> 
      <textarea name="comment[]" id="comment_1" cols="35" rows="5"></textarea> 
      </div></td> 
     <td width="33%" align="left" valign="top" class="p1_action"></td> 
     </tr> 
     <tr> 
     <td valign="top"><strong>Pathway 2:</strong> See again</td> 
     <td align="center" valign="top"><input type="radio" name="allowed" value="1" id="allowed_1" /></td> 
     <td colspan="2"><div class="required"> 
      <textarea name="comment[]" id="comment_2" cols="35" rows="5"></textarea> 
      </div></td> 
     <td width="33%" align="left" valign="top" class="p2_action"></td> 
     </tr> 
     <tr> 
     <td valign="top"><strong>Pathway 3:</strong> Refer to ED</td> 
     <td align="center" valign="top"><input type="radio" name="allowed" value="2" id="allowed_2" /></td> 
     <td colspan="2"><div class="required"> 
      <textarea name="comment[]" id="comment_3" cols="35" rows="5"></textarea> 
      </div></td> 
     <td width="33%" align="left" valign="top" class="p3_action"></td> 
     </tr> 
     <tr> 
     <td valign="top"><strong>Pathway 4:</strong> Refer to Specialist</td> 
     <td align="center" valign="top"><input type="radio" name="allowed" value="3" id="allowed_3" /></td> 
     <td colspan="2"><div class="required"> 
      <textarea name="comment[]" id="comment_4" cols="35" rows="5"></textarea> 
      </div></td> 
     <td width="33%" align="left" valign="top" class="p4_action"></td> 
     </tr> 
     <tr> 
     <td valign="top">&nbsp;</td> 
     <td align="center" valign="top">&nbsp;</td> 
     <td colspan="2"><input type="submit" name="submit" id="submit" value="Create Pathways for Level 1" /></td> 
     <td>&nbsp;</td> 
     </tr> 

    </table> 
    </form> 
+0

현재 코드가 수행하고 변경하고자하는 것은 무엇입니까? 코드의 첫 번째 부분은 매우 의문 스럽다 ...'$ px_action' 라인은 네 개의 변수를 설정하고 그 중 하나가 설정되어 있는지 확인한다. 이것은 아마도 첫 번째'if' 문에서 끝날 것이다. –

+1

당신의 스크립트는'$ action'을 통해 SQL 인젝션에 취약한 것으로 보입니다. – Gumbo

+0

코드는 위의 'pathway'테이블에 4 개의 레코드를 삽입합니다. 이 데이터는 4 행을 포함하는 양식에서 나옵니다. 각 행에는 라디오 그룹의 라디오 버튼과 텍스트 영역이 있습니다. 라디오 버튼은 양식 행의 텍스트 영역 옆에 동적 메뉴를 추가합니다. 이 메뉴는 양식의 한 행에만 허용됩니다. 변수 $ action은 'pathway_action_fk'필드를 채우지 만 4 개의 레코드 모두 선택된 값을 갖습니다. 값을 얻기 위해 양식에 메뉴가있는 레코드 만 필요합니다. 그렇지 않으면 필드의 기본값이 '0'입니다. – IlludiumPu36

답변

0

내가

$pathway_allowed = intval($_POST['allowed']); 
$action = mysql_real_escape_string($_POST['actions']); 


if(isset($_POST['submit'])){ 

$inserted_ids = array(); 
$pathway_comment = array(); 

foreach($_POST['comment'] as $comment) { 
    $pathway_comment[]= mysql_real_escape_string($comment); 
} 

for($i=0, $count = count($pathway_comment);$i<$count;$i++) { 
    $comment = $pathway_comment[$i]; 
    $query = sprintf(
     "INSERT INTO pathway (    
      pathway_pk, 
      case_fk, 
      level, 
      pathway_allowed, 
      comment 
     ) VALUES (
      '', 
      '$case_pk', 
      '1', 
      '%s', 
      '$comment')", $pathway_allowed === $i ? 'y' : 'n'); 

$result = mysql_query($query, $connection) or die(mysql_error()); 
if ($result) { 
$inserted_ids[] = mysql_insert_id();  
} 
} 
$query_update = "UPDATE pathway SET pathway_action_fk = '$action' WHERE pathway_pk IN (" . implode(",", $inserted_ids) . ") AND pathway_allowed = 'y'"; 
$result_update = mysql_query($query_update, $connection) or die(mysql_error()); 
if($result_update){ 
$message = "- The pathways for level 1 have been created."; 
} 
} 
를 사용하여이 문제를 해결 한 ..

if (strlen (trim ($comment)) > 0) 
{ 
    //use insert query 
} 

또 다른 방법은 너무 일을 보내는 옵션을 선택할 수 있습니다 사용하기 전에 체크 박스를 제공하는 것입니다 :

이 사용을 해결하려면
0

코드를 통과 한 후 모두 네 개의 텍스트 상자를 열고 사용자임을 발견 4 개의 상자 중 하나에 텍스트를 삽입하십시오.

+0

사용자는 4 개의 텍스트 영역 모두에 주석을 입력 할 수 있으며, 그 중 하나만 허용 된 '경로'가됩니다.이 경로는 옆의 라디오 버튼에 의해 결정됩니다. 텍스트 영역. thye 라디오 버튼을 클릭하면 사용자가 허용 된 경로에 대한 작업을 선택할 수 있도록 작업 메뉴가 표시됩니다. – IlludiumPu36

관련 문제