2009-08-06 14 views
17

मेरे PHP पृष्ठ में एक MySQL तालिका डेटाम को हटाने का एक लिंक है। मैं इसे इस तरह से करना चाहता हूं कि जब मैं 'डिलीट' लिंक पर क्लिक करता हूं तो एक पुष्टिकरण बॉक्स प्रकट होना चाहिए और उसे पूछना चाहिए कि "क्या आप निश्चित हैं, आप हटाना चाहते हैं?", दो बटनों के साथ: 'हाँ' और 'नहीं' । जब मैं हाँ पर क्लिक करता हूं, तो मैं MySQL तालिका के डेटा को हटाना चाहता हूं और जब मैं नहीं क्लिक करता, तो कुछ भी नहीं होना चाहिए।PHP: हाँ/कोई पुष्टि संवाद दिखाएँ

+0

आपकी समस्या कहां है? – Bombe

+2

संकेत: शीर्षलेख <बॉडी कृपया –

उत्तर

47
<a href="http://stackoverflow.com" 
    onclick="return confirm('Are you sure?');">My Link</a> 
+1

ऐसा करने का सबसे आसान और प्रभावी तरीका है, आकर्षण की तरह काम करें! धन्यवाद। – Bhimbim

+2

वाईआई-फ्रेमवर्क पर काम कर रहा था, और किसी भी तरह से यह देखकर मुझे यह भी पता चला कि मैं इसे भी वाईआई पर महसूस करता हूं, 'विकल्प' => सरणी ('ऑनक्लिक' => 'रिटर्न पुष्टिकरण ("क्या आप निश्चित हैं?");') ' – Gjordis

8

आप संकेत देने के लिए JavaScript का उपयोग कर सकते हैं:

इस यहाँ मिले - Example

<script> 
function confirmDelete(delUrl) { 
    if (confirm("Are you sure you want to delete")) { 
    document.location = delUrl; 
    } 
} 
</script> 

<a href="javascript:confirmDelete('delete.page?id=1')">Delete</a> 

एक और तरीका है

<a href="delete.page?id=1" onclick="return confirm('Are you sure you want to delete?')">Delete</a> 

चेतावनी: यह जावास्क्रिप्ट बंद नहीं होगा हटाए जाने से रिकॉर्ड अगर वे सिर्फ एन अंतिम url करने के लिए avigate - अपने ब्राउज़र में delete.page?id=1

0

ऐसा करने php.for उदाहरण GTKDialogs अंदर एक संवाद प्रणाली का उपयोग किया जाएगा पीएचपी रास्ता: http://www.kksou.com/php-gtk2/articles/setup-a-dialog-box---Part-2---simple-yes-no-dialog.php javacript तरह से शायद थोड़ा आसान है , लेकिन याद रखें जब जावास्क्रिप्ट बंद हो जाता है, यह काम नहीं करता है (सिवाय इसके कि यदि आप सक्षम होने के लिए जावास्क्रिप्ट को चेक करते हैं और फिर इसे जोड़ें !?) यह एक ऑनक्लिक हैंडलर के साथ हो सकता है जैसे tsvanharen पोस्ट किया गया है, या पृष्ठ के अंदर एक साधारण पाठ संवाद के साथ एक नाराज पॉपअप के बजाय।

<a onClick="$('deletefromtable').show();"></a> 
<div id="deletefromtable" style="display:none;"> 
Do you really want to do this?<br/> 
<a href="deleteit.php">Yes</a>|<a onClick="$('deletefromtable').hide();">No</a> 
</div> 

मैं प्रोटोटाइप (इसलिए $() टैग और शो()/छुपा()) का उपयोग करता हूं। लेकिन आप प्रोटोटाइप के बिना इसे आसानी से काम में बदल सकते हैं:

<a onClick='document.getElementById("deletefromtable").style.display = "block";' href="#">click here to delete</a> 
<div id="deletefromtable" style="display:none;"> 
Do you really want to do this?<br/> 
<a href="deleteit.php">Yes</a>|<a onClick='document.getElementById("deletefromtable").style.display = "none";' href="#">No</a> 
</div> 

फिर, यह जावास्क्रिप्ट के बिना काम नहीं करता है, लेकिन लगभग कोई विकल्प नहीं करता है।

+1

भले ही phpgtk सर्वर पर स्थापित किया गया था (जो बकवास है, क्योंकि इसे एक ग्राफिकल इंटरफ़ेस की आवश्यकता होती है, जो कभी भी लिनक्स चलाने वाले वेब सर्वर पर स्थापित नहीं होती है), यह सर्वर पर उस संवाद बॉक्स को खोल देगा, न कि ब्राउज़र के अंदर और न ही उपयोगकर्ता की मशीन: आप सर्वर से नहीं कर सकते हैं, क्लाइंट –

9

आपको इस तरह की पुष्टि करने के लिए हमेशा एक फॉर्म/पोस्ट बटन का उपयोग करना चाहिए। कभी जावास्क्रिप्ट पर भरोसा न करें। समझने के लिए this पढ़ें!

+3

पर एक जीटीके विंडो खोलें एक पुष्टिकरण संवाद में आपकी कहानी में समस्या से कोई लेना देना नहीं है। एक पुष्टिकरण संवाद एक उपयोगिता सुविधा है जो उपयोगकर्ता को दुर्घटना से हटाए गए बटन पर क्लिक करने से रोकने के लिए है। आपके लिंक में उन्होंने प्रमाणीकरण के लिए जावास्क्रिप्ट का उपयोग किया जो वास्तव में करने के लिए एक बेवकूफ चीज है .. –

0

यदि आप कुछ हटा रहे हैं, तो आपको हमेशा POST का उपयोग करना चाहिए और प्राप्त नहीं करना चाहिए, इसलिए पुष्टि() का उपयोग करना एक बुरा विचार है। मैं आपकी स्थिति में जो करता हूं वह jqModal जैसे मोडल पॉपअप का उपयोग करता है और पॉपअप के अंदर हां/नहीं बटन के साथ एक फॉर्म प्रदर्शित करता है।

+0

'पुष्टि()' आपको POST का उपयोग करने से कैसे रोकता है? –

2

मैं आमतौर पर जो करता हूं वह एक डिलीट पेज बनाता है जो एक अनुरोध फ़ॉर्म दिखाता है यदि अनुरोध विधि "प्राप्त करें" है और विधि "POST" है और उपयोगकर्ता ने "हां" विकल्प चुना है तो डेटा हटा देता है।

फिर, हटाए गए लिंक वाले पृष्ठ में, मैं एक ऑनक्लिक फ़ंक्शन जोड़ता हूं (या केवल jQuery confirm plugin का उपयोग करें) जो पुष्टि पृष्ठ को छोड़कर लिंक पर पोस्ट करने के लिए AJAX का उपयोग करता है।

हटाएँ:

यहाँ छद्म कोड में विचार है।php:

<?php 
if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    if ($_POST['confirm'] == 'Yes') { 
     delete_record($_REQUEST['id']); // From GET or POST variables 
    } 
    redirect($_POST['referer']); 
} 
?> 

<form action="delete.php" method="post"> 
    Are you sure? 
    <input type="submit" name="confirm" value="Yes"> 
    <input type="submit" name="confirm" value="No"> 

    <input type="hidden" name="id" value="<?php echo $_GET['id']; ?>"> 
    <input type="hidden" name="referer" value="<?php echo $_SERVER['HTTP_REFERER']; ?>"> 
</form> 

हटाने के लिंक के साथ पृष्ठ:

<script> 
    function confirmDelete(link) { 
     if (confirm("Are you sure?")) { 
      doAjax(link.href, "POST"); // doAjax needs to send the "confirm" field 
     } 
     return false; 
    } 
</script> 

<a href="delete.php?id=1234" onclick="return confirmDelete(this);">Delete record</a> 
15
<input name="_delete_" type="submit" value="Delete" onclick="return confirm('Are you sure?')"> 
+0

यह अभी तक का सबसे आसान जवाब है, धन्यवाद। –

0
onclick="return confirm('Log Out?')? window.open('?user=logout','_self'): void(0);" 

इस स्क्रिप्ट किया और बाद में मैं मुझे जाना भी इंटरनेट की जाँच tought।
हां यह एक पुराना खतरा है, लेकिन ऐसा लगता है कि ऐसा कोई भी संस्करण नहीं है जिसे मैंने सोचा था कि मैं योगदान दूंगा।
सबसे आसान & किसी भी तत्व या फ़ील्ड के साथ सभी ब्राउज़रों पर सबसे आसान तरीका काम करता है।

आप को चलाने के लिए किसी भी अन्य आदेश के लिए window.open बदल सकते हैं जब पुष्टि TRUE है, void(0) के साथ एक ही है, तो रचना NULL या रद्द कर दिया है।

0

मुझे मिला सबसे अच्छा तरीका यहां है।

एचटीएमएल कोड

<a href="delete.cfm" onclick="return confirm('Are you sure you want to delete?');">Delete</a> 

इसे जोड़ें हेड भाग

$(document).ready(function() { 
    $('a[data-confirm]').click(function(ev) { 
     var href = $(this).attr('href'); 
     if (!$('#dataConfirmModal').length) { 
      $('body').append('<div id="dataConfirmModal" class="modal" role="dialog" aria-labelledby="dataConfirmLabel" aria-hidden="true"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><h3 id="dataConfirmLabel">Please Confirm</h3></div><div class="modal-body"></div><div class="modal-footer"><button class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button><a class="btn btn-primary" id="dataConfirmOK">OK</a></div></div>'); 
     } 
     $('#dataConfirmModal').find('.modal-body').text($(this).attr('data-confirm')); 
     $('#dataConfirmOK').attr('href', href); 
     $('#dataConfirmModal').modal({show:true}); 
     return false; 
    }); 
}); 

आप इस काम करने के लिए jQuery और बूटस्ट्रैप जोड़ना चाहिए करने के लिए।

0

<input type="submit" name="submit" value="submit" onclick="return confirm('Are you sure?');"/> आप बटन पर भी यह कार्रवाई कर सकते हैं!

संबंधित मुद्दे