Arhivele Blog-ului

Inserare rânduri multiple

Pentru generarea mai multor înregistrări dintr-un multiselect se poate folosi varianta următoare ce foloseşte CodeIgniter şi un model CRUD. Exemplul preia mai multe servicii cu tot cu tarife.

Models
class Orders_model extends Crud_model {
    public $table = 'orders';
    public function add($data)
    {
        $this->db->insert($this->table, $data);
        return $this->db->insert_id();
    }
}
class Services_model extends Crud_model {
    public $table = 'services';

    public function get_service()
    {
        $query = $this->db->get($this->table);
        $data =array();
        foreach($query->result_array() as $row){
            $data[$row['service_id']] = $row['service_name'];
        }
        return $data;
    }

    public function get_value($service_details)
    {
        $this->db->select('value');
        $this->db->where('service_id', $service_details);
        $query = $this->db->get($this->table);
        return $query->row()->value;
    }
}
View
<?php echo form_open($form_action); ?>
     <fieldset>
          <?php echo form_multiselect('service[]', $services, $this->input->post('service')); ?>
     </fieldset>
<?php echo form_close(); ?>
Controller
public function add()
    {
        $this->form_validation->set_rules('service', 'Serviciu', 'required');  
        $this->form_validation->set_rules('price', 'Tarif', 'numeric');
        
        if ($this->form_validation->run() == TRUE)
        {
            foreach ($this->input->post('service') as $service_details) {
                $order = array(
                    'client_id'     => $this->input->post('client'),
                    'service_id'    => $service_details,
                    'price'         => $this->services_model->get_value($service_details),
                );

                $this->orders_model->add($order);
            }
            redirect('nume_controller');
        }

        $this->data['form_action'] = 'nume_controller/add/';
        $this->data['services'] = $this->services_model->get_service();
    
        $this->layout->render('nume_controller/add', $this->data);
    }

 

Postat în CodeIgniter

Creare pagina 404 personalizata

Eroarea 404 — 404 Not Found — apare când serverul web nu găseşte resursa cerută. Prezenţa unei pagini personalizate cu afişarea erorii 404 aduce multiple beneficii inclusiv asupra SEO.

Pentru crearea unei pagini personalizate cu eroarea 404 în CodeIgniter se procedeaza astfel:

Se deschide fişierul /application/config/routes.php şi se introduce în linia $route['404_override'] = 'nume_controller_404'; denumirea controller-ului cu eroarea 404.

Se crează controller-ul nume_controller_404:

<?php
class Nume_controller_404 extends CI_Controller
{
	function index()
	{
		$this->output->set_status_header('404');
		$this->load->view('nume_view_404');
	}
}
/* End of file nume_controller_404.php */
?>

În final se crează un view cu mesajul personalizat.

Postat în CodeIgniter

XAMPP | short_open_tag în php.ini

După instalarea XAMPP 1.7.3, site-urile de pe localhost create cu CodeIgniter nu mai prelucrau tag-urile php din view-uri. De asemenea error.log din Apache indica:

[error] [client 127.0.0.1] (20024)The given path is misformatted or contained invalid characters

Problema a fost rezolvată prin activarea short_open_tag în php.ini. Situaţia putea fi evitată dacă se foloseau tag-urile complete <php? echo $var; ?> în locul celor simplificate <?=$var?>.

Postat în CodeIgniter