Archivos para ‘PHP’

6 junio 2011

Combos dependientes con jQuery y AJAX

por auraham

Esta es mi adaptación del ejemplo de combos dependientes de 9Lessons.

index.php

<!--?php      //libreria de funciones de DB     include_once("datalib.php"); ?-->

<script type="text/javascript" language="javascript" src="js/jquery-1.6.1.js"></script><script type="text/javascript" language="javascript" src="js/custom.js"></script>

 <!--?php             $result = getAreas();         ?-->

 <select id="subareas" name="subareas"> </select>

connection.php

<!--?php     $username = "user";     $userpass = "pass";     $server   = "localhost";     $database = "database";          $link = mysql_connect($server, $username, $userpass);          mysql_select_db($database, $link); ?-->

datalib.php

<!--?php include_once("connection.php"); function getAreas() {     $query =    "SELECT * ".                 "FROM areas ";          $result = mysql_query($query);          return $result;     } function getSubareas($id_area) {     $query =    "SELECT * ".                 "FROM subareas ".                 "WHERE id_area = $id_area";     //cuidado aqui! xss!          $result = mysql_query($query);          return $result;      } ?-->

ajax.php

<!--?php <br ?-->
include_once("datalib.php");

if($_POST['id_area'])
{
    $id = $_POST['id_area'];

    $result = getSubareas($id);

    while($row = mysql_fetch_array($result))
    {
        $id   = $row['id_subarea'];
        $data = $row['nombre'];

        echo ''.$data.'';
    }
}
?>

js/custom.js


$(document).ready(function()
{

    //Combo areas
    $("#areas").change(function(){

       //valores del combo
       var id_area = $(this).val();

       //valores por POST
       var postdata = "id_area=" + id_area;

       $.ajax({

           type:"POST",
           url:"ajax.php",
           data:postdata,
           cache:false,
           success: function(html)
           {
               $("#subareas").html(html);

           }
       });

    });

});

Fuente:
9Lessons

19 noviembre 2010

Errores de compatibilidad y DOCTYPE

por auraham

El día de hoy me encontré con uno de esos errores que toman tiempo en resolverse, pero que al final no era nada difícil.

Pasé un diseño en HTML y CSS a una serie de vistas para usarlas dentro de codeigniter, usando PHP. Todo funcionaba correctamente, es decir, la página creada a partir de PHP se veía igual al diseño preliminar en HTML. Sin embargo, al probarla con IE fue distinto. Al principio pensé que el diseño sólo funcioaba dentro de Firefox, pero no era así, funcionaba perfectamente en ambos exploradores, por lo que la idea de una falta de compatibilidad fue descartada.

Después de revisar el código, la única línea distina era una ,que no pensé que fuera tan relevante, el DOCTYPE.

El XHMTL se deriva de XML, por lo cual hereda el DTD o Document Type Definition, el cual es un conjunto de normas que un determinado tipo de documento debe cumplir.

La versión 1.0 del estándar XHTML permite el uso de tres diferentes DTD. Para indicar cuál se usará se emplea la etiqueta doctype, la cual es la primera línea de la página, incluso antes de la etiqueta html.

Estos son los tres DTD

Strict: (Estricto) Es un estándar muy rígido que requiere una separación total de HTML y CSS.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Transitional: (Transitorio) Es el más recomendable, en especial cuando no se sabe cuál usar.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Frameset: Poco recomendable, ya que utiliza frames dentro de la página.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

DTD List
Javier Eguíluz Pérez

29 julio 2010

Ocultar | Mostrar mensajes de error en PHP

por auraham

Según el manual de funciones de PHP, podemos desactivar todos los mensajes de error de esta manera:


error_reporting(0);

Otros niveles que se pueden usar en la función son:

// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL ^ E_NOTICE);

// Report all PHP errors (see changelog)
error_reporting(E_ALL);

// Report all PHP errors
error_reporting(-1);

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

Manual de PHP

Etiquetas: ,
20 septiembre 2009

Instalar PHP5 en GNU/Linux

por auraham

Antes que nada para este ejemplo tenemos instalado Apache 2.2.13 y MySQL 5.1.38, ambos en /usr/local/

PHP tiene ciertas limitaciones con algunas versiones de Apache, pero aún así se puede instalar. Después de haber descargado el archivo php-5.3.0.tar.gz hay que copiarlo a /usr/local

gzip -d php-5.3.0.tar.gz
tar -xvf php-5.3.0.tar

Creamoes el enlace simbólico

ln -s /usr/local/php-5.3.0 /usr/local/php5

Nos cambiamos al directorio para ejecutar el script configure

cd /usr/local/php5
./configure –with-apxs2=/usr/local/apache2/bin/apxs –with-mysql=/usr/local/mysql

También se puede usar –with-config-file-path=/some_path para el archivo de configuración de PHP. Usamos el parámetro apxs2 en lugar de apxs, por tratarse de apache 2. Después hay que compilar e instalar

make
make install

Luego hay que editar el archivo de configuración de PHP

cd /usr/local/php5/
cp php.ini-production /usr/local/lib/php.ini

También hay que modificar el archivo de configuración de apache

cd /usr/local/apache2/conf

Y agregar la linea (si es que aún no está)

LoadModule php5_module modules/libphp5.so

Note que este módulo se encuentra en

/usr/local/apache2/modules

Luego hay que agregar las extensiones de PHP para que Apache las reconozca, esto se hace modificando el archivo httpd.conf de apache. Se puede hacer de varias maneras:

Primera: para ejecutar .phtml

<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

Segunda(la que uso): Ejecuta .php, .php2, .php3, .php4, .php5, .php6 y .phtml

<FilesMatch “\.ph(p[2-6]?|tml)$”>
SetHandler application/x-httpd-php
</FilesMatch>

Tercera: ejecuta .phps

<FilesMatch “\.phps$”>
SetHandler application/x-httpd-php-source
</FilesMatch>

Ahora puedes ejecutar normalmente apache con

/usr/local/apache2/bin/apachectl start

Manual en inglés

Etiquetas: ,
Seguir

Get every new post delivered to your Inbox.