You are on page 1of 5

Chào các bạn, Mình đang gặp một khó khăn tỏng việc hiển thị giá trị

mặc định trong một list box


trong Drupal. Không biết trong room bạn nào từng gặp và có solutions thì chia sẻ với mình nha.
Đây là đoạn lấy từ CSDL
Code: Chọn hết
$query8 = db_query("SELECT name FROM {nhom_tinhoc}");
$nhom_tinhoc_load[] = 'Vui lòng chọn nhóm tin học tại
đây......................';
//$nhom_tinhoc_load[] = '-- Chọn nhóm tin học --';
while($data8 = db_fetch_array($query8))
$nhom_tinhoc_load[] = $data8['name'];

Đây là đoạn dùng để hiển thị giá trị từ csdl dưới dạng list box và cần phải có giá trị mặc trước.
Code: Chọn hết
$form['nhom_options'] = array
(
'#type' => 'value',
'#value' => $nhom_tinhoc_load,
'#default_value' => $nhom_tinhoc_load[1],
);

$form['tdhv']['th']['nhom_tinhoc'] = array (
'#type' => 'select_ajax',
'#title'=>'Tên nhóm tin học ',
'#options' => $form['nhom_options']['#value'],

'#callback_path' => 'value_ten_tinhoc',


'#target_control' => 'ten_tinhoc', // Tên target
control, chỉ đc sử dụng cho form field
'#content_type' => 'html', // html hoặc value hoặc
text
);

$form['tdhv']['th']['ten_tinhoc'] = array(
'#title'=>'Tên tin học',
'#type'=>'select',
'#options' => $form['ten_tin_hoc_options']['#value'],

//'#options' => array ( 0 => '-- Hãy chọn nhóm tin


học trước --',), ===> lỗi làm cho field tên tin học bị
required ---> blur màu đỏ
//'#required' => TRUE,
//'#callback_bath' => 'value_ten_tinhoc',
'#weight' => 3,
);
function ten_tin_hoc_options()
{
$val = form_ext_get_client_value(); // Lấy giá trị vừa đc
select từ client
$sqltinhoc = db_query("SELECT * FROM ten_tinhoc WHERE gid
= %d",$val);
while($datatinhoc = db_fetch_object($sqltinhoc))
{
$output .= "<option value=".$datatinhoc->tid.">".
$datatinhoc->tentinhoc."</option>";
}
echo $output;
exit(0);
}

Bổ sung thêm đoạn code lấy cái tên tin học dựa vào giá trị dc set default từ nhóm tin học
Thực ra đây là 1 vấn đề về HTML: Để set 1 item nào làm giá trị default cho listbox, bạn đặt
attribute "Selected" vào tag "Option"

Ví dụ sau, item1 sẽ được chọn làm default


Code: Chọn hết
<select name="ListMonth" id="ListMonth">
<option value="1" selected>item1</option>
<option value="2">item2</option>
<option value="3">item3</option>
</select

Code: Chọn hết


function ten_tin_hoc_options()
{
$val = form_ext_get_client_value(); // Lấy giá trị vừa đc
select từ client
$sqltinhoc = db_query("SELECT * FROM ten_tinhoc WHERE gid
= %d",$val);
while($datatinhoc = db_fetch_object($sqltinhoc))
{
if ($datatinhoc có cái gì đó) {
// thì chọn làm default
$output .= "<option value=".$datatinhoc-
>tid." selected>".$datatinhoc->tentinhoc."</option>";
}
else {
$output .= "<option value=".$datatinhoc-
>tid.">".$datatinhoc->tentinhoc."</option>";
}
}
echo $output;
exit(0);
}

Các bạn cho mình hỏi câu này với. Mình có thẻ select dạng listbox như sau:

<select name="vitri" multiple>

<?php

while($row=mysql_fetch_array($result))

echo '<option value="'.$row['Mavitri'].'">'.$row['Tenvitri'].'</option>';

?>

</select>

Vậy ở trang PHP sau mình muốn lấy giá trị của listbox này thì làm thế nào, mình chỉ lấy được mỗi 1 giá

trị trong khi Listbox thì có thể chọn được cùng lúc nhiều giá trị mà. Giúp mình với!!!

ban sua <select name="vitri" multiple> thanh <select name="vitri[]" multiple>

Than,

Neu ban dat ten cho mot tha`nh phan cua form ma` co' "[]" nua thi` khi form duoc submit, PHP se hieu

do' la` mang, mang na`y chua ca'c gia' tri ma` user da chon. Do do', neu ban echo bien do' thi` no' se

ghi ra "Array". Ban thu du`ng:

print_r($vitri) hoac var_dump($vitri) thi` ban se thay.


Mình đang làm 1 đồ án về quản lý lớp chứng chỉ tin học. Trong đó có 1 chức
năng là khi mình tạo 1 lớp mới, trong form tạo lớp mới sẽ có thêm phần chứng
chỉ. Sẽ có 1 combobox sổ xuống chứa các mã chứng chỉ (hoặc tên) và các mã
này dc lấy từ cơ sở dữ liệu
Khi mình chọn 1 mã chứng chỉ nào đó trong combobox thì các thông tin liên
quan đến chứng chỉ cũng sẽ hiện ra. Vd : tên chứng chỉ, học phí, thời gian...
Chọn chứng chỉ nào thì thông tin sẽ hiện ra tương ứng.

Vấn đề là làm thế nào để lấy giá trị trong combo box chứa mã chứng chỉ để
lấy dữ liệu tương ứng in ra màn hình. Mình chỉ biết cách dùng biến
$_REQUEST để lấy giá trị của 1 combo box tĩnh, còn combo box với giá trị lấy
từ csdl thì hình như ko chạy

VD đơn giản về lấy giá trị của combo box:


Code:
<form id="form1" name="form1" method="post" action="">
<label>
<select name="select">
<option value="123">abc</option>
<option value="456">xyz</option>
</select>
</label>
<input type="submit" name="submit" value="chạy" />
</form>
<? echo $_REQUEST['select']; ?>

Thường thì sẽ thông qua submit 1 form để lấy dc giá trị. Nhưng yêu cầu của
mình là khi chọn 1 chứng chỉ bất kì thì các thông tin liên quan đều hiện ra.

Các bro chỉ giúp mình hướng đi với!


Quote
Thường thì sẽ thông qua submit 1 form để lấy dc giá trị. Nhưng yêu cầu của mình là khi chọn
1 chứng chỉ bất kì thì các thông tin liên quan đều hiện ra.

"yêu cầu" của bạn cao quá và ko rõ ràng.

Để lấy đc thông tin từ db thì bạn phải kết nối dc cs DB


//ket noi DB
<form name = "form1"....>
<select name="select" onChange="getdetail()">
<?php foreach( $arrResult as $value ){?>
<option value="$value.id">$value.name</option>
<?php } ?>
</select>
</form>

submit bang java script


function getdetail(){
document.form1.submit();
}
Thanks!
gợi ý của bạn khá hay

Vấn đề tiếp theo của mình là làm sao để combo box giữ nguyên giá trị khi
mình đã chọn nó. Vd trong combo box có 2 giá trị là abc và xyz. Khi chọn xyz
và submit form thì nó lại trở về abc. Có thể sử dụng thuộc tính "selected"
nhưng như thế này thì sử dụng thế nào nhỉ

Code:
<?php foreach( $arrResult as $value ){?>
<option value="$value.id">$value.name</option>
<?php } ?>

them cai if vao do nua la xong


<?php foreach( $arrResult as $value ){?>
<option value="$value.id" <?php if($value.id==$_POST['khoahocid']) echo
selected=selected;?>>$value.name</option>
<?php } ?>

You might also like