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 [2023/03/20 13:11] – [Última consulta a base de datos ejecutada] tempwininformatica:programacion:php:frameworks:codeigniter_3 [2026/06/18 12:33] (actual) – [Registro de errores (logging)] 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 112: Línea 112:
 </code> </code>
  
 +==== Registro de errores (logging) ====
 +
 +Activamos en ''config/config.php'':
 +
 +<code php>
 +$config['log_threshold'] = 3;
 +</code>
 +
 +Niveles de log:
 +
 +  * ''0'' = desactivado (por defecto)
 +  * ''1'' = error (incluye errores PHP)
 +  * ''2'' = debug
 +  * ''3'' = info
 +  * ''4'' = all (todo tipo de mensajes)
 +
 +Si ponemos 3, podremos ver registro de error, debug e info.
 +
 +<WRAP center round tip 60%>
 +La recomendación es que mientras desarrollamos, usemos el nivel ''4'' (veremos todo) y en producción el ''2'' (solamente errores y depuración)
 +</WRAP>
 +
 +
 +Por defecto, los registros se guardan en ''application/logs/'' y suelen tener el nombre ''log-AAAA-MM-DD.php''.
 +
 +Para escribir en el registro, usamos la función ''%%log_message("nivel", "mensaje")%%'':
 +
 +<code php>
 +log_message('info', 'Transacción completada correctamente');
 +
 +log_message('error', 'Agente no encontrado: ' . $data['id']);
 +</code>
 +
 +  * [[https://codeigniter.com/userguide3/general/errors.html|Documentación oficial sobre gestión de errores en CodeIgniter]]
 ===== Query Builder ===== ===== Query Builder =====
  
 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 134: Línea 191:
 </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 ===== ===== Utilidades =====
  
Línea 161: Línea 243:
  
 ==== Envío e-mail ==== ==== 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: Cargar la biblioteca con los métodos para el envío de e-mails:
Línea 171: Línea 255:
  
 <code php> <code php>
-// Configuración email+// Configuración email para SMTP
 $config["protocol"] = "smtp"; $config["protocol"] = "smtp";
 $config["smtp_host"] = "smtp.servidor.com"; $config["smtp_host"] = "smtp.servidor.com";
Línea 185: Línea 269:
  
   * [[https://codeigniter.com/userguide3/libraries/email.html#setting-email-preferences|Opciones de configuración]]   * [[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 ===== ===== Excel =====
  
   * [[https://blog.trescomatres.com/2017/04/codeigniter-exportar-a-excel-con-libreria-phpexcel/|CodeIgniter – Exportar a excel con librería PHPExcel]]   * [[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]]   * [[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.1679314308.txt.gz · Última modificación: por tempwin