Alguien sabe AJAX o javascript

Tema en 'Lo que Queda' comenzado por dark_monk9, 22/Abr/2009.

  1. dark_monk9

    dark_monk9 I've Got Balls Of Steel!!

    Ingreso:
    3/Nov/2006
    Mensajes:
    94
    Buenas a todos!! ando pegado haciendo un par de menu listas y pues no he logrado encontrar en google algun ejemplo que me sirva de guia :confuse: de casualidad alguien conoce alguno de estos dos lenguajes para hacer una pregunta a nivel de condigo?

    Muchas gracias por la atencion prestada!!!
     
    #1
  2. EdR

    EdR Cuevino Milenario

    Ingreso:
    14/Ene/2005
    Mensajes:
    5.122
    Sé algo general. Intentá hacer la pregunta, por ahí alguien que no sepa JS, con previos conocimientos de programación en sí, te pueda ayudar!
     
    #2
  3. djleoli

    djleoli bebiendo retro

    Ingreso:
    4/Sep/2005
    Mensajes:
    937
    Ubicación:
    en fastfileshare
    yo ce medianamente algo de js y php ademas de html por ser los que uso para programar en mi sitios
     
    #3
  4. dark_monk9

    dark_monk9 I've Got Balls Of Steel!!

    Ingreso:
    3/Nov/2006
    Mensajes:
    94
    Bueno la duda es la siguiente:

    Tengo el siguiente inconveniente con un par de menu listas dependientes:

    Tengo un par de menu listas que se llaman "select_numero_obilga" y "select_ficha_catastral" respectivamente. En el "select_numero_obilga" cargo el los datos desde una base de datos y tiene una funcion que se invoca desde el evento onchange como se muestra a continuacion:

    <select name="select_numero_obilga" id="select_numero_obilga" onchange="seleccion_destino(this,this.form.select_ficha_catastral)">
    <option></option>
    <?php
    $base_path = "../../";
    require_once( $base_path . 'configuration.php' );

    $datos= new Jconfig();
    $db_host= $datos->host;
    $db_nombre=$datos->db;
    $db_user=$datos->user;
    $db_pass=$datos->password;

    $conexion= mysql_connect($db_host, $db_user, $db_pass);

    mysql_select_db($db_nombre,$conexion);

    $consulta = "SELECT numero_obligacion FROM obligacion";

    if($resultado= mysql_query($consulta))
    while ($query= mysql_fetch_array($resultado)){
    ?>
    <option value ="<?php echo $query['numero_obligacion']; ?>"><?php echo $query['numero_obligacion']; ?></option>
    <?php }
    mysql_free_result($resultado);
    mysql_close();
    ?>
    </select></td>

    <select name="select_ficha_catastral" id="select_ficha_catastral">
    <option></option>

    </select>
    El menu lista "select_numero_obilga" funciona sin problema, entonces se supone que al elegir una de las opciones que despliega, se debe capturar este dato, para posteriormente realizar una consulta con este dato en la base de datos y mostrar la lista en el menu listas llamado "select_ficha_catastral", para esto tengo el siguiente script:

    <script type="text/javascript">

    var global;

    function selectopcion(texto,valor){
    this.texto = texto
    this.valor = valor
    }

    var Amazonas=new Array()
    var cont=0;
    <?php

    1 $base_path = "../../";
    2 require_once( $base_path . 'configuration.php' );

    3 $datos= new Jconfig();
    4 $db_host= $datos->host;
    5 $db_nombre=$datos->db;
    6 $db_user=$datos->user;
    7 $db_pass=$datos->password;

    8 $conexion= mysql_connect($db_host, $db_user, $db_pass);

    9 mysql_select_db($db_nombre,$conexion);

    10 $consulta = "SELECT id_referencia FROM bien WHERE numero_obligacion_FK='748303'";

    11 if($resultado= mysql_query($consulta))
    12 while ($query= mysql_fetch_array($resultado)){

    13 echo "Amazonas[cont++]= new selectopcion('".$query['id_referencia']."','".$query['id_referencia']."');\n";

    14 }

    15?>

    function seleccion_destino(cual,donde){
    if(cual.selectedIndex != 0){
    donde.length=0
    cual = eval(cual.value)
    for(m=0;m<cual.length;m++){
    var nuevaOpcion = new Option(cual[m].texto);
    donde.options[m] = nuevaOpcion;
    if(cual[m].valor != null){
    donde.options[m].value = cual[m].valor
    }
    else{
    donde.options[m].value = cual[m].texto
    }
    }
    }
    }
    </script>

    En la linea 10, que es la consulta, esta esta correcta, pero en vez de hacer la comparacion con el numero '748303', se debe hacer con el valor que se selecciono en el combobox "select_numero_obilga" , esto como se hace??

    Y el otro problema que tengo es en la linea 13, ya que se supone que deberia al menos funcionar, pero no me esta mostrando nada en el segundo menu lista, tendre algun error??


    Pero luego me dijeron, es mejor por AJAX, pues intente con lo siguiente:


    ----------form_eliminar_bien.php-----------


    //Menu Lista 1

    <select name="select_numero_obilga" id="select_numero_obilga" onchange="cargarContenido()">
    <option></option>
    <?php
    $base_path = "../../";
    require_once( $base_path . 'configuration.php' );

    $datos= new Jconfig();
    $db_host= $datos->host;
    $db_nombre=$datos->db;
    $db_user=$datos->user;
    $db_pass=$datos->password;

    $conexion= mysql_connect($db_host, $db_user, $db_pass);

    mysql_select_db($db_nombre,$conexion);

    $consulta = "SELECT numero_obligacion FROM obligacion";

    if($resultado= mysql_query($consulta))
    while ($query= mysql_fetch_array($resultado)){
    ?>
    <option value ="<?php echo $query['numero_obligacion']; ?>"><?php echo $query['numero_obligacion']; ?></option>
    <?php }
    mysql_free_result($resultado);
    mysql_close();
    ?>


    //Menu lista 2
    <select name="select_ficha_catastral" id="select_ficha_catastral">
    <option></option>

    </select>


    <script language="javascript">
    function nuevoAjax()
    {
    var xmlhttp=false;
    try
    {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
    try
    {
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (E)
    {
    xmlhttp = false;
    }
    }
    if (!xmlhttp && typeof XMLHttpRequest!='undefined')
    {
    xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
    }


    function cargarContenido()
    {
    var t1, contenedor;

    contenedor = document.getElementById('select_ficha_catastral');

    t1 = document.getElementById('select_numero_obilga').va lue;
    ajax=nuevoAjax();
    ajax.open("GET", "previo.php?t1=" + t1.value,true);
    ajax.onreadystatechange=function(){
    if (ajax.readyState==4)
    {
    contenedor.innerHTML = ajax.responseText
    }
    }
    ajax.send(null)
    }
    </script>


    ---------previo.php--------------



    <?php

    $previo=$_GET["select_numero_obilga"];

    $base_path = "../../";
    require_once( $base_path . 'configuration.php' );

    $datos= new Jconfig();
    $db_host= $datos->host;
    $db_nombre=$datos->db;
    $db_user=$datos->user;
    $db_pass=$datos->password;

    $conexion= mysql_connect($db_host, $db_user, $db_pass);

    mysql_select_db($db_nombre,$conexion);
    $consulta = "SELECT id_referencia FROM bien WHERE numero_obligacion_FK='".$previo"'";
    $resultado= mysql_query($consulta);

    while ($query= mysql_fetch_array($resultado)){
    ?>
    <option value ="<?php echo $query['id_referencia']; ?>"><?php echo $query['id_referencia']; ?></option>
    }
    <?

    ?>


    No muestra error alguno, pero tampoco me esta desplegando los respectivos datos en el Menu Lista 2.

    Y por ninguno de los dos lados he podido.

    Muchas gracias por la atencion!! y disculpen lo extenso :P
     
    #4
    Última modificación: 23/Abr/2009
  5. EdR

    EdR Cuevino Milenario

    Ingreso:
    14/Ene/2005
    Mensajes:
    5.122
    A ver, despues de tomarme un tiempito.. (uff :P)

    Donde dice:

    ________________________________________________________________________________________________
    echo "Amazonas[cont++]= new selectopcion('".$query['id_referencia']."','".$query['id_referencia']."');\n";
    ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

    "Opcion"? No será "Option"?
     
    #5
  6. polo

    polo Cuevino Milenario

    Ingreso:
    23/Abr/2007
    Mensajes:
    2.237
    Es una funcion que declaró él, es opcion nomás, sin le tiraría error que no existe la funcion llamada.

    Después reviso.. pasa que toy medio paja.

    Imagino que es algún error al tomar los datos de la DB, o al imprimirlos en pantalla..
     
    #6
  7. EdR

    EdR Cuevino Milenario

    Ingreso:
    14/Ene/2005
    Mensajes:
    5.122
    Ahhh es verdad.
    Te recomiendo que hagas esto: a todas las querys, terminalas con un "or die". Así:

    mysql_query("SELECT * FROM tabla WHERE condicion1=condicion2") or die(mysql_error());

    Si hay algun error, te va a decir el error, y el script se va a parar.
     
    #7
  8. dark_monk9

    dark_monk9 I've Got Balls Of Steel!!

    Ingreso:
    3/Nov/2006
    Mensajes:
    94
    Buenas gracias por las recomendaciones, hice cambio total, y ahora si funciona pero sucede lo siguiente:

    Tengo el siguiente inconveniente con un par de listas menu dependientes, aunque en google aparece mucho con respecto al tema, no he logrado hacer lo que necesito, espero que me puedan colaborar con la siguiente duda:

    Tengo un par de combobox que se llaman "select_numero_obilga" y "select_ficha_catastral" respectivamente. En el "select_numero_obilga" cargo los datos desde una base de datos y tiene una funcion que se invoca desde el evento onchange como se muestra a continuacion:

    Usando AJAX funciona, ahora el problema es que funciona solo en Internet Explorer, en FireFox no, el FF es version 3.0.9. ya mire en google y he cambiado miles de veces la forma en que se hace la conexion pero no he logrado que funcione.

    Y el otro inconveniente es que funciona en Internet Explorer pero la segunda vez que entro, es decir, al entrar a Internet Explorer y poner a correr este ejemplo no me muestra los datos que debe mostrar en el segundo select "select_ficha_catastral", funciona pero la segunda vez ya sea actualizando la pagina o dando de nuevo click en el respectivo link que me lleva a este formulario, que puede estar provocando esto??


    Este es el codigo:

    ----------- Funciones.js------------

    function NuevoAjax(){
    var xmlhttp=true;
    try{
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
    try{
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

    }catch(E){
    xmlhttp = false;
    }
    }

    if(!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
    }
    if(!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
    }

    function Cargar(url){

    var resultado='';

    ajax=NuevoAjax();
    ajax.open("GET", url,true);



    ajax.onreadystatechange=function()
    {
    if(ajax.readyState==1)
    {
    // aqui va el preload si se requiere...";
    }
    else if(ajax.readyState==4)
    {
    if(ajax.status==200)
    {
    resultado=unescape(ajax.responseText);
    }
    else
    {
    resultado="Error:".ajax.status;
    }
    }
    }

    ajax.send(null);
    return resultado;

    }



    function CargarMunicipios(estado,cmb_a_Cargar,seleccionado, divNombre)
    {

    var contenido,total,seleccionar=0,Lista;



    var ComboList = document.getElementById(cmb_a_Cargar);
    var divMunicipios=document.getElementById(divNombre);



    Cargar("municipios.php?edo="+estado);
    divMunicipios.innerHTML=Cargar("municipios.php?edo ="+estado);

    Lista = document.getElementById('lista');



    ComboList.innerHTML="";



    if (Lista!=null)
    {
    Nodo = Lista.firstChild;
    }


    try
    {
    total=Lista.childNodes.length;
    }
    catch(E)
    {
    total=0;
    }


    for (i=1;i<=(total);i++)
    {
    id del Nodo
    ComboList.options=new Option(unescape(Nodo.innerText),Nodo.id);


    if (Nodo.id==seleccionado)
    {
    seleccionar=i-1;
    }

    Nodo=Nodo.nextSibling;
    }


    if (total>0)
    {
    //Borrar el elemento en blanco que se inserta al inicio
    ComboList.options[0]=null;

    //Posicionarse en la opcion seleccionada
    ComboList.options[seleccionar].selected="selected";
    }


    }


    --------------------------------------------

    --------------municipios.php--------------------------

    <?

    $base_path = "../../";
    require_once( $base_path . 'configuration.php' );

    $datos= new Jconfig();
    $db_host= $datos->host;
    $db_nombre=$datos->db;
    $db_user=$datos->user;
    $db_pass=$datos->password;

    $conexion= mysql_connect($db_host, $db_user, $db_pass);

    mysql_select_db($db_nombre,$conexion);

    $previo=$_GET["edo"];

    $consulta = "SELECT id_referencia FROM bien WHERE numero_obligacion_FK='".previo."'";
    $resultado= mysql_query($consulta);

    if ($resultado)
    {
    echo "<ul id='lista'>";
    echo "<li id='0'>[Seleccione una opcion]</li>";
    while($municipio=mysql_fetch_row($resultado))
    {
    echo "<li id='$municipio[1]'>".rawurlencode($municipio[0])."</li>";
    }
    echo "</ul>";
    }
    else
    {
    echo mysql_error();
    }


    ?>
    -----------------------------------------------


    -------------------form_eliminar_bien.php--------------


    <?php // no direct access
    defined('_JEXEC') /*or die('Restricted access')*/; ?>

    <script src='funciones.js'></script>

    <?php

    $num_ob= $_POST['select_numero_obilga'];
    $tip_bien= $_POST['select_bienes'];
    $ficha_cat= $_POST['select_ficha_catastral'];

    if (isset($_POST['Insertar_inmu']))
    {

    if($fm != "" && $direcc_in != "" && $ficha_cat != "")
    {
    include_once("insertar_inmue.php");
    $db1= new insertar_inmueble();
    $db1->conectar();
    $db1->sqlingresar_inmueble($num_ob,$fm,$direcc_in,$fi ch a_cat);

    }
    }
    elseif (isset($_POST['Eliminar_juz'])){

    if($id_juzgad != "" && $nombre_juzgad== "" && $nombre_departam== "" )
    {
    include_once("eliminar_juzga.php");
    $dab= new eliminar_juzgado();
    $dab->conectar();
    $dab->sqleliminar_juzgado($id_juzgad);
    }
    }
    ?>


    <form action="form_eliminar_bien.php" method="post" id="form" name="form">


    <table cellpadding="0" cellspacing="0" border="0" width="100%" class="contentpane">
    <tr>
    <td height="40"><label>Numero Obligacion</label></td>
    <td><select name="select_numero_obilga" id="select_numero_obilga" onchange="CargarMunicipios(this.options[this.selectedIndex].value,'select_ficha_catastral',0,'divResultados') ;">
    <option></option>
    <?php
    $base_path = "../../";
    require_once( $base_path . 'configuration.php' );

    $datos= new Jconfig();
    $db_host= $datos->host;
    $db_nombre=$datos->db;
    $db_user=$datos->user;
    $db_pass=$datos->password;

    $conexion= mysql_connect($db_host, $db_user, $db_pass);

    mysql_select_db($db_nombre,$conexion);

    $consulta = "SELECT numero_obligacion FROM obligacion";

    if($resultado= mysql_query($consulta))
    while ($query= mysql_fetch_array($resultado)){
    ?>
    <option value ="<?php echo $query['numero_obligacion']; ?>"><?php echo $query['numero_obligacion']; ?></option>
    <?php }
    mysql_free_result($resultado);
    mysql_close();
    ?>
    </select></td>
    </tr>


    Este menú lista "select_numero_obilga" funciona sin problema, entonces se supone que al elegir una de las opciones que despliega, se debe tomar este dato, para posteriormente realizar una consulta con este dato a la base de datos y mostrar la lista en la lista menú llamada "select_ficha_catastral"

    <tr>
    <td width="21%" height="40">
    <label id="usernamemsg" for="username"> </label> <label>Tipo Bien</label></td>
    <td width="79%"><label>
    <select name="select_bienes" id="select_bienes">
    <option></option>
    <option value="1">Inmueble</option>
    <option value="2">Vehiculo</option>
    <option value="3">Cuentas Bancarias</option>
    <option value="4">Acciones</option>
    <option value="5">Salario</option>
    </select>
    </select>
    </label></td>
    </tr>
    <tr>
    <td height="40">
    <label></label>
    <label id="pw2msg" for="password2">Ficha Catastral</label></td>
    <td>
    <label>
    <select name="select_ficha_catastral" id="select_ficha_catastral">


    </select>

    </label></td>
    </tr>

    <tr>
    <td height="40">Placa</td>
    <td height="40"><select name="select2">
    </select></td>
    </tr>
    <tr>
    <td height="40">Acciones en </td>
    <td height="40"><label>
    <select name="select3">
    </select>
    </label></td>
    </tr>
    <tr>
    <td height="40">Salario de </td>
    <td height="40"><label>
    <select name="select4">
    </select>
    </label></td>
    </tr>
    <tr>
    <td height="40"><label></label>
    <label></label></td>
    <td height="40"><label></label></td>
    </tr>


    <tr>
    <td colspan="2" height="40"><label>
    <input name="Insertar_inmu" type="submit" id="Insertar_inmu" value="Enviar" />
    <input name="Eliminar_inmu" type="submit" id="Eliminar_inmu" value="Eliminar" />
    </label></td>
    </tr>
    </table>

    <label></label>
    <label></label>


    </form>
    <br><br><br>
    <div style='border:1px dashed; height:20px; width:100%; display:block' id='divResultados'>
    <ul>
    <li id='0'>[Seleccione una opcion]</li>
    </ul>
    </div>

    ---------------------------------------------
    El unico que error que me sale en la consola de errores del FF es:

    " Advertencia: Error al leer el valor para la propiedad 'width'. Declaración rechazada.
    Archivo de origen: http://localhost/abogados/index.php?...apper&Itemid=6 8"
    Línea: 0

    gracias a todos!
     
    #8

Compartinos

Cargando...