2009-08-12 14 views
7

के साथ डेटाबेस से रिकॉर्ड हटाएं मैं एक तालिका से रिकॉर्ड हटाने के लिए php/mysql और protype.js का उपयोग कर रहा हूं। समस्या यह है कि डेटाबेस में रिकॉर्ड हटाया नहीं गया है।अजाक्स अनुरोध

index.php:

 <a href="javascript: deleteId('<?php echo $studentVo->id?>')">Delete</a></td> 

स्क्रिप्ट है

function deleteId(id) 
    { 
     alert("ID : "+id); 
     new Ajax.Request('delete.php?action=Delete&id='+id,{method:'post'}); 
     $(id).remove(); // because <tr id='".$row[id]."'> :) 

    } 

delete.php

 <?php 
     /* Database connection */ 
     include('configuration.php'); 
     echo "hello,..."; 
     if(isset($_POST['id'])){ 
      $ID = $_POST['id']; 
      $sql = 'DELETE FROM student where id="'.$ID.'"'; 
      mysql_query($sql); 
     } 
     else { echo '0'; } 
    ?> 

alert("ID : "+id); ठीक से काम कर रहा है, लेकिन उसके बाद कोड नहीं है।

+1

+1 हालांकि सरल, अच्छी तरह से समझाया गया। ;-) – Shoban

उत्तर

9

आप GET अनुरोध का उपयोग कर रहे, जे एस से:

{method:'get'} 

और अपने PHP कोड डेटा का उपयोग करता है वह सोचता है कि पोस्ट के रूप में आता:

$ID = $_POST['id']; 

आप दोनों पक्षों पर एक ही विधि का उपयोग करना चाहिए।

(के रूप में आप संशोधित कर रहे हैं/डेटा को हटाने, तो आप शायद पोस्ट का उपयोग करना चाहिए)


एक sidenote रूप में, आप निश्चित रूप से बच चाहिए/संरक्षित/डेटा आप SQL क्वेरी में उपयोग कर रहे हैं की जाँच करें, करने के लिए उदाहरण के लिए, intval का उपयोग करके, SQL इंजेक्शन से बचें, क्योंकि आप एक पूर्णांक के साथ काम कर रहे हैं; यदि आप स्ट्रिंग के साथ काम कर रहे थे तो आप mysql_real_escape_string का उपयोग करेंगे। भी आप:

एक और तरीका है वर्ष mysql एक्सटेंशन का उपयोग कर बंद करो, और mysli या PDO का उपयोग शुरू, आप तैयार बयान (mysqli, pdo) टिप्पणी के बाद


संपादित करें इस्तेमाल कर सकते हैं जिसका अर्थ है करने के लिए किया जाएगा , अब अनुरोध पोस्ट में किया गया है, पैरामीटर पारित करने के तरीके को बदलने की जरूरत है: उन्हें अब यूआरएल में पास नहीं किया जाना चाहिए।

मुझे लगता है कि कुछ इस तरह काम करना चाहिए:

var myAjax = new Ajax.Request(
    'delete.php', 
    { 
    method: 'post', 
    parameters: {action: id} 
    }); 

या आप भी कुछ इस तरह इस्तेमाल कर सकते हैं, पैरामीटर स्ट्रिंग खुद के निर्माण:

var myAjax = new Ajax.Request(
    'delete.php', 
    { 
    method: 'post', 
    parameters: 'action=' + id 
    }); 

(जांची नहीं है, तो आप हो सकता है कुछ चीजों को बदलना है ;-))

अधिक जानकारी के लिए, Ajax.Request और 012 पर एक नज़र डालें:-)

+0

ठीक है प्रिय मैंने किया है {विधि: 'पोस्ट'} और PHP फ़ाइल $ आईडी = $ _POST ['id']; लेकिन –

+0

काम नहीं कर रहे हैं आपको पैरामीटर पारित करने के तरीके को भी बदलने की आवश्यकता है: यदि आप अब POST का उपयोग कर रहे हैं, पैरामीटर यूआरएल में पारित नहीं किया जाना चाहिए, लेकिन 'पैरामीटर' विकल्प का उपयोग करना; अधिक जानकारी के लिए http://www.prototypejs.org/api/ajax/request और http://www.prototypejs.org/api/ajax/options देखें –

+0

ठीक है अब रिकॉर्ड हटाया जा सकता है लेकिन मुझे पृष्ठ को रीफ्रेश करने की आवश्यकता है, परिवर्तन देखने के लिए। तो मैं वर्तमान पृष्ठ से उस रिकॉर्ड को हटाने के लिए कोड कैसे कर सकता हूं? सर्वर प्रतिक्रिया बूल होगी ताकि हम यह निर्धारित कर सकें कि रिकॉर्ड हटा दिया गया है या नहीं। क्या आप इसे विकसित करने में मेरी मदद कर सकते हैं ?? –

0

ऐसा लगता है जैसे आपका AJAX अनुरोध GET का उपयोग कर रहा है लेकिन आपकी हटाई गई स्क्रिप्ट POST के माध्यम से आईडी को पुनर्प्राप्त करने का प्रयास कर रही है। {method:'get'} से {method:'post'} पर सेट करने का प्रयास करें।

+0

ठीक है प्रिय मैंने {method: 'post'} को {method: 'post'} पर किया है। लेकिन कोई परिणाम नहीं है –

0

हटाएं बदलें।इस तरह PHP:

<?php 
     /* Database connection */ 
     include('configuration.php'); 
     echo "hello,..."; 
     if(isset($_GET['id'])){ 
      $ID = $_GET['id']; 
      $sql = 'DELETE FROM student where id="'.$ID.'"'; 
      mysql_query($sql); 
     } 
     else { echo '0'; } 
    ?> 

या वैकल्पिक रूप से आप $ _REQUEST बजाय $ _GET (या पहले उदाहरण में $ _POST) के रूप में यह $ _GET और $ _POST सरणियों समुच्चय के उपयोग ठंड।

+0

ठीक भाई, अब रिकॉर्ड हटाया जा सकता है लेकिन मुझे परिवर्तन देखने के लिए पृष्ठ को रीफ्रेश करने की आवश्यकता है। तो मैं वर्तमान पृष्ठ से उस रिकॉर्ड को हटाने के लिए कोड कैसे कर सकता हूं? सर्वर प्रतिक्रिया बूल होगी ताकि हम यह निर्धारित कर सकें कि रिकॉर्ड हटा दिया गया है या नहीं। क्या आप इसे विकसित करने में मेरी मदद कर सकते हैं ?? –

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