Tell me more ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

Please help me out

I have add and edit function together in controller. I have the following fields in my ctp file : say for example album name,album cover and influenced by. When I tried to edit either album name or influenced by the image which was already there gets deleted and ask to re upload.I don't want that.

when I edit either album name it should me directed to index page

This is my code in controller :

                               function addalbum($id = null) 
{
    $this->checkMusicianLogin();
    $this->layout = "layout_musician";
    App::import('Model', 'Album');
    $this->Album = new Album();

    $musicians_id=$this->Session->read('user_id');
    if(!empty($id) || !empty($this->data['Album']['id']))
    {
        $this->pageTitle = "Edit Album";
        $this->set("pageTitle","Edit Album");
        $mode = "edit";
        $this->set('title_for_layout', 'Edit Album');
    }
    else
    {
        $this->pageTitle = "Add Album";
        $this->set("pageTitle","Add Album");
        $mode = "add";
        $this->set('title_for_layout', 'Add Album');
    }
    //$id = "";
    //print_r($this->data['Album']['coverimage']);die;
    if($this->data)
    {
        if($mode == "edit" && $this->data['Album']['coverimage']['size']<=0)
        {
            unset($this->data['Album']['coverimage']);
        }
        $this->Album->set($this->data);
        $validate = $this->Album->validates();
        if($validate)
        {
    /* if(!isset($this->data['Album']['coverimage'])||(!empty($this->data['Album']['coverimage']) && $this->data['Album']['coverimage']['size']>0)) */
            if(!empty($this->data['Album']['coverimage']) && $this->data['Album']['coverimage']['size']>0)              
            {
                $album_title=$this->data['Album']['title'];
                $fileOK = $this->uploadFiles('upload/albums/'.$musicians_id.'/'.$album_title,$this->data['Album']['coverimage']);
                $this->data['Album']['coverimage']=$fileOK['urls'][0];
                if(isset($fileOK['errors']['0']))
                {
                    $this->Session->setFlash("<div class='success-message flash notice'>".$fileOK['errors']['0']."</div>");
                }
                $mrClean = new Sanitize();
                $this->data['Album']['title']=$this->data['Album']['title'];
                $this->data['Album']['coverimage']=$this->data['Album']['coverimage'];
                $this->data['Album']['musician']=$musicians_id;


                $this->Album->save($this->data['Album']);
                if($id!='')
                {
                    $lastid=$id;
                }
                else 
                {
                    $lastid=$this->Album->getLastInsertId();
                }

                if($this->Album->getLastInsertId())
                {
                    $this->Session->setFlash("<div class='success-message flash notice'>Album has been Added successfully.</div>");
                }
                else
                {
                    $this->Session->setFlash("<div class='success-message flash notice'>Album has been updated successfully.</div>");
                }
                $this->redirect('albums');
            }
            else
            {   

                $this->Session->setFlash("<div class='success-message flash notice'>Please Select a Cover for your Album..</div>");
            }
        }
    }
    elseif(isset($id) && is_numeric($id))
    {
        $this->data = $this->Album->findById($id);
        if($this->data['Album']['id']==$id)
        {
            $attribute =  $this->Album->find('all',
            array(
            'fields'   =>array('Album.*'),
            'conditions'=> array('Album.id' => trim($id))
                )
            );
        }
       pr($this->data);
        if(is_array($this->data))
        {
            $id = $this->data['Album']['id'];
        }

     }
    $this->set('id',$id);
}   

and this is my ctp file

          <?php
              echo $javascript->link('ckeditor/ckeditor.js');

               ?>
                <script type="text/javascript">

                  </script>
           <div>
                  <div class="header content-header">
        <h2 class="heading"><?php echo ($id != "")?"Edit":"New"; ?> Album</h2>
    </div>
              <div class="section content-body form_content">
    <?php echo $session->flash(); ?>
                   <?php echo $form-                                                                                        >create('Musician',array('action'=>'addalbum','method'=>'POST','onsubmit' => '',"class"=>"longFieldsForm", 'type'=>'file')); ?>
    <ul>
    <li>


        <div class="clear"></div>
    </li>
    <li>
        <div class="label"><span class="star">*</span>Album Name</div>
        <div class="input_box"><?php echo $form->input("Album.title",array("class"=>"string login-input","label"=>false,"div"=>false));?></div>
        <div class="clear"></div>
    </li>


    <li>
        <div class="label"><span class="star">&nbsp;</span>&nbsp;</div>
        <div class="input_box">
        <?php if(!empty($this->data['Album']['coverimage'])){ $image = $this->data['Album']['coverimage']; $path = BASE_URL.$image;}else{$path="";} ?>
        <img src="<?php echo $path; ?>" width="240" height="200" />
        </div>
        <div class="clear"></div>
    </li>
    <li>
        <div class="label"><span class="star">*</span>Album Cover</div>
        <div class="input_box"><?php echo $form->file("Album.coverimage",array("class"=>"string login-input","label"=>false,"div"=>false));?></div>
        <div class="clear"></div>
    </li>

    <li>
        <div class="label"><span class="star">*</span>Album Price(&#163;)</div>
        <div class="input_box"><?php echo $form->input("Album.price",array("class"=>"string login-input","label"=>false,"div"=>false));?></div>
        <div class="clear"></div>
    </li>
    <li>
        <div class="label"><span class="star">*</span>Influenced By<span style="font-size:10px"><br />Which artist (make sure they`re fairly popular!) is your music most similar too? </span></div>
        <div class="input_box"><?php echo $form->input("Album.influencedby",array("class"=>"string login-input","label"=>false,"div"=>false));?></div>
        <div class="clear"></div>
    </li>

    <li>
        <div class="label">&nbsp;</div>
        <div class="input_box">
        <?php 
        echo $form->hidden("Album.id",array("value"=>$id)); 
        echo $form->submit('Save',array('class'=>"button submit-button",'div'=>false))."&nbsp;&nbsp;&nbsp;"; 
        echo $form->button('Cancel',array('type'=>'button','class'=>"button submit-button",'div'=>false,'onclick'=>"location.href='".BASE_URL."/musicians/albums'")); 
        ?>
        </div>
        <div class="clear"></div>
    </li>


    </ul>
        <?php echo $form->end();?>
    </div>

I am not able to do it,please help me out

share|improve this question

Know someone who can answer? Share a link to this question via email, Google+, Twitter, or Facebook.

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.