मैं चाहता हूं कि मेरी वेबसाइट से व्यवस्थापक कुछ पृष्ठों के टेक्स्ट को बदलने में सक्षम हों। Contentediteble का उपयोग करना मेरे लिए सही होगा।
समस्या यह है कि मुझे केवल PHP में प्रोग्राम करने का तरीका पता है। मैंने इसे मेरे लिए काम करने की कोशिश करने के लिए घंटों तक इंटरनेट पर खोज की है, लेकिन मैं इसे प्रोग्रामिंग भाषाओं को समझ नहीं पा रहा हूं ताकि इसे काम करने के लिए पर्याप्त डेटा स्टोर किया जा सके।संतोषजनक डेटा को कैसे सहेजना और पुनर्प्राप्त करना
यह मैं कैसे यह काम करना चाहते हैं:
1. व्यवस्थापक एक बटन 'संपादन'
2. div संपादन योग्य हो जाता है पूरी करता है।
3. जब व्यवस्थापक तैयार संपादन कर रहा है, तो वह बटन 'सेव'
पर क्लिक करता है 4. डेटा को फ़ाइल या डेटाबेस में सहेजा जाता है (वास्तव में यह नहीं पता कि सबसे अच्छा विकल्प क्या होगा)।
5. संपादित सामग्री तब दिखाई देती है जब पृष्ठ खोला जाता है।
यह सब मेरे पास है अब के लिए:
<div class='big_wrapper' contenteditable>
PAGE CONTENT
</div>
मुझे पता है कि एक contenteditable div जब व्यवस्थापक हिट 'संपादन' करने के लिए div परिवर्तित करने के साथ हिस्सा बनाने के लिए।
मेरी समस्या यह है कि मुझे वास्तव में कोई जानकारी नहीं है कि संपादित डेटा को कैसे सहेजना है।
मुझे यह भी नहीं पता कि फ़ाइल से डेटा पुनर्प्राप्त करना मुश्किल होगा या नहीं, डेटा को कैसे सहेजा जाता है, इस पर निर्भर करता है। यदि इसे किसी डेटाबेस में सहेजा जाता है तो मुझे इसे पुनर्प्राप्त करने में कोई समस्या नहीं होगी, लेकिन मुझे नहीं पता कि यह संभव है या नहीं और यदि यह सबसे अच्छा विकल्प है।
आपकी मदद के लिए धन्यवाद,
शमूएल
संपादित करें:
@gibberish, बहुत बहुत अपने सुपर त्वरित जवाब के लिए धन्यवाद!
मैंने इसे काम करने की कोशिश की, लेकिन यह अभी तक काम नहीं करता है। मैं यह नहीं समझ सकता कि मैं क्या गलत कर रहा हूं।
over_ons.php:
<div class='big_wrapper' contenteditable>
PAGE CONTENT
</div>
<input type='button' value='Send Data' id='mybutt'>
<script type="text/javascript">
$('#mybutt').click(function(){
var myTxt = $('.big_wrapper').html();
$.ajax({
type: 'post',
url: 'sent_data.php',
data: 'varname=' +myTxt+ '&anothervar=' +moreTxt
});
});
</script>
sent_data.php:
<?php
session_start();
include_once('./main.php');
include($main .'connectie.php');
$tekst=$_POST['myTxt'];
$query="UPDATE paginas SET inhoud='" .$tekst. "' WHERE id='1'";
mysql_query($query);
?>
आपको पुन: धन्यवाद बहुत मदद के लिए
यहाँ मेरी कोड है!
क्या आप मुझे div को संपादन योग्य बनाने में भी मदद कर सकते हैं जब उपयोगकर्ता बटन दबाए?
समाधान:
यह मेरे 2 सप्ताह से अधिक लग गए अंत में everyting काम करने के लिए। मुझे जावास्क्रिप्ट, jQuery और अजाक्स सीखना पड़ा। लेकिन अब यह बेकार ढंग से काम करता है। मैंने फैननेस के लिए कुछ अतिरिक्त भी जोड़ा :)
मैं यह साझा करना चाहता हूं कि अगर कोई ऐसा करना चाहता है तो मैंने यह कैसे किया।
over_ons.php:
//Active page:
$pagina = 'over_ons'; ?>
<input type='hidden' id='pagina' value='<?php echo $pagina; ?>'> <!--Show active page to javascript--><?php
//Active user:
if(isset($_SESSION['correct_ingelogd']) and $_SESSION['functie']=='admin'){
$editor = $_SESSION['gebruikersnaam']; ?>
<input type='hidden' id='editor' value='<?php echo $editor; ?>'> <!--Show active user to javascript--><?php
} ?>
<!--Editable DIV: -->
<div class='big_wrapper' id='editable'>
<?php
//Get eddited page content from the database
$query=mysql_query("SELECT inhoud FROM paginas WHERE naam_pagina='" .$pagina. "'");
while($inhoud_test=mysql_fetch_array($query)){
$inhoud=$inhoud_test[0];
}
//Show content
echo $inhoud;
?>
</div>
<!--Show edit button-->
<?php
if(isset($_SESSION['correct_ingelogd']) and $_SESSION['functie']=='admin')
{?>
<div id='sidenote'>
<input type='button' value='Bewerken' id='sent_data' class='button' />
<div id="feedback" />
</div>
<?php }
इस के रूप में एक बहुत लंबी और जटिल फ़ाइल है, मैं अंग्रेज़ी के लिए मेरी टिप्पणी से ज्यादातर का अनुवाद करने की कोशिश की।
यदि आप किसी ऐसे अनुवाद का अनुवाद करना चाहते हैं जिसका पहले से अनुवाद नहीं किया गया है, तो मूल भाषा डच है।
javascript.js:
//If the system is in edit mode and the user tries to leave the page,
//let the user know it is not so smart to leave yet.
$(window).bind('beforeunload', function(){
var value = $('#sent_data').attr('value'); //change the name of the edit button
if(value == 'Verstuur bewerkingen'){
return 'Are you sure you want to leave the page? All unsaved edits will be lost!';
}
});
//Make content editable
$('#sent_data').click(function(){
var value = $('#sent_data').attr('value'); //change the name of the edit button
if(value == 'Bewerken'){
$('#sent_data').attr('value', 'Verstuur bewerkingen'); //change the name of the edit button
var $div=$('#editable'), isEditable=$div.is('.editable'); //Make div editable
$div.prop('contenteditable',!isEditable).toggleClass('editable')
$('#feedback').html('<p class="opvallend">The content from<BR>this page is now<BR>editable.</p>');
}else if(value == 'Verstuur bewerkingen'){
var pagina = $('#pagina').val();
var editor = $('#editor').val();
var div_inhoud = $("#editable").html();
$.ajax({
type: 'POST',
url: 'sent_data.php',
data: 'tekst=' +div_inhoud+ '&pagina=' +pagina+ '&editor=' +editor,
success: function(data){
Change the div back tot not editable, and change the button's name
$('#sent_data').attr('value', 'Bewerken'); //change the name of the edit button
var $div=$('#editable'), isEditable=$div.is('.editable'); //Make div not editable
$div.prop('contenteditable',!isEditable).toggleClass('editable')
//Tell the user if the edditing was succesfully
$('#feedback').html(data);
setTimeout(function(){
var value = $('#sent_data').attr('value'); //look up the name of the edit button
if(value == 'Bewerken'){ //Only if the button's name is 'bewerken', take away the help text
$('#feedback').text('');
}
}, 5000);
}
}).fail(function() {
//If there was an error, let the user know
$('#feedback').html('<p class="opvallend">There was an error.<BR>Your changes have<BR>not been saved.<BR>Please try again.</p>');
});
}
});
और अंत में,
sent_data.php: JavaScript जैसी
<?php
session_start();
include_once('./main.php');
include($main .'connectie.php');
//Look up witch page has to be edited
$pagina=$_POST['pagina'];
//Get the name of the person who eddited the page
$editor=$_POST['editor'];
//Get content:
$tekst=$_POST['tekst'];
$tekst = mysql_real_escape_string($tekst);
$query="UPDATE paginas SET naam_editer='" .$editor. "', inhoud='" .$tekst. "' WHERE naam_pagina='" .$pagina. "'";
}
if(mysql_query($query)){
echo "<p class='opvallend'>Successfully saves changes.</p>";
}else{
echo "<p class='opvallend'>Saving of changes failed.<BR>
Please try again.</p>";
}
?>
मैं totorials का पालन करते हुए jQuery और AJAX जानने के लिए कोशिश कर रहे हैं मुझे पता चला कि कलंक घटना केवल इनपुट क्षेत्र पर काम करता है रों। और मैं एक इनपुट फ़ील्ड नहीं चाहता, लेकिन एक div। Div से php फ़ाइल में डेटा भेजने का सबसे अच्छा तरीका क्या है? वैसे, आपके उदाहरण में आप एक बटन के साथ एक इनपुट फ़ील्ड संपादन योग्य बनाते हैं। मैंने बटन को मारते समय div को केवल संपादन योग्य होने के लिए बहुत सी चीजों की कोशिश की, लेकिन यह काम नहीं कर सका। मेरे लिए div संपादन योग्य बनाने के लिए PHP का उपयोग करना भी ठीक है, लेकिन हो सकता है कि यह jQuery के साथ आसान हो और शायद आप मुझे समझा सकें कि jQuery में एक बटन के साथ एक div संपादन कैसे करें? –
मुझे अब बटन को मारने के बाद div संपादन योग्य बनाने के साथ हिस्सा मिला, बस PHP के साथ और एक रूप जैसा कि मैं उपयोग करने के लिए उपयोग किया जाता है। एकमात्र चीज अब 'डेटा भेजा गया' बटन काम करना है, और वास्तव में पाठ को div में php फ़ाइल में भेज दिया गया है। (बीटीडब्लू, मैंने jQuery का उपयोग किये बिना PHP फ़ाइल का परीक्षण किया, और यह काम करता है। इसलिए मुझे पता है कि डेटा अभी तक PHP फ़ाइल में नहीं भेजा गया है, अगर यह डेटा डेटाबेस में होगा) –
कृपया, कृपया, कृपया ... ध्यान से ऊपर मेरा पूरा जवाब पढ़ें। ** इसे आज़माएं। ** फिर, उन AJAX लिंकों में से प्रत्येक का प्रयास करें - थोड़ा प्रयोग करें। मैं वादा करता हूं, आप सब कुछ 45 मिनट में किया जाएगा (सीखने/परीक्षण के लिए 30 मिनट की अनुमति देता है) और आप अंतिम परिणाम से बहुत खुश होंगे। आप इस समस्या पर कई घंटों के लिए काम कर रहे हैं - आपको क्या खोना है? – gibberish