2013-09-25 5 views
5

मैं कोडइग्निटर का उपयोग कर रहा हूं और मेरे पास एक चेकबॉक्स वाला एक फॉर्म है जो उपयोगकर्ता को उनकी अपलोड की गई तस्वीर को चेक और निकालने की अनुमति देता है।
मेरे नियंत्रक में मैं if(isset($checked) == 1) का उपयोग यह जांचने के लिए करता हूं कि उपयोगकर्ता फोटो को हटाना चाहता है या नहीं।
$photo_to_table खाली सेट करेगा और डीबी अपडेट करने के लिए $this->tank_auth->update_user() पर पास करेगा, और तालिका में खाली होने के लिए फोटो फ़ील्ड सेट करें। अन्यथा, यह वही तस्वीर रहेगा।
कोडिनेटर चेकिंग चेकबॉक्स मान

लेकिन मेरे कोड में, चाहे मैं इसे जांचूं या नहीं, जब मैं UPDATE बटन पर क्लिक करता हूं, तो यह फ़ोटो को हटाता रहता है, मुझे आश्चर्य है कि यह क्यों हो रहा है?

क्या कोई मेरे कोड से गुजर सकता है और सलाह दे सकता है?

नियंत्रक:

$user_id = $this->session->userdata('user_id'); 
$profile = $this->users->get_profile_by_id($user_id); 

if(!empty($_FILES['photo']['name'])) 
{ 
    //image upload process 
} 
else 
{ 
    $checked = $this->input->post('remove'); 
    if(isset($checked) == 1) 
     { 
      $photo_to_table = ''; 
      // here will do remove process to delete file in directory 
     } 
    else 
    { 
     $photo_to_table = $profile->photo; 
    } 
} 

    if($this->form_validation->run()) { // validation ok 
    if(!is_null($data = $this->tank_auth->update_user(
     $this->form_validation->set_value('name'), 
     $this->form_validation->set_value('country'), 
     $this->form_validation->set_value('website'), 
     $photo_to_table 
     ))) 
    { 
     // success 
     $this->session->set_flashdata('msg', 'Profile has been updated'); 
     redirect(current_url()); 
    } 
} 

दृश्य:

<?php echo form_open_multipart($this->uri->uri_string()); ?> 
<table border="0"> 

<?php 
if(!empty($uphoto)){ 
?> 
    <tr> 
     <td> 
      <div> 
       <img src="<?php echo base_url().$userpath.$uphoto; ?>" /> 
      </div> 

      <div> 
       <input id="remove" type="checkbox" name="remove"> 
       <label for="remove">Remove photo</label> 
      </div> 
     </td> 
    </tr> 
<?php 
} 
?> 

धन्यवाद।

उत्तर

6

क्या तुम यहाँ क्या करने की जरूरत इस लाइन को बदलने के लिए है ...

if(isset($checked) == 1){ 

if((int) $checked == 1){ 

के कारण चर $ जाँच हमेशा कि क्या निर्धारित किया जाएगा कि है इसके मान 1 है या नहीं। $checked = $this->input->post('remove'); शून्य डेटा वापस करेगा यदि 'remove' पोस्ट डेटा में सेट नहीं है।

+0

यह पहली बार आता है। इसके साथ सहमत .. –

+0

बहुत बहुत धन्यवाद :) – conmen

3

अपने चेकबॉक्स उचित मूल्य लिखें: -

<input id="remove" type="checkbox" name="remove"> 

कुछ मूल्य लिखें तो यह जाँच: -

जैसे के लिए

:

<input id="remove" type="checkbox" name="remove" value="1"> 

PHP में: -

if($checked == 1) { 
     // do whatever u want 
    } 
+0

मैं जोड़े गए इनपुट मूल्य प्राप्त 'value =" 1 "' लेकिन यह अभी भी काम नहीं करता है। – conmen

1

कोशिश करें:

<input id="remove" type="checkbox" name="remove" value="1"> 
+0

मैंने 'value =" 1 "' जोड़ा, अभी भी वही है। – conmen

1

हटाने isset

इसकी वजह से अपने सीआई नियंत्रक में डिफ़ॉल्ट रूप से आप उपयोग कर

$checked = $this->input->post('remove');

है कि क्या कोई मान है या नहीं अपने चर अब मौजूद ..