Herramientas de usuario

Herramientas del sitio


informatica:programacion:php:frameworks:codeigniter_3

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:programacion:php:frameworks:codeigniter_3 [2022/10/19 15:57] tempwininformatica:programacion:php:frameworks:codeigniter_3 [2024/04/02 10:30] (actual) – [Envío e-mail] tempwin
Línea 1: Línea 1:
 ====== CodeIgniter 3 ====== ====== CodeIgniter 3 ======
  
-Framework de PHP.+Framework de [[informatica:programacion:php|PHP]].
  
   * [[https://codeigniter.com|Web oficial]]   * [[https://codeigniter.com|Web oficial]]
Línea 32: Línea 32:
  
   * https://codeigniter.com/userguide3/database/query_builder.html   * https://codeigniter.com/userguide3/database/query_builder.html
 +  * https://stackoverflow.com/questions/2479132/how-can-i-load-model-to-helper
 ===== Configuración ===== ===== Configuración =====
  
Línea 114: Línea 115:
  
 Utilidades para interactuar con la base de datos Utilidades para interactuar con la base de datos
 +
 +==== Actualizar si existe, insertar si no ====
 +
 +<code php>
 +$this->db->replace()
 +</code>
 +
 +Ese método ejecuta una sentencia ''REPLACE'' que básicamente es un ''DELETE'' + ''INSERT'', usando las claves primarios y únicas como factor determinante. Esto ahorra tener que imlementar lógicas complejas con diferentes combinaciones de ''select()'', ''update()'', ''delete()'' e ''insert()''.
 +
 +Ejemplo:
 +
 +<code php>
 +$data = array(
 +        'title' => 'My title',
 +        'name'  => 'My Name',
 +        'date'  => 'My date'
 +);
 +
 +$this->db->replace('table', $data);
 +
 +// Ejecuta: REPLACE INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date')
 +</code>
 +
  
 ==== Múltiples condiciones en WHERE ==== ==== Múltiples condiciones en WHERE ====
Línea 132: Línea 156:
 WHERE name = 'Joe' AND title ='Boss' AND status = 'active' WHERE name = 'Joe' AND title ='Boss' AND status = 'active'
 </code> </code>
 +
 +==== WHERE con varios valores para el mismo campo ====
 +
 +<code php>
 +$colores = ["rojo", "verde", "azul"];
 +$this->db->where_in("color", $array); 
 +</code>
 +
 +Lo que hace es :
 +
 +<code mysql>
 +WHERE color IN ('rojo', 'verde', 'azul')
 +</code>
 +
 +Si lo quisiéramos negar, usaríamos ''where_not_in'':
 +
 +<code php>
 +$colores = ["rojo", "verde", "azul"];
 +$this->db->where_not_in("color", $array); 
 +</code>
 +
 +Lo que hace es :
 +
 +<code mysql>
 +WHERE color NOT IN ('rojo', 'verde', 'azul')
 +</code>
 +===== Utilidades =====
 +
 +==== Última consulta a base de datos ejecutada ====
 +
 +Si queremos ver el contenido (no el resultado) de la última consulta a base de datos que se ha lanzado:
 +
 +<code php>
 +$this->db->last_query();
 +</code>
 +
 +Devolverá algo similar a:
 +
 +<code mysql>
 +SELECT * FROM tabla ...
 +</code>
 +
 +También podríamos activar el "profiler" en algún método del controlador y nos dará mucha más información:
 +
 +<code php>
 +$this->output->enable_profiler(TRUE);
 +</code>
 +
 +  * [[https://www.codeigniter.com/userguide3/database/helpers.html|Otros "helpers" de base de datos]]
 +
 +===== Bibliotecas =====
 +
 +==== Envío e-mail ====
 +
 +La [[https://codeigniter.com/userguide3/libraries/email.html#|clase E-mail]] nos facilita el envío de e-mails desde CodeIgniter.
 +
 +Cargar la biblioteca con los métodos para el envío de e-mails:
 +
 +<code php>
 +$this->load->library('email');
 +</code>
 +
 +Configuración:
 +
 +<code php>
 +// Configuración email para SMTP
 +$config["protocol"] = "smtp";
 +$config["smtp_host"] = "smtp.servidor.com";
 +$config["smtp_user"] = "";
 +$config["smtp_pass"] = "";
 +$config["smtp_port"] = 25;
 +$config["charset"] = "utf-8";
 +$config["mailtype"] = "html";
 +
 +// Aplica configuración:
 +$this->email->initialize($config);
 +</code>
 +
 +  * [[https://codeigniter.com/userguide3/libraries/email.html#setting-email-preferences|Opciones de configuración]]
 +
 +Composición y envío de e-mail:
 +
 +<code php>
 +$this->email->from('yo@correo.com', 'Yo');
 +$this->email->to('destinatario@correo.com');
 +$this->email->bcc('yo@correo.com');
 +$this->email->subject("Corre de prueba");
 +$this->email->message("Hola, mundo!");
 +$this->email->send();
 +</code>
 +
 +Depuración:
 +
 +<code php>
 +// You need to pass FALSE while sending in order for the email data
 +// to not be cleared - if that happens, print_debugger() would have
 +// nothing to output.
 +if (!$this->email->send(FALSE)) {
 +    echo $this->email->print_debugger();
 +}
 +</code>
 +==== Lectura CSV ====
 +
 +Biblioteca personalizada:
 +
 +<code php>
 +<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
 +
 +/**
 + * CSVReader Class
 + *
 + * Allows to retrieve a CSV file content as a two dimensional array.
 + * Optionally, the first text line may contains the column names to
 + * be used to retrieve fields values (default).
 + */
 +class CSVReader
 +{
 +
 +    var $fields; // columns names retrieved after parsing
 +    var $separator = ','; // separator used to explode each line
 +    var $enclosure = '"'; // enclosure used to decorate each field
 +
 +    var $max_row_size = 4096; // maximum row size to be used for decoding
 +
 +    /**
 +     * Parse a file containing CSV formatted data.
 +     *
 +     * @access    public
 +     * @param     string
 +     * @param     boolean
 +     * @return    array
 +     */
 +    function parse_file($p_Filepath, $p_NamedFields = true)
 +    {
 +        $content = false;
 +        $file = fopen($p_Filepath, 'r');
 +
 +        if ($p_NamedFields) {
 +            $this->fields = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure);
 +        }
 +
 +        while ( ($row = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure)) != false ) {
 +            if ( $row[0] != null ) { // skip empty lines
 +                if ( !$content ) {
 +                    $content = array();
 +                }
 +
 +                if ( $p_NamedFields ) {
 +                    $items = array();
 +
 +                    foreach ( $this->fields as $id => $field ) {
 +                        if ( isset($row[$id]) ) {
 +                            $items[$field] = $row[$id];    
 +                        }
 +                    }
 +                    $content[] = $items;
 +                } else {
 +                    $content[] = $row;
 +                }
 +            }
 +        }
 +
 +        fclose($file);
 +        return $content;
 +    }
 +
 +}
 +
 +/* Location: ./application/libraries/CSVReader.php */
 +</code>
 +
 +Para usarla:
 +
 +<code php>
 +$this->load->library('CSVReader');
 +$csvData = $this->csvreader->parse_file('Test.csv'); //path to csv file
 +</code>
 +===== Excel =====
 +
 +  * [[https://blog.trescomatres.com/2017/04/codeigniter-exportar-a-excel-con-libreria-phpexcel/|CodeIgniter – Exportar a excel con librería PHPExcel]]
 +  * [[https://github.com/PHPOffice/PHPExcel/blob/1.8/Examples/01simple-download-xlsx.php|Ejemplo oficial generando un fichero XLSX]]
informatica/programacion/php/frameworks/codeigniter_3.1666187873.txt.gz · Última modificación: por tempwin