Foros del Web » Programando para Internet » PHP »

Alternativa en PHP para "onchange"?

Estas en el tema de Alternativa en PHP para "onchange"? en el foro de PHP en Foros del Web. Buenas, Estoy intentando llevar a la práctica las cosas que voy estudiando con PHP y el caso es que me encuentro en un punto en ...
  #1 (permalink)  
Antiguo 20/10/2008, 10:46
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 meses
Puntos: 8
Alternativa en PHP para "onchange"?

Buenas,

Estoy intentando llevar a la práctica las cosas que voy estudiando con PHP y el caso es que me encuentro en un punto en el que ya no sé como continuar: He creado una página sencilla cuyo único propósito es listarme mediante un SELECT en un formulario las tablas que he creado en una base de datos, y mostrar con un simple 'echo' la que seleccione en cada momento.

Para actualizar la página sin necesidad de incluir un botón (<button> ó <input type="submit">) he incluido el método 'onchange' en el SELECT con su correspondiente 'form.submit()' en javascript.

Pero me gustaría saber si existe alguna manera de realizar esta misma operación sin necesidad de incluir código javascript en la página, sólo XHTML y PHP, por lo que si alguien puede orientarme, se lo agradecería.


No sé si es necesario el código, pero lo incluyo por si acaso (simplificado para que resulte más claro seguirlo):

Código PHP:
<?php

    $dbhost 
'localhost';
    
$dbuser 'usuario';
    
$dbpass 'contraseña';
    
$dbname 'basedatos';

    
$conexion mysql_connect$dbhost$dbuser$dbpass );
    
$selectdb mysql_select_db$dbname$conexion );

    
$no_tabla '(ninguna)';

    
$tabla = ( isset( $_REQUEST['ftabla'] ) ? $_REQUEST['ftabla'] : $no_tabla );

    echo 
"<pre>Tabla seleccionada: {$tabla}</pre>";
?>


<form action="" method="post">
    <table summary="Prueba">
        <tr>
            <th>Tablas</th>
        </tr>
        <tr>
            <td>
                <select name="ftabla" onchange="javascript:form.submit()">
                
                <?php
                    $sel 
= ( $tabla == $no_tabla ' selected="selected"' '' );
                    echo 
"<option{$sel} value=\"{$no_tabla}\">Seleccionar</option>";
                    
                    
$aux mysql_query'show tables from '.$dbname );
                    while ( 
$row mysql_fetch_row$aux ) )
                    {
                        
$sel = ( $tabla == $row[0] ? ' selected="selected"' '' );
                        echo 
"<option{$sel}>{$row[0]}</option>";
                    }
                    
mysql_free_result$aux );
                
?>
                
                </select>
            </td>
        </tr>
    </table>
</form>
Un saludo!
  #2 (permalink)  
Antiguo 20/10/2008, 10:54
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Alternativa en PHP para "onchange"?

Desafortunadamente no es posible.

PHP es un lenguaje de parte del servidor, por lo cual necesita enviarle una peticion al servidor para realizar cualquier accion.
  #3 (permalink)  
Antiguo 20/10/2008, 10:58
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Alternativa en PHP para "onchange"?

puedes hacerlo de la forma tradicional enviando el valor por url y recogerlo con GET, POST o REQUEST o tambien con AJAX.

Suerte,
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #4 (permalink)  
Antiguo 20/10/2008, 11:19
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Alternativa en PHP para "onchange"?

masterojitos:

Si lees el mensaje de Deschamps, especificamente indica que no quiere usar Javascript.
  #5 (permalink)  
Antiguo 20/10/2008, 11:32
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Alternativa en PHP para "onchange"?

Hola GatorV, ok pero si Ronruby ya aclaro que no se puede, para volver a decirselo....
Mas bien le digo las formas de poder hacerlo.

Dios los Bendiga.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #6 (permalink)  
Antiguo 20/10/2008, 12:08
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: Alternativa en PHP para "onchange"?

Muchas gracias a todos por los comentarios.

La idea de utilizar el evento 'onchange' en el SELECT me la planteé porque quería incluir otros SELECT dentro del formulario, de manera que el contenido de cada uno (sus opciones) se actualizaran "automáticamente" nada más seleccionar una opción en este otro. Para explicarme mejor: en el primer SELECT muestro las tablas que creo en mi base de datos de prueba, y en otro contiguo quiero mostrar los campos que configuran la tabla seleccionada.

Si incluyo un botón para confirmar la consulta, el contenido del segundo SELECT no se actualiza hasta que el formulario ha sido procesado, por lo que podría ver unos campos que no se corresponden con la tabla seleccionada. Y de ahí que haya optado por el evento con el javascript (que es el método explicado en la documentación que voy leyendo).

Pero lo cierto es que preferiría poder hacerlo sólo con PHP y Xhtml, sin javascript... aunque según indica Ronruby, no será posible. O al menos no con este enfoque.

En cualquier caso, gracias de nuevo por los comentarios.
  #7 (permalink)  
Antiguo 20/10/2008, 13:07
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Alternativa en PHP para "onchange"?

Pero cual es el problema con enviar el valor por la url, es decir, recargar la pagina y enviar los parametros???
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #8 (permalink)  
Antiguo 20/10/2008, 13:45
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: Alternativa en PHP para "onchange"?

Cita:
Iniciado por masterojitos Ver Mensaje
Pero cual es el problema con enviar el valor por la url, es decir, recargar la pagina y enviar los parametros???
No acabo de comprender lo que quieres preguntar.

¿Hay alguna manera de actualizar de forma automática al seleccionar un valor en un SELECT de formulario que no sea un evento "onchange"? ¿Cómo podría recargar la página entonces? Es que no doy con ninguna alternativa en toda la documentación que llevo leída.

Gracias y un saludo.
  #9 (permalink)  
Antiguo 20/10/2008, 14:14
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Alternativa en PHP para "onchange"?

Claro, el evento onBlur, el cual se dispara despues de haber activado un elemento.

suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #10 (permalink)  
Antiguo 20/10/2008, 14:29
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: Alternativa en PHP para "onchange"?

Pero eso seguiría siendo lo mismo, ¿no? Quiero decir, que seguiría usando eventos que ejecutan scripts en el lado cliente...

Aprovecho para preguntar: ¿Es posible que mi idea de intentar prescindir de javascript y eventos sea equivocada, entonces?
  #11 (permalink)  
Antiguo 20/10/2008, 14:35
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Alternativa en PHP para "onchange"?

amigo te lo expongo asi: COMO REALIZAS UN CODIGO, SI NO PRECIDE DE UN EVENTO.

al producirse un evento, es cuando recien se debe de activar un codigo.

suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #12 (permalink)  
Antiguo 20/10/2008, 18:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Alternativa en PHP para "onchange"?

NOTA: no es posible enviar el formulario (o algún valor) sin eventos, eso es cierto...

el evento normal es usando un formulario normal, con un submit... normal
la manera "automática" es con los eventos del mismo formulario, que con Javascript los puedes interceptar y/o generar ...

ahora, reflexionando un poco... no existe otro modo de hacer esto (sin usar un boton submit) que no sea Javascript o el mismo evento submit

suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 20/10/2008, 19:21
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: Alternativa en PHP para "onchange"?

Cita:
Iniciado por Deschamps Ver Mensaje
Pero eso seguiría siendo lo mismo, ¿no? Quiero decir, que seguiría usando eventos que ejecutan scripts en el lado cliente...

Aprovecho para preguntar: ¿Es posible que mi idea de intentar prescindir de javascript y eventos sea equivocada, entonces?
Cual es tu adversión al JavaScript? si existe pues hay que usarlo, cada lenguaje tiene su propósito específico y para lo que tú estás haciendo está muy bien que uses onChange, por qué se te he metido en la cabeza evitarlo si ya has conseguido mediante JavaScript lo que necesitabas? A qué se debe tu adversión?
  #14 (permalink)  
Antiguo 20/10/2008, 19:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Alternativa en PHP para "onchange"?

Recuerda esto:

PHP se ejecuta en el servidor, procesa datos e imprime el resultado que tu deseas ya sea con echo etc.

Javascript, se ejecuta en el cliente tiene conocimiento de todo el DOM HTML y puede producir y reaccionar a eventos.

Por ende para hacer lo que necesitas es forzoso que uses Javascript (o VBScript..), ya que PHP no tiene conocimiento de nada de los eventos del cliente.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:30.