को sortable सूची बचत मैं एक PHP सरणी jQuery यूआई (sortable) के साथ एक मेज के आदेश को बचाने के लिए कोशिश कर रहा हूँ।jQuery यूआई पीएचपी सरणी
मैं बहुत काफी यह सरल बनाया है, लेकिन यह यह के मूल विचार है। मेरे पास एक सारणी है जिसमें एम्बेडेड एक क्रमबद्ध सूची है। तालिका एक PHP foreach
बहु-आयामी सरणी है कि एक और फ़ाइल (config.php
) में शामिल है को शामिल के माध्यम से उत्पन्न होता है।
config.php
:
<?php
$config = array(
"mno" => array('item 5'),
"abc" => array('item 1'),
"ghi" => array('item 3'),
"pqr" => array('item 6'),
"jkl" => array('item 4'),
"vwx" => array('item 8'),
"def" => array('item 2'),
"stu" => array('item 7'),
);
?>
तालिका (index.html
):
<table cellpadding="2" cellspacing="0" align="center" id="mytable">
<tbody>
<?php
$i = 0;
include 'config.php';
foreach($config AS $name => $value){
$item = $value[0];
echo '
<tr id="'.$name.'-'.$i++.'">
<td>'.$item.'</td>
</tr>';
}
?>
</tbody>
</table>
स्क्रिप्ट (index.html
):
<!-- Add jQuery library -->
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<!-- Add jQuery UI library -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var fixHelper = function(e, ui) {
ui.children().each(function() {
$(this).width($(this).width());
});
return ui;
};
$("#mytable tbody").sortable({
helper: fixHelper,
opacity: 0.5,
scroll: false,
update: function() {
var data = $('#mytable tbody').sortable('serialize');
$.post("edit.php", {'neworder': data});
}
}).disableSelection();
});
</script>
छंटाई ठीक काम करता है, लेकिन मैं कैसे सरणी क्या config.php
में है में neworder मूल्य ($_POST['neworder']
) को बचाने के लिए पता नहीं है।
मुझे लगता है मैं config.php
में नई व्यवस्था को बचाने के लिए file_put_contents
के संयोजन के साथ PHP कार्यों uasort()
(या uksort()
, uksort()
) का उपयोग करना चाहिए।
तो कुछ इस तरह:।
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['neworder'])) {
/*
Here file_put_contents in config.php the new order. So:
$config = array(
"mno" => array('item 5'),
"abc" => array('item 1'),
"ghi" => array('item 3'),
"pqr" => array('item 6'),
"jkl" => array('item 4'),
"vwx" => array('item 8'),
"def" => array('item 2'),
"stu" => array('item 7'),
);
Becomes:
$config = array(
"abc" => array('item 1'),
"def" => array('item 2'),
"ghi" => array('item 3'),
"jkl" => array('item 4'),
"mno" => array('item 5'),
"pqr" => array('item 6'),
"stu" => array('item 7'),
"vwx" => array('item 8'),
);
After this is send by Jquery UI:
neworder:abc[]=1&def[]=6&ghi[]=2&jkl[]=4&mno[]=0&pqr[]=3&stu[]=7&vwx[]=5
I've tried this:
$filename = 'config.php';
$lines = file($filename , FILE_IGNORE_NEW_LINES);
$linenumber = 2;
foreach($_POST['neworder'] AS $name => $val){
$phost = $val[0];
$lines[$linenumber] = ' "'.$name.'" => array(\'' . $phost . '\'),';
$linenumber++;
}
file_put_contents($filename , implode("\n", $lines));
But the '$val' is not send with Jquery only the order.
*/
}
?>
PHP फ़ाइलों में डेटा सहेजना एक बुरा विचार है। आप उन्हें कुछ जेसन या एक्सएमएल प्रारूप में स्टोर कर सकते हैं। यदि आपको इसे बड़े पैमाने पर/अधिक बार करने की आवश्यकता है, तो आपको डेटाबेस का उपयोग करना होगा। – user568109
@GerritHoekstra हाय मैं आपकी मदद करना चाहता हूं और इसे इतना कठिन नहीं सोचना चाहता हूं लेकिन मैं जानना चाहता हूं कि आप इसे इस बुरे तरीके से क्यों कर रहे हैं? क्या मैं इसका कुछ हिस्सा बदल सकता हूं क्योंकि यह बेहतर हो गया है? मेरा मतलब है कि सामान्य रूप से दो या दो से अधिक स्तंभ वाले टेबल हैं जिन्हें जुई के साथ सॉर्ट किया जा सकता है और इसके प्रकार के रूप में या एक बटन पर उपयोगकर्ता क्लिक के रूप में नया ऑर्डर बचा सकता है? आप सहेजने के लिए JSON या XML प्रारूप का उपयोग क्यों नहीं करते? और चुड़ैल में JSON_Config_reader.php नाम की एक फ़ाइल उस JSON फ़ाइल को पढ़ती है और वह सरणी बनाती है? – ncm
@GerritHoekstra - आप जानते हैं कि क्या। आप बस 'अच्छा प्रयास' कहने के लिए एक टिप्पणी दे सकते हैं। – ncm