Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   HTML sin código fuente (generado con PHP) (https://www.clubdelphi.com/foros/showthread.php?t=90826)

cd.rafael 12-09-2016 21:10:24

HTML sin código fuente (generado con PHP)
 
Cordial saludo,

Tengo un inconveniente respecto a la actualización del contenido de un DIV usando jQuery y PHP. Me explico:

Tengo un página PHP así:

Código:

        <?php
                session_start();
        ?>
        <!DOCTYPE html>
        <html>
                <head>
                        <meta charset="UTF-8">
                        <!---->
                        <link href="style.css" rel="stylesheet" type="text/css" media="screen" />
                        <!---->
                        <script src="jquery.min-3.1.0.js"></script>
                        <!---->
                        <script src="jquery-1.10.2.js"></script>
                        <script src="jquery-ui-1.11.14.js"></script>
                        <!---->
                        <script src="opciones.js"></script>
                        <!---->
                </head>
                <body>
                        <div id="listadoDIV">
                                <?php include('listados.php')?>
                        </div>
                </body>
        </html>

El archivo "listados.php" genera una tabla con los datos que necesito:

Código PHP:

        <?php
        
include 'conectaBD.php';
        
$SQL 'select * from tabla';
        echo 
'<table>';
        echo 
'<tr>';
        echo 
'<th class="Buscar" onclick="fBusca(\'campo1\')" >Campo 1</th>';
        echo 
'<th class="Buscar" onclick="fBusca(\'campo2\')" >Campo 2</th>';
        echo 
'<th class="Buscar" onclick="fBusca(\'campo3\')" >Campo 3</th>';
        echo 
'<th>Opciones</th>';
        echo 
'</tr>';
        if(
$Resultados sqlsrv_query($Enlace$SQLnull))
        {
            if(
$Resultados != false)
            {
                while(
$Dato sqlsrv_fetch_array($ResultadosSQLSRV_FETCH_ASSOC))
                {
                    echo 
'<tr>';
                    echo 
'<td>' $Dato['campo1'] . '</td>';
                    echo 
'<td>' $Dato['campo2'] . '</td>';
                    echo 
'<td>' $Dato['campo3'] . '</td>';
                    echo 
'<td> <select id="Opciones" name="' $Dato['campo1'] . '" onchange="fIr()">';
                    echo 
'<option value=""></option>';
                    echo 
'<option value="A">Opción A</option>';
                    echo 
'<option value="B">Opción B</option>';
                    echo 
'<option value="C">Opción C</option>';
                    echo 
'</select></td>';
                    echo 
'</tr>';
                }
            }
            
sqlsrv_free_stmt($Resultados);
        }
        echo 
'</table>';
    
?>

Hasta aquí, ningún problema....

Adicionalmente, yo puedo hacer filtros a dicho listado enviándole parámetros al PHP con el método GET y el listado se filtra correctamente. Para lo anterior uso el siguiente código:

Código:

        function fBusca(Campo)
        {
                Valor = prompt('Ingrese el valor que desea buscar:', '');
                $.get("listados.php", {pCampo: Campo, pValor: Valor}, function(respuesta)
                {
                        alert(respuesta);
                        $("#listadoDIV").html(respuesta);
                })
        }

Todo lo anterior funciona bien, PERO... Supongamos que el filtro te arroje más de 1 resultado (ejemplo 4). Cuando van a ver el código fuente de la página, sólo aparece el HTML del primer registro, no del resto. No le puedo encontrar explicación. Como se pueden dar cuenta, he colocado un SELECT en cada fila generada por la sentencia, cuyo nombre es el valor del Campo 1 (campo llave en la tabla), pero sólo funciona el del primero registro, los OPTION de los otros SELECT, cuando los leo con JS, aparecen el blanco. Para anotar, si escojo otro SELECT que no sea el primero, este tendrá el nombre del primero.

Código:

    function fIr()
    {
        fSeleccionar($("#Opciones").attr("name"));
        setTimeout(function(){ location.href = "../" + $("#Opciones").val() + "/index.php"; }, 100);
    }

La idea es que cada SELECT, al tener como nombre el Campo llave de la Tabla, se puede seleccionar una opción cuyo VALUE es un subdirectorio con cierta información, pero como los valores están en blanco (excepto en el SELECT del primer registro)... No puedo hacer nada.

Agradezco de antemano cualquier colaboración.

Bendiciones.

cd.rafael 13-09-2016 18:56:45

Cordial saludos a todos,

Solucionado el problema.

El tema es sencillo: Como se pueden dar cuenta, tengo un bucle para crear las filas de la tabla con los resultados de la consulta SQL y como último dato de cada fila, se está creando un SELECT. Estos SELECT tienen un nombre único, debido a que les asigno el campo llave de la tabla, PERO... también debo asignarles un ID único a cada SELECT, de lo contrario JS asume que es el primer SELECT que aparece en el documento, así tenga varios.

Lo único que hay que hacer es:

Código PHP:

    echo '<td> <select id="Opciones' $Dato['campo1'] . '" name="' $Dato['campo1'] . '" onchange="fIr()">'

Ahora, pueden colocar como parámetro de la función [fIr()] el campo llave para que les pueda servir de guía sobre cuál SELECT fue escogido.

A todos, muchas gracias y espero que estos pequeños detalles puedan ayudar a otros con su trabajo.

Bendiciones.

Rocio90 22-09-2016 13:00:14

Algo parecido me ocurria gracias


La franja horaria es GMT +2. Ahora son las 14:15:51.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi