Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Uso del evento onchange en php

Estas en el tema de Uso del evento onchange en php en el foro de PHP en Foros del Web. Hola a todos, desde hace días estoy intentando hacer uso del evento "onchange" en php ya que necesito que al seleccionar en un "select list" ...
  #1 (permalink)  
Antiguo 04/10/2013, 02:17
 
Fecha de Ingreso: octubre-2013
Ubicación: Madrid
Mensajes: 7
Antigüedad: 10 años, 6 meses
Puntos: 0
Uso del evento onchange en php

Hola a todos, desde hace días estoy intentando hacer uso del evento "onchange" en php ya que necesito que al seleccionar en un "select list" un campo me cargue inmediatamente la información que este relacionada con el mismo, he buscado y todos los ejemplos todos estan con javascript y no se si es posible hacerlo solo con PHP, espero su pronta respuesta GRACIAS
  #2 (permalink)  
Antiguo 04/10/2013, 02:32
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Uso del evento onchange en php

PHP se ejecuta en el servidor y el evento onclick es propio del navegador, ¿notas la diferencia?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 04/10/2013, 16:05
 
Fecha de Ingreso: diciembre-2011
Mensajes: 21
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Uso del evento onchange en php

Hola,

para lo que quieres hacer tienes que usar el evento del onchange del select, pero a la hora de que ocurra tendrias que enviar un form, pero no es una forma optima ni muy recomendable, es mas no se si funcionara correctamente, lo que te sugiero es que uses ajax para que de manera asincrona puedas ir a traer informacion a la bd y mostrarla cada vez que cambies tu select.
por Ejemplo con Jquery:

function valor() {
var valorSelect= $("#MiSelect").val();
//y aca llamar una pagina con la consulta
$("#divData").load("datos.php?valor="+valorSelect) ;

}

<select onchangue='valor()' id="MiSelect">
<option value='1'>Valor 1</option>
<option value='2'>Valor 2</option>
</select>

<div id="divData"> aqui se cargara tu info</div>

bueno seria una idea un poco mas optima a lo que quieres hacer


saludos
  #4 (permalink)  
Antiguo 04/10/2013, 16:28
 
Fecha de Ingreso: junio-2010
Ubicación: Charlotte, NC
Mensajes: 611
Antigüedad: 13 años, 10 meses
Puntos: 95
Respuesta: Uso del evento onchange en php

No puedes utilizar el evento onchange en PHP, porque PHP no tiene ni idea de que dicho evento existe.

PHP es un lenguaje que se ejecuta en el servidor, el evento onchange sucede en el navegador.

Para cuando el evento onchange ocurre, PHP ya termino su ejecucion.

Lo que tienes que hacer es utilizar AJAX.

El evento onchange lo capturas con Javascript, haces una llamada AJAX a otro script PHP y modificas la informacion en tu pagina dependiendo de la respuesta de la ejecucion del otro PHP.

Hay muchisimos tutoriales en la web al respecto, de preferencia utiliza jQuery y no utilices el atributo "onchange" del HTML ya que es una pesima practica de programacion.
  #5 (permalink)  
Antiguo 04/10/2013, 17:59
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Uso del evento onchange en php

Cita:
y no utilices el atributo "onchange" del HTML ya que es una pesima practica de programacion.
¿Podrías explicar los motivos?
  #6 (permalink)  
Antiguo 04/10/2013, 18:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Uso del evento onchange en php

Cita:
Iniciado por ocp001a Ver Mensaje
¿Podrías explicar los motivos?
Creo que se refiere a hardcodear en el HTML directamente, p.e.
Código HTML:
Ver original
  1. <input onchange="foo();">

Lo que se recomienda es que directamente desde Javascript, escuches el evento, es lo recomendado ahora.

Saludos.
  #7 (permalink)  
Antiguo 04/10/2013, 18:42
 
Fecha de Ingreso: junio-2010
Ubicación: Charlotte, NC
Mensajes: 611
Antigüedad: 13 años, 10 meses
Puntos: 95
Respuesta: Uso del evento onchange en php

Cita:
Iniciado por ocp001a Ver Mensaje
¿Podrías explicar los motivos?
Porque al utilizar el atributo onchange de algunas etiquetas de HTML estás programando intrusivamente en Javascript.

Tambien estás mezclando la logica (en este caso Javascript), con la presentación (HTML/CSS).

Tambien estás mezclando dos lenguajes (JavaScript y HTML).

De esta manera tambien puedes diseñar una aplicacion tolerante a fallas porque los scripts que manipulan o interactuan con el DOM de alguna manera no generan errores al momento de la presentacion. Si un elemento no puede ser representando apropiadamente, simplemente no se muestra.

idealmente todos tus scripts deberian estar escritos en archivos .js y ser referenciados en HTML con la etiqueta

<script src="miScript.js"></script>

De esta manera previenes repeticion de codigo, puedes tomar ventaja del cache de los navegadores, hacer uso de redes de distribucion de contenido (CDN) o minificar y concatenar tus archivos .js.

Tambien al utilizar los atributos en-linea para funciones javascript haces el proceso de "testing" mas dificil, ya que es complicado escribir tests funcionales utilizando frameworks como Jasmine, por ejemplo.

No solamente es cuestion de moda, tiene un monton de ventajas.

Cuando veo cosas como:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $miVariable = "hola mundo";
  4. echo "<td><a href=\"#\" onclick=\"alert(\"".$miVariable."\")\"> haz click aqui </a> </td>"
  5.  
  6. ?>

ughh me dan ganas de vomitar.

Última edición por AlanChavez; 04/10/2013 a las 18:50
  #8 (permalink)  
Antiguo 05/10/2013, 10:49
Avatar de Lautaro_eb  
Fecha de Ingreso: mayo-2010
Ubicación: Bariloche, Argentina
Mensajes: 284
Antigüedad: 13 años, 11 meses
Puntos: 24
Respuesta: Uso del evento onchange en php

Ajax, es la forma mas simple de lograr esto
__________________
Mi emprendimiento: Software BRC
Youtube: Tutoriales de programación y electrónica.
  #9 (permalink)  
Antiguo 07/10/2013, 01:24
 
Fecha de Ingreso: octubre-2013
Ubicación: Madrid
Mensajes: 7
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Uso del evento onchange en php

Gracias a todos por sus respuestas lo probare con las sugerencias que me han dado todos y ya les comentare de que forma me funciono mejor (si es que me funciona xD)...
  #10 (permalink)  
Antiguo 01/08/2014, 05:12
 
Fecha de Ingreso: octubre-2013
Ubicación: Madrid
Mensajes: 7
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Uso del evento onchange en php

por cierto no cerre este tema, les cuento solucione con PHP pero no es la forma mas correcta ahora este tipo de eventos los manejo con javascript, de igual manera les dejo la solución con PHP pero repito que no es la solución adecuada.


Código PHP:
<select name="busqueda"  onChange="this.form.submit()" >
  <option >Seleccione una opci&oacute;n</option>
 
 
<?php if(isset($_POST["busqueda"])&& $_POST['busqueda']==1){  ?>
  <option value="1" selected="selected">Autor</option>>
<?php }  else {?>
   <option value="1">Autor</option>
<?php }?>

<?php if(isset($_POST["busqueda"])&& $_POST['busqueda']==2){  ?>
  <option value="2" selected="selected">Editorial</option>
<?php }  else {?>
    <option value="2">Editorial</option>
<?php }?>

<?php if(isset($_POST["busqueda"])&& $_POST['busqueda']==3){  ?>
  <option value="3" selected="selected">Ámbito</option>
<?php }  else {?>
  <option value="3">Ámbito</option>
<?php }?>
<?php 
if(isset($_POST["busqueda"])&& $_POST['busqueda']==4){  ?>
  <option value="4" selected="selected">Título</option>
<?php }  else {?>
  <option value="4">Título</option>
<?php }?>
<?php 
if(isset($_POST["busqueda"])&& $_POST['busqueda']==5){  ?>
  <option value="5" selected="selected">Todos</option>>
<?php }  else {?>
   <option value="5">Todos</option>
<?php }?>


</select>
Saludos a todos y gracias por sus respuestas.

Etiquetas: list, onchange, select
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 09:15.