You are currently browsing the tag archive for the ‘PHP’ tag.

HTML tiene un elemento SELECT que permite el atributo multiple para poder seleccionar más que una opción a la vez. (Las selecciones mútliples se hacen normalmente pulsando la tecla Control mientras se seleccionan las opciones con el ratón.) El atributo multiple no tiene valor. Si no está, entonces el elemento SELECT sólo permite seleccionar una opción. Este artículo explica como puedo obtener múltiples opciones seleccionadas en un programa PHP.

PHP devuelve los datos enviados desde un formulario en la variable “súperglobal” $_REQUEST. La variable $_REQUEST es una unión de las variables súperglobales $_GET, $_POST y $_COOKIE. Por lo tanto, su contenido no depende si hemos recibido los datos via un “GET” o un “POST”. Es decir, es una buena opción en general.

La variable $_REQUEST es un array asociativo, donde los índices son los valores de los atributos id o name de los elementos de entrada en el formulario HTML enviado. A cada índice se asigna el contenido del elemento correspondiente. En un SELECT simple se devolvería la opción seleccionada si hay.

Por ejemplo, consideramos el siguiente SELECT de selección simple (nótese la ausencia del atributo multiple):

<SELECT id="mi_select">
    <OPTION value="hola mundo">Hola mundo</OPTION>
</SELECT>

Si hubiéramos seleccionado la opción “Hola mundo”, entonces, en PHP, la expressión $_REQUEST['mi_select'] tendría el valor 'hola mundo'. (El valor del atributo value del elemento OPTION.)

Sin embargo, si el elemento SELECT tuviera puesto el atributo multiple, entonces sólo obtendríamos el valor de la última opción seleccionado. Para obtener todas las opciones, el valor de $_REQUEST['mi_select'] debería ser un array. Esto conseguimos cambiando el id del elemento SELECT a mi_select[]. (Esto es el mismo nombre más los corchetes [].)

<SELECT id="mi_select[]" multiple>
    <OPTION value="hola mundo">Hola mundo</OPTION>
</SELECT>

Este pequeño truco causa que $_REQUEST['mi_select'] es un array. Ahora puedo hacer un bucle sobre todas las opciones seleccionadas.

foreach ($_REQUEST['mi_select'] as $option_value)
{
    // Haz algo con el valor de la opción seleccionada $option_value
}

En corto: Asigna un nombre terminado en corchetes “[]” a un elemento SELECT cuando tiene puesto el atributo multiple para poder extraer todas las opciones seleccionadas desde PHP.

Referencias

Se puede acceder a una base de datos Firebird/InterBase desde PHP de forma directa. Sin embargo, considera usar una conexión ODBC, ya que hace el programa más independiente de la base de datos usado. Si quieres conectarte directamente desde PHP, primero debes habilitar la extensión php_interbase.dll. De otra forma, PHP te devuelve un error “Call to undefined function”. Puedes establecer la conexión con

// Una base de datos en un PC con dirección IP
$host = "127.0.0.1:C:\\usr\\my database.fdb";

// El administrador de la base de datos
$username='SYSDBA';

// La contraseña pricipal
$password='masterkey';

// El rol no es requerido si ya soy un sysdba
$role = 'sysdba';

// El comando de conexión
$conn = ibase_connect($host,
                      $username,
                      $password,
                      NULL,
                      0,
                      NULL,
                      $role);

Se cierra una conexión con ibase_close.

Referencias

El lenguaje PHP viene con un instalador que se integra bien con el servidor web Apache bajo un entorno Windows. Sin embargo, es posible que el servicio de Apache ya no arranca después de la instalación de PHP. Recibes errores como “PHP Warning: PHP Startup: Unable to load dynamic library” en el fichero error.log del servidor Apache o cuando ejecutas php -i.

Esto es obviamente un error de PHP y podemos esperar que no todas las versiones presentan este problema. Yo lo observé con PHP 5.2. Este problema se debe a que algunos componentes (librerías DLL) tienen incompatibilidades.

Por esto motivo conviene sólo instalar los paquetes que realmente se usan. Esto se puede hacer de dos formas:

  1. Cambiar la instalación de PHP: Ir al panel de control, agregar o quitar programas, y cambiar/quitar la instalación de PHP. En el diálogo del instalador deshabilitar todos los componentes que no se usan.
  2. Editar el fichero php.ini. Buscar la cadena “extenstion=” y comenta todos los modulos que no necesitas.  Procura editar el fichero php.ini en el directorio correcto. En la configuración del servidor Apache httpd.conf encuentras (normalmente al final del fichero) el atributo PHPIniDir que indica la ruta al directorio de PHP.

Después de cambiar la instalación de PHP debes rearrancar el servidor web para hacer efectivo los cambios.

No todos los módulos causan problemas, pero cuando menos quedan mejor. Sin embargo, también arriesgamos correr en el problema contrario. Si PHP muestra un error “Call to undefined function“, entonces no tenemos cargado el módulo necesario que contiene esta función.

Busca esta función en el manual de PHP y comprueba en qué módulo se encuentra. Cuando tienes la página de la función abierta pulsa el enlace “Up” (hacía arriba) para encontrar en la tabla de contenidos la sección de instalación. Puedes habilitar un módulo en las dos formas mencionadas arriba: por el instalador de Windows o descomentando la línea “extenstion=” correspondiente en el fichero php.ini.

Escribe tu dirección de correo electrónico para suscribirte a este blog, y recibir notificaciones de nuevos mensajes por correo.

Únete a otros 52 seguidores

Archivos

noviembre 2018
L M X J V S D
« Ago    
 1234
567891011
12131415161718
19202122232425
2627282930