Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Asignando una función PHP a un campo HTML

Estas en el tema de Asignando una función PHP a un campo HTML en el foro de Javascript en Foros del Web. Hola, tengo esta funcion... Código PHP: function  Destinos () {      conectar ();      $consultas = mysql_query ( "SELECT id, opcion FROM destinos" );      desconectar ();      // Voy imprimiendo el primer select compuesto por los destinos ...
  #1 (permalink)  
Antiguo 01/01/2014, 21:10
 
Fecha de Ingreso: diciembre-2013
Ubicación: careps
Mensajes: 30
Antigüedad: 10 años, 4 meses
Puntos: 0
Información Asignando una función PHP a un campo HTML

Hola, tengo esta funcion...

Código PHP:
function Destinos()
{
    
conectar();
    
$consultas=mysql_query("SELECT id, opcion FROM destinos");
    
desconectar();

    
// Voy imprimiendo el primer select compuesto por los destinos
    
echo "<select name='destinos' id='destinos' onChange='cargaContenido(this.id)'>";
    echo 
"<option value='0'>Elige</option>";
    while(
$registros=mysql_fetch_row($consultas))
    {
        echo 
"<option value='".$registros[0]."'>".$registros[1]."</option>";
    }
    echo 
"</select>";

Como ven es un select, tipo dependiente; el cual debo registrar en mi DB. Solo que hasta el momento se me ha hecho dificil involucrar el dato en mi form para realizar el envío del mismo.

Espero comentarios...


Gracias!!!
  #2 (permalink)  
Antiguo 02/01/2014, 00:06
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Asignando una función PHP a un campo HTML

Ese poco código que muestras no es suficiente para saber cuál es tu problema, pero supongo que no es solo PHP, así que muevo tu tema a Javascript que es donde podrán orientarte mejor.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 02/01/2014, 01:40
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Asignando una función PHP a un campo HTML

Hola:

A ¿Qué te refieres? con "select dependiente"... supongo que la clave estará en la programación del evento de una nueva selección... aunque por accesibilidad te recomiendo un botón tipo submit aunque lo tengas camuflado dentro de tags "noscript", y que en principio no dependas de javascript

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 02/01/2014, 06:47
 
Fecha de Ingreso: diciembre-2013
Ubicación: careps
Mensajes: 30
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Asignando una función PHP a un campo HTML

Ok, este codigo toma los campos de la tabla y establece una ubicación en la tabla tramites dependiendo de lo que selecciono en la tabla destinos.

PHP:

<?php
// Array que vincula los IDs de los selects declarados en el HTML con el nombre de la tabla donde se encuentra su contenido
$listadoSelects=array(
"destinos"=>"destinos",
"tramites"=>"tramites",
);

function validaSelect($selectDestino)
{
// Se valida que el select enviado via GET exista
global $listadoSelects;
if(isset($listadoSelects[$selectDestino])) return true;
else return false;
}

function validaOpcion($opcionSeleccionada)
{
// Se valida que la opcion seleccionada por el usuario en el select tenga un valor numerico
if(is_numeric($opcionSeleccionada)) return true;
else return false;
}

$selectDestino=$_GET["select"]; $opcionSeleccionada=$_GET["opcion"];

if(validaSelect($selectDestino) && validaOpcion($opcionSeleccionada))
{
$tabla=$listadoSelects[$selectDestino];
include 'dbcon.php';
conectar();
$consulta=mysql_query("SELECT id, opcion FROM $tabla WHERE relacion='$opcionSeleccionada'") or die(mysql_error());
desconectar();

// Comienzo a imprimir el select
echo "<select name='".$selectDestino."' id='".$selectDestino."' onChange='cargaContenido(this.id)'>";
echo "<option value='0'>Elige</option>";
while($registro=mysql_fetch_row($consulta))
{
// Convierto los caracteres conflictivos a sus entidades HTML correspondientes para su correcta visualizacion
$registro[1]=htmlentities($registro[1]);
// Imprimo las opciones del select
echo "<option value='".$registro[0]."'>".$registro[1]."</option>";
}
echo "</select>";
}
?>

Javascript: Opera como arbitro en los eventos de seleccion y no seleccion del objeto select.

function nuevoAjax()
{
/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
lo que se puede copiar tal como esta aqui */
var xmlhttp=false;
try
{
// Creacion del objeto AJAX para navegadores no IE
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
// Creacion del objet AJAX para IE
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(E)
{
if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest();
}
}
return xmlhttp;
}

// Declaro los selects que componen el documento HTML. Su atributo ID debe figurar aqui.
var listadoSelects=new Array();
listadoSelects[0]="destinos";
listadoSelects[1]="tramites";

function buscarEnArray(array, dato)
{
// Retorna el indice de la posicion donde se encuentra el elemento en el array o null si no se encuentra
var x=0;
while(array[x])
{
if(array[x]==dato) return x;
x++;
}
return null;
}

function cargaContenido(idSelectOrigen)
{
// Obtengo la posicion que ocupa el select que debe ser cargado en el array declarado mas arriba
var posicionSelectDestino=buscarEnArray(listadoSelects , idSelectOrigen)+1;
// Obtengo el select que el usuario modifico
var selectOrigen=document.getElementById(idSelectOrige n);
// Obtengo la opcion que el usuario selecciono
var opcionSeleccionada=selectOrigen.options[selectOrigen.selectedIndex].value;
// Si el usuario eligio la opcion "Elige", no voy al servidor y pongo los selects siguientes en estado "Selecciona opcion..."
if(opcionSeleccionada==0)
{
var x=posicionSelectDestino, selectActual=null;
// Busco todos los selects siguientes al que inicio el evento onChange y les cambio el estado y deshabilito
while(listadoSelects[x])
{
selectActual=document.getElementById(listadoSelect s[x]);
selectActual.length=0;

var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Selecciona Opci&oacute;n...";
selectActual.appendChild(nuevaOpcion); selectActual.disabled=true;
x++;
}
}
// Compruebo que el select modificado no sea el ultimo de la cadena
else if(idSelectOrigen!=listadoSelects[listadoSelects.length-1])
{
// Obtengo el elemento del select que debo cargar
var idSelectDestino=listadoSelects[posicionSelectDestino];
var selectDestino=document.getElementById(idSelectDest ino);
// Creo el nuevo objeto AJAX y envio al servidor el ID del select a cargar y la opcion seleccionada del select origen
var ajax=nuevoAjax();
ajax.open("GET", "select_dependientes_procesod.php?select="+idSelec tDestino+"&opcion="+opcionSeleccionada, true);
ajax.onreadystatechange=function()
{
if (ajax.readyState==1)
{
// Mientras carga elimino la opcion "Selecciona Opcion..." y pongo una que dice "Cargando..."
selectDestino.length=0;
var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Cargando...";
selectDestino.appendChild(nuevaOpcion); selectDestino.disabled=true;
}
if (ajax.readyState==4)
{
selectDestino.parentNode.innerHTML=ajax.responseTe xt;
}
}
ajax.send(null);
}
}



Espero comentarios, conectado!
  #5 (permalink)  
Antiguo 02/01/2014, 06:54
 
Fecha de Ingreso: diciembre-2013
Ubicación: careps
Mensajes: 30
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Asignando una función PHP a un campo HTML

Cita:
Iniciado por Triby Ver Mensaje
Ese poco código que muestras no es suficiente para saber cuál es tu problema, pero supongo que no es solo PHP, así que muevo tu tema a Javascript que es donde podrán orientarte mejor.
Triby, la verdad es que es un poco de todo, mira arriba he aportado más Code!


Gracias,

Etiquetas: html, php
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 02:37.