2016-01-11 4 views
-1

У меня есть раскрывающийся список с 2 вариантами (ЛОКАЛЬНЫЙ и ИМПОРТ). Опция для импорта работает, и я могу получить значение и повторить $ refnumb (IMCK2016-0000001). Но когда я выбираю LOCAL, я получаю то же значение $ refnumbIMCK2016-0000001 вместо LOCCK2016-0000001. Пожалуйста, помогите мне найти, что не так с моим кодом. Благодарю.Получение значения опции выбора

<table id='tblselect' class=normal2 style='font-size:0.6em;'> 
<tr><th align='right'>Shipment Type: </th>  
<!--<tr><td><input type='submit' name='lookup_master' value='COPY' /></td></tr>--> 
<?php $shipmenttype = array("0"=>"Please select...", "LOC"=>"LOCAL", "IM"=>"IMPORT");?> 

<td><b><select name='shiptype' id='shiptype'> 
    <?php foreach($shipmenttype as $keyname=>$ship_type):?> 

     <?php 
      $selected =""; 
        $shiptype = $_POST['shiptype']; 
        if($keyname == $shiptype): $selected =" selected"; endif; 
     ?>      
      <option value="<?php echo $keyname;?>" <?php echo $selected;?>><?php echo $ship_type;?></option> 
      <?php endforeach;?> 
</select></b></td></tr> 
</table> 

<br><br> 

<?php 


$site = dbGetConfig("sitecode"); 
$dbnextID = dbNextID($keyname); 

if($site=="CKI") { 
$site="CK".date("Y"); 
} 
if($site=="PQI") { 
$site="PQ".date("Y"); 
} 
$refnumb = $keyname.$site."-".str_pad($dbnextID,7,0, STR_PAD_LEFT); 
?> 

Ссылка:

<input type='text' name='ref_no1' id='ref_no1' value="<?php echo $refnumb ?>" readonly /> 

Вот функция для dbNextID.

function dbNextID($key) { 
$sql1 = "insert into key_master (keyname) values (:keyname)"; 
$sql2= "update key_master set id = id + 1 where keyname = :keyname"; 
$sql3 = "select id from key_master where keyname = :keyname"; 

$conn = dbConnect(); 
$stmt1 = $conn->prepare($sql1); 
$stmt2 = $conn->prepare($sql2); 
$stmt3 = $conn->prepare($sql3); 

$conn->beginTransaction(); 
$stmt1->execute(array(':keyname' => $key)); 
$stmt2->execute(array(':keyname' => $key)); 
$stmt3->execute(array(':keyname' => $key)); 
$value = $stmt3->fetchColumn(0); 
$conn->commit(); 
$conn=null; 

return $value; 
} 

ответ

0

Ваша переменная $keyname получает набор внутри цикла for. Когда вы печатаете $refnumb, вы ссылаетесь на $keyname вне цикла. Это означает, что вы получите последний элемент в $shipmenttype - это «IM»).

Чтобы исправить это, вам нужно будет отследить выбранное значение.

<table id='tblselect' class=normal2 style='font-size:0.6em;'> 
<tr><th align='right'>Shipment Type: </th>  
<!--<tr><td><input type='submit' name='lookup_master' value='COPY' /></td></tr>--> 
<?php $selectedValue = 0; $shipmenttype = array("0"=>"Please select...", "LOC"=>"LOCAL", "IM"=>"IMPORT");?> 

<td><b><select name='shiptype' id='shiptype'> 
    <?php foreach($shipmenttype as $keyname=>$ship_type):?> 

     <?php 
      $selected =""; 
        $shiptype = $_POST['shiptype']; 
        if($keyname == $shiptype) $selected =" selected";$selectedValue = $keyname; endif; 
     ?>      
      <option value="<?php echo $keyname;?>" <?php echo $selected;?>><?php echo $ship_type;?></option> 
      <?php endforeach;?> 
</select></b></td></tr> 
</table> 

<br><br> 

<?php 


$site = dbGetConfig("sitecode"); 
$dbnextID = dbNextID($selectedValue); 

if($site=="CKI") { 
$site="CK".date("Y"); 
} 
if($site=="PQI") { 
$site="PQ".date("Y"); 
} 
$refnumb = $selectedValue.$site."-".str_pad($dbnextID,7,0, STR_PAD_LEFT); 
?> 
+0

Hi @James, я получаю 0CK2016-0000001. –

+0

не работает. Я получаю 0. –

+0

Если вы получаете 0, то это означает, что ($ keyname == $ shiptype) никогда не будет истинным. – James

Смежные вопросы