के साथ गतिशील ड्रॉप डाउन मैं एक ड्रॉप डाउन मेनू विकसित कर रहा हूं जो समूह के नामों के लिए HTML ऑप्टग्रुप का उपयोग करता है जो कर्मचारी का हिस्सा हैं।PHP: ऑप्टग्रुप
mysql> SELECT employees.emp_id,employees.empname,employees.grp_id,groups.groupname FROM employees left join groups on employees.grp_id = groups.grp_id order by groupname asc; +--------+------------+--------+-----------+ | emp_id | empname | grp_id | groupname | +--------+------------+--------+-----------+ | 20 | Employee 2 | 13 | Group 1 | | 19 | Employee 1 | 13 | Group 1 | | 21 | Employee 3 | 14 | Group 2 | +--------+------------+--------+-----------+ 3 rows in set (0.00 sec)
केवल मुद्दा है, मैं पता लगाना कैसे optgroup सही ढंग से काम करने के लिए सबसे मुश्किल समय हो रही है: यहाँ MySQL क्वेरी और उत्पादन होता है। मैंने अनगिनत बार कोशिश की है, और यह वास्तव में मुझे निराश करना शुरू कर रहा है। निम्नलिखित काफी मैं उत्पादन (उदाहरण) बनना चाहते है:
<select name="dropdownmenu">
<optgroup label="Group 1">
<option name="20">Employee 2</option>
<option name="19">Employee 1</option>
</optgroup>
<optgroup label="Group 2">
<option name="21">Employee 3</option>
</optgroup>
</select>
असल में, optgroup "GROUPNAME" होने की जरूरत है, विकल्प "नाम", "emp_id" होना चाहिए और कार्रवाई "विकल्प" (ड्रॉप डाउन आइटम) "empname" है।
मुझे आशा है कि यह ऐसा कुछ है जो किया जा सकता है, लेकिन वास्तव में सुनिश्चित नहीं है। यहाँ समारोह मेरे पास है, लेकिन यह वास्तव में अच्छी तरह से काम नहीं करता है: के साथ (
function getDynGrpList() {
global $db;
// $query = "SELECT * FROM employees ORDER BY grp_id desc;";
$query = "SELECT employees.emp_id,employees.empname,employees.grp_id,groups.groupname FROM employees left join groups on employees.grp_id = groups.grp_id order by groupname asc;";
$employees = $db->GetAll($query);
$groups = array();
while ($qa = $employees->GetRows()) {
$groups[$qa['groupname']][$qa['emp_id']] = $qa['empname'];
}
var_export($groups);
foreach($groups as $label => $opt): ?>
<optgroup label="<?php echo $label; ?>">
<?php foreach ($opt as $id => $name): ?>
<option value="<?php echo $id; ?>"><?php echo $name; ?></option>
<?php endforeach; ?>
</optgroup>
<?php endforeach;
}
अंतिम समाधान: 3:15 पूर्वाह्न सीएसटी (2/27) के रूप में
function getDynGrpList() {
global $db;
// $query = "SELECT * FROM employees ORDER BY grp_id desc;";
$query = "SELECT employees.emp_id,employees.empname,employees.grp_id,groups.groupname FROM employees left join groups on employees.grp_id = groups.grp_id order by groupname asc;";
$employees = $db->GetAll($query);
$groups = array();
while ($qa = $employees->GetRows()) {
$groups[$qa['groupname']][$qa['grp_id']] = $qa['empname'];
}
foreach ($groups as $label => $opt) { ?>
<optgroup label="<?php echo $label; ?>">
<?php }
foreach ($groups[$label] as $id => $name) { ?>
<option value="<?php echo $id; ?>"><?php echo $name; ?></option>
<?php } ?>
</optgroup>
<?php }
getDynGrpList समारोह फेलिक्स Kling की मदद)
function getDynGrpList() {
global $db;
$query = "SELECT employees.emp_id,employees.empname,employees.grp_id,groups.groupname FROM employees left join groups on employees.grp_id = groups.grp_id order by groupname asc;";
$employees = $db->GetAll($query);
$groups = array();
foreach ($employees as $employee) {
$groups[$employee['groupname']][$employee['emp_id']] = $employee['empname'];
}
foreach($groups as $label => $opt): ?>
<optgroup label="<?php echo $label; ?>">
<?php foreach ($opt as $id => $name): ?>
<option value="<?php echo $id; ?>"><?php echo $name; ?></option>
<?php endforeach; ?>
</optgroup>
<?php endforeach;
}
मैं वास्तव में हूँ कोड के साथ एक खाली ड्रॉप नीचे हो रही है। आपका कोड और मेरा कोड वास्तव में कोई ड्रॉप डाउन मेनू नहीं दिखाता है। कोड में कहीं, एक मुद्दा है, बस यह नहीं पता कि कहां है। – drewrockshard
@drewrockshard: लूप से पहले 'var_export ($ समूह)' बनाएं और देखें कि सरणी में डेटा है और इसकी संरचना क्या है। –
मैंने अपनी प्रारंभिक पोस्ट अपडेट की। Var_export ($ समूह) जोड़ने के बाद, उस पर कोई आउटपुट नहीं था। शायद अगर आप मेरे पूरे समारोह को देख सकते हैं, तो शायद आप कुछ गलत खोज सकते हैं। – drewrockshard