PHP/ Selector en lista desplegable

Resuelto
tsig00 Mensajes publicados 20 Fecha de registro   Estado Miembro Última intervención   -  
 tsig00 -
Hola,

actualmente estoy en prácticas IG, estoy trabajando en una interfaz que muestra mi consulta en una tabla (eso ya lo he conseguido), con la desventaja de que he aprendido a hacer una página PHP (que ejecuta el script) y una página HTML (que muestra el resultado). Desafortunadamente, estamos trabajando con una base de datos SQL y TBS (TinyButStrong) no funciona... (hay que descargar un driver o no sé qué más y no me siento con ganas de hacerlo en la empresa en la que estoy... así que no lo tocaré^^)

Entonces, mi primera pregunta es: ¿se puede hacer una visualización dinámica, es decir, hacer aparecer mis variables provenientes de mis consultas SQL en mi página PHP en otra página HTML? (sin TBS)... Si es así, ¿cómo?

Si no, he puesto todo en la misma página y tengo mi tabla.

Mi segundo objetivo (este es prioritario) es insertar un menú desplegable en la barra de título de mi tabla, para mostrar un selector que me permita seleccionar los campos a mostrar en mi tabla (he estado trabajando en esto durante dos días y tengo dificultades).

He hecho un menú desplegable, pero ingreso los campos en duro... ¿cómo puedo hacer que las diferentes opciones de este menú correspondan a los diferentes campos elegidos por el selector... y cómo puedo mostrar las opciones del menú desplegable como variables?

Pensé en hacer una consulta para cada título de columna... pero no logro integrar el PHP en la tabla... ¿debo hacerlo dentro de un while para obtener:
"select distinct 'campos correspondientes' from 'tabla correspondiente'"?

Recorro los foros pero no soy lo suficientemente experto para descifrar toda la información que no se corresponde necesariamente con mi proyecto.

Por lo tanto, cualquier ayuda será bienvenida.

Cordialmente.

15 respuestas

Mihawk Mensajes publicados 4753 Estado Colaborador 846
 
Hola,

Entonces, primero hay que entender que TBS es un motor de plantillas basado en las variables globales de PHP.

Traducción: mientras que generalmente se insertan variables PHP en HTML a través del método PHP "echo", con TBS tienes que hacer que tu variable PHP sea global y luego la llamas con TBS...

No sé si estoy claro.
En resumen:

<div><?php echo($miNombre);?></div>


Se convertirá en:

<?php global $gMiNombre = $miNombre; ?> <div>[onload;var.gMiNombre]</div>

--
Mihawk
"La rigurosidad hace la calidad"
1
tsig00 Mensajes publicados 20 Fecha de registro   Estado Miembro Última intervención  
 
ok ... confieso que todavía está bastante borroso para mí^^
de lo contrario, probé tu código... no funciona en mi caso... pero logré poner el resultado de mi tabla en una variable $_GLOBALS, aquí está donde me encuentro:

//conexión a la base de datos
//prueba de conexión
//consulta
//ejecución de la consulta
//define cada casilla de la tabla como variable

//prueba de función var global
function global()
{
$GLOBALS['table']=$GLOBALS['var1']+$GLOBALS['var2'];
}

//muestra la tabla en bruto
echo '<pre>';
print_r($table);
echo '</pre>';

//cierra la conexión

Así que logro poner todo en la variable $table en una tabla, pero no consigo recuperarla en otra página.... no sé si debo ponerla en una superglobal de sesiones o cookies... pensé que $GLOBALS era precisamente una superglobal :) para recuperar mis variables en todas mis páginas.. pero no sé cómo hacerlo.

Por otra parte, he logrado combinar todo en una sola página, pero aún no puedo insertar un selector en mi lista desplegable... me explico:

Así que tengo que hacer una tabla que se actualice aproximadamente cada 10 segundos y que corresponda al resultado de una consulta. Se me pide hacer una lista desplegable (que tiene la ventaja de ocupar poco espacio), en la que se pueden seleccionar varias opciones (selector) para clasificarlas por tipo.. las opciones corresponderán a los campos que responden a la consulta principal.

Así que estoy logrando poner una lista desplegable y mostrar las opciones en función de la consulta:
ej: 'select distinct nom_oiseau from T_foret' (ya estoy contento con eso^^)
pero tengo muchas dificultades para añadir un selector... así que si alguien tiene una idea, lo probaré por él^^ ... alguien me dijo que todo era posible en php^^
0
Mihawk Mensajes publicados 4753 Estado Colaborador 846
 
¡Hola!

Entonces, efectivamente para pasar tu tabla entre páginas, las globales no servirán para nada. Las globales son accesibles a todos los scripts en uso; una vez que el código PHP se ejecuta, desaparecen. Por lo tanto, hay que usar las sesiones, como bien has dicho.

<?php session_start(); $_SESSION['miTabla'] = $GLOBALS['tabla']; ?>

En cuanto a las listas desplegables, ¡estás en el buen camino! Supongamos que tu consulta del select distinct funciona y te devuelve una tabla con los nombres de los pájaros. Tendrás entonces en tu código algo así:

<select> <?php for ($i=0 ; $i<count($misPajaros) ; $i++){ echo ('<option value="'.$misPajaros[$i]['nombrePajaro'].'">'.$misPajaros[$i]['nombrePajaro'].'</option>'); } ?> </select>

--
Mihawk
"La rigurosidad hace la calidad"
0
tsig00 Mensajes publicados 20 Fecha de registro   Estado Miembro Última intervención  
 
ok, bien para la sesión de inicio tengo dificultades... la marco en la parte superior de la página donde inicializo la variable, ¿es correcto? Después de varios intentos, me di cuenta de que mi variable
$GLOBALS['table']=$GLOBALS[var1]+$GLOBALS[var2];
estaba lejos de ser infalible... así que puse el resultado de mi consulta en una variable
$table[$i]= array ( var1, var2,..);


Entonces, en la parte superior de esta página puse:
 <?php session_start(); $_SESSION['monTableau'] = $table; ?> 


Pero no sé cómo recuperar la variable en otra página... no soy muy diestro en esto^^
¿Debo hacer también un session_start en la página donde deseo recuperar esta variable? ¿Cómo puedo recuperarla?
 echo $monTableau;
?
En fin, no es muy glorioso^^

Para el tema de la lista desplegable hice otra cosa:

 <td class="contour_cellule">Aves <select name=liste size=1 style=font-size: 8 pt> <option selected value=''>Aves</option> <?php while(odbc_fetch_row($requete)) { $Ooiseau=odbc_result($requete,1); ?> <option value=<?php $Ooiseau; ?>><?php echo $Ooiseau; ?></option> <?php } ?></td> 


Pero, ¿cómo añadir un selector a estas opciones?... aquí empiezo a preocuparme^^ he intentado varias soluciones sin mucho éxito... aquí estoy, pero es un bricolaje:
 <code> <td class="contour_cellule">Aves <select name=liste size=1 style=font-size: 8 pt> <option selected value=''>Aves</option> <?php while(odbc_fetch_row($requete)) { $Ooiseau=odbc_result($requete,1); ?> <option value=<?php $Ooiseau; ?><input type="checkbox" name="$Ooiseau" id="$Ooiseau" /> <label for="$Ooiseau">><?php echo $Ooiseau; ?></label></option> <?php } ?></td> 
</code>

...Pero no hace falta que les explique que este código no funciona... ¡vaya!
0
Mihawk Mensajes publicados 4753 Estado Colaborador 846
 
Bueno, entonces.

Ya está el problema de las sesiones.
Si defines:

<?php session_start(); $_SESSION['miTabla'] = $tabla; ?> 

Entonces en todas las otras páginas podrás hacer:

<?php session_start(); $miTablaRecuperada = $_SESSION['miTabla']; ?> 

En cuanto a tus listas desplegables, me gustaría que explicases sobre lo que llamas un "selector"?!

--
Mihawk
"La rigurosidad hace la calidad"
0
tsig00 Mensajes publicados 20 Fecha de registro   Estado Miembro Última intervención  
 
¡Super! Perdona por el silencio, estoy de fin de semana el viernes al mediodía (sí, hay quienes tienen suerte^^)...

Así que probé en casa y funciona muy bien, solo tardé un poco en entender que hay que inicializar la variable de sesión en el inicio... por otro lado, hay que ejecutar la página que edita la variable antes de poder usarla (voy a ver si con un include puede funcionar).

En cuanto al selector: son casillas de verificación... por ejemplo, podemos elegir entre los diferentes pájaros disponibles en nuestra lista desplegable y hay una casilla delante de cada uno de ellos, marcamos las casillas correspondientes a los pájaros que deseamos ver en la tabla: así que me gustaría poder usar el principio de la lista desplegable pero poder seleccionar múltiples opciones de esta lista... y tener la misma ergonomía que la lista (que no ocupa mucho espacio cuando no la estamos utilizando).
0
tsig00 Mensajes publicados 20 Fecha de registro   Estado Miembro Última intervención  
 
...el fin de semana fue breve... pero intenso^^

Tengo otro problema...(dos de hecho:mrgreen: :)
Hice mi tabla con lista desplegable y consigo mostrar la lista dinámica en función de mi consulta, mi problema es mostrar mi tabla según la elección de mi lista desplegable... dos problemas me bloquean el camino...

1) cuando inicializo mi lista desplegable, me muestra por defecto las últimas opciones del 'select distinct nom_oiseau from oiseau' aunque tengo por defecto 'oiseau' con value=''...:roll:

 $execution_requete="select distinct nom_oiseau from T_Oiseaux"; ... <select name=liste size=1 style=font-size: 8 pt> <option selected value=''>Oiseau</option> <?php while(odbc_fetch_row($execution_requete)) { $OOiseau=odbc_result($rexecution_requete,1); ?> <option value=echo $OOiseau;><?php echo $OOiseau; ?></option> <?php } ?></td> 


En la lista desplegable tengo bien todos los pájaros disponibles (del select distinct), he marcado por defecto 'Oiseau', pero la tabla me muestra solo las filas de mi último pájaro en la lista... pienso que está tomando el último value del while... pero no es eso lo que quiero... si alguien tiene una solución que me proponga sería genial^^.

2) Mi segundo problema es que cuando cambio los valores de mi lista debería regenerar la tabla al cambiar el valor... pero eso creo que debería encontrarlo en el foro...
0
tsig00
 
Bueno, no es muy alentador el número de respuestas:cry:... pero he avanzado bastante^^

Así que he logrado implementar un script de actualización en JavaScript, y he dejado mis valores de la lista desplegable en duro.
Pero me enfrento a otro problema, aquí está donde estoy por ahora (... agárrense:)) :

-una página HTML:

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <meta name="generator" content="PSPad editor, www.pspad.com"> <link href="../style2.css" rel="stylesheet" type="text/css"> <title></title> <script type="text/javascript"> function MAJ(str) { var ajax; ajax=new XMLHttpRequest(); ajax.onreadystatechange=function() { if (ajax.readyState==4 && ajax.status==200) { document.getElementById("txtHint").innerHTML=ajax.responseText; } } ajax.open("GET","oiseau.php?q="+str,true); ajax.send(); } </script> </head> <body> <form action=""> <div id="txtHint">Los pájaros se mostrarán aquí...</div> <table class="contour"> <tr class="titre"> <td class="contour_cellule">edad</td> <td class="contour_cellule">comida</td> <td class="contour_cellule"><select name="categorie onchange="MAJ(this.value);"> <option value="">Selecciona una categoría:</option> <option value="gros">Grande</option> <option value="moyen">Mediano</option> <option value="petit">Pequeño</option> </select></td> <td class="contour_cellule">Color</td> <td class="contour_cellule">Nbre_Huevo</td> <td class="contour_cellule">Nombre_Pájaro</td> </tr> </table> </div> </form> </body> </html> 


y una página PHP:

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <meta name="generator" content="PSPad editor, www.pspad.com"> <link href="../style2.css" rel="stylesheet" type="text/css"> <title></title> <?php $q=$_GET["q"]; //conexión a la base de datos $conn=odbc_connect('','',''); //prueba de conexión if ($conn==false) {die("error de conexión");} //consulta según la elección de la lista desplegable $sql="SELECT * FROM T_Oiseau WHERE taille = '$q') "; //ejecución de la consulta $rs=odbc_exec($conn,$sql); $i = 0 ; ?> <table class="contour"> <!-- Fila de títulos de la tabla --> <?php //bucle a la BD para recuperar todas las filas while(odbc_fetch_row($rs)) { $comida=odbc_result($rs,"repas"); $tamano=odbc_result($rs,"taille"); $color=odbc_result($rs,"couleur"); $Nbre_Huevo=odbc_result($rs,"Nbre_Oeuf"); $Nombre_Pájaro=odbc_result($rs,"Nom_Oiseau"); ?> <tr> <td class="contour_cellule"><?php echo $comida; ?></td> <td class="contour_cellule"><?php echo $tamano; ?></td> <td class="contour_cellule"><?php echo $color; ?></td> <td class="contour_cellule"><?php echo $Nbre_Huevo; ?></td> <td class="contour_cellule"><?php echo $Nombre_Pájaro; ?></td> </tr> <?php } ?> </table> <?php //para liberar los resultados en memoria durante la ejecución del script //para evitar usar demasiada memoria durante la ejecución del script odbc_free_result($rs); //cierra conexión odbc_close($conn); ?> </body> </html> 


así que mi código para mi lista desplegable estaba bien pero no podía actualizar la tabla, cosa que me permite hacer mi script...

..Pero (porque hay un pero!):

1) tengo un problema de diseño, de hecho no puedo poner mi fila de título (html) en la misma tabla que el resultado de mi consulta (php)... He logrado separar mi código en dos páginas y me gustaría que eso se mantuviera así... ¿alguien tiene una solución para este problema?

2) además, me gustaría que por defecto la tabla me muestre todos los resultados de la consulta sin tener en cuenta la lista desplegable (es decir, todos los pájaros, sin considerar el tamaño...), porque por ahora tengo que elegir un tamaño de pájaro en mi tabla para que aparezca un resultado. Estoy pensando en algo como:

 <td class="contour_cellule"><select name="categorie onchange="MAJ(this.value);"> <option value="gros;moyen;petit">Selecciona una categoría:</option> <option value="gros">Grande</option> <option value="moyen">Mediano</option> <option value="petit">Pequeño</option> </select></td> 


..pero que funcione^^, a saber que a largo plazo mi lista desplegable será el resultado de una consulta y no estará más codificada en duro... bueno, me detengo aquí... por ahora^^
0
vordano Mensajes publicados 1981 Estado Miembro 316
 
Hola,

veo que usas odbc, para la base de datos usas Access o qué :x ?

personalmente me gustaría algo así:
 <script type="text/javascript"> function MAJ(str) { var ajax; ajax=new XMLHttpRequest(); ajax.onreadystatechange=function() { if (ajax.readyState==4 && ajax.status==200) { ve aquí -> http://www.siteduzero.com/tutoriel-3-36169-xajax-applications-ajax-faciles-avec-php-et-xajax.html necesitas recuperar tu lista de aves con tus li, de hecho, tu función php devolverá una cadena preformateada. document.getElementById("liste_oiseau").innerHTML=ajax.responseText; } } ajax.open("GET","oiseau.php?q="+str,true); ajax.send(); } </script> <!--escribe tu código html para la lista de tamaños con php para recuperar los tamaños, luego haces un evento onChange (o onClick no sé) que llame a la función MAJ <?php $res=odbc_exec($con,"SELECT * FROM T_Oiseau"); echo "<ul>"; echo "<div id=\"liste_oiseaux\">"; while($oiseau=odbc_fetch_array($res){//no estoy seguro de que odbc_fetch_array exista echo "<li>".$oiseau['taille']."</li>"; echo "<li>".$oiseau['repas']."</li>"; //y otros... } echo "</div>"; echo "</ul>"; ?> 

¡diga no a las leyes liberticidas (hadopi, sopa, pipa, arjel, acta, ipred) y a la censura digital!!!
0
tsig00 Mensajes publicados 20 Fecha de registro   Estado Miembro Última intervención  
 
Hola, y gracias por tu respuesta...

- Sí, utilizo ODBC, trabajo con SQL a través de un ERP llamado Excalibur... He retomado en el marco de mis prácticas el trabajo ya realizado y no conozco otros métodos en mi caso, pero estoy abierto a todas las propuestas :).

- He leído el tema del sitio del cero sobre Xajax... interesante, pero mi script JS funciona, no veo el interés de volver a trabajarlo en Xajax... o no he percibido realmente el interés de este enlace...

- En cuanto a:
"" $oiseau=odbc_fetch_array($res)"", funciona muy bien, sí, pero ponerlo en las etiquetas <li> tampoco tiene interés para mí ya que deseo llenar la tabla definida por mi página HTML...

Así que no he entendido el alcance de tus argumentos o quizás he formulado mal mi problema:

1) Mi código funciona, solo tengo un problema de diseño. Lo he modificado para que aparezca en la misma tabla repitiendo el <tr> título de la tabla en la página PHP, pero cuando lo ejecuto, el resultado me da 2 tablas: es decir, cuando abro mi página HTML tengo el título y mi tabla (vacía) con mi lista desplegable en una celda de la tabla, pero cuando elijo un valor de mi lista desplegable, aparece la tabla de la página PHP (todo bien como debe ser) pero justo debajo el título de la tabla <tr> de la página HTML permanece... estoy pensando en un script para hacerla desaparecer onchange o onclick como dices... les muestro mi página PHP que da este resultado:

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <meta name="generator" content="PSPad editor, www.pspad.com"> <link href="../style2.css" rel="stylesheet" type="text/css"> <title></title> <?php $q=$_GET["q"]; //conexión a la base de datos $conn=odbc_connect('','',''); //prueba de conexión if ($conn==false) {die("fallo en la conexión");} //consulta en función de la elección de la lista desplegable $sql="SELECT * FROM T_Oiseau WHERE taille = '$q') "; //ejecución de la consulta $rs=odbc_exec($conn,$sql); $i = 0 ; ?> <!-- Línea de títulos de la tabla --> <table class="contour"> <tr class="titre"> <td class="contour_cellule">edad</td> <td class="contour_cellule">comida</td> <td class="contour_cellule"><select name="categoria onchange="MAJ(this.value);"> <option value="">Selecciona una categoría:</option> <option value="gros">Gordo</option> <option value="moyen">Medio</option> <option value="petit">Pequeño</option> </select></td> <td class="contour_cellule">Color</td> <td class="contour_cellule">Nbre_Huevo</td> <td class="contour_cellule">Nombre_Pajaro</td> </tr> <?php //bucle a la BD para recuperar todas las filas while(odbc_fetch_row($rs)) { $repas=odbc_result($rs,"repas"); $taille=odbc_result($rs,"taille"); $couleur=odbc_result($rs,"couleur"); $Nbre_Oeuf=odbc_result($rs,"Nbre_Oeuf"); $Nom_Oiseau=odbc_result($rs,"Nom_Oiseau"); ?> <tr> <td class="contour_cellule"><?php echo $repas; ?></td> <td class="contour_cellule"><?php echo $taille; ?></td> <td class="contour_cellule"><?php echo $couleur; ?></td> <td class="contour_cellule"><?php echo $Nbre_Oeuf; ?></td> <td class="contour_cellule"><?php echo $Nom_Oiseau; ?></td> </tr> <?php } ?> </table> <?php //para liberar los resultados en memoria durante la ejecución del script //para evitar utilizar demasiada memoria durante la ejecución del script odbc_free_result($rs); //cierra conexión odbc_close($conn); ?> </body> </html> 


La página PHP se añade a la página HTML... lo que da un resultado no muy bonito...

2) En cuanto a la página de inicio con una tabla ya llena, pensé en añadir una página que contenga la tabla llena y que llame a la página HTML al cambiar los valores de la lista desplegable... pero estoy abierto a hacerlo en mis dos páginas. Si quedan áreas poco claras, estoy a su disposición.
0
vordano Mensajes publicados 1981 Estado Miembro 316
 
En realidad, el interés que percibo en el xAjax (según el tutorial) es poder utilizar un método muy específico, y por lo tanto, devolver un valor (por ejemplo, tu lista de pájaros para una lista desplegable o algo más)

Después de haber releído, y si entiendo bien, quieres hacer algo así:
 <table class="contour"> //título de columna <tr class="titre"> <td class="contour_cellule">edad</td> <td class="contour_cellule">comida</td> <td class="contour_cellule"><select name="categoria onchange="MAJ(this.value);"> <option value="">Selecciona una categoría:</option> <option value="grande">Grande</option> <option value="medio">Medio</option> <option value="pequeño">Pequeño</option> </select></td> <td class="contour_cellule">Color</td> <td class="contour_cellule">Nbre_Huevo</td> <td class="contour_cellule">Nombre_Pájaro</td> </tr> <?php //bucle a la BD para recuperar todas las líneas while(odbc_fetch_row($rs))//contenido de las columnas. generación de los pájaros de todos los tamaños al cargar la página, y selección de los pájaros según el tamaño elegido en la lista desplegable { $comida=odbc_result($rs,"comida"); $tamaño=odbc_result($rs,"tamaño"); $color=odbc_result($rs,"color"); $Nbre_Huevo=odbc_result($rs,"Nbre_Huevo"); $Nombre_Pájaro=odbc_result($rs,"Nombre_Pájaro"); ?> <tr> <td class="contour_cellule"><?php echo $comida; ?></td> <td class="contour_cellule"><?php echo $tamaño; ?></td> <td class="contour_cellule"><?php echo $color; ?></td> <td class="contour_cellule"><?php echo $Nbre_Huevo; ?></td> <td class="contour_cellule"><?php echo $Nombre_Pájaro; ?></td> </tr> <?php } ?> </table> 
0
tsig00 Mensajes publicados 20 Fecha de registro   Estado Miembro Última intervención  
 
Sí, es exactamente lo que quiero^^
En lo que respecta a la lista desplegable dinámica, logré integrarla, pero tengo un problema con el valor que no es reconocido por mi función JS:maj(). Además, aparece en la página HTML... volveré a leer el tutorial de xajax más a fondo :).

Este problema es secundario por ahora, me estoy concentrando en la visualización de la tabla: así que has entendido bien el objetivo de mi maniobra, mi problema es que cuando selecciono un valor de la lista desplegable, mi consulta se ejecuta haciendo aparecer la tabla con título y contenido php, pero la tabla con solo el título (sin contenido de la página html) permanece al final de la página: así que me encuentro con 2 tablas.

Otro problema es que cuando actualizo mi página html, la tabla está vacía, me gustaría que por defecto la página se actualizara con la tabla completa...
En mi:
 $sql="SELECT * FROM T_Oiseau WHERE taille = '$q') "; 

también me gustaría que la variable $q pudiera tomar todos los valores, todos los tamaños (es decir, mostrar toda la tabla). Para agregar a la lista desplegable la posibilidad de volver a mostrar toda la tabla sin tener que refrescar la página... he intentado con:
$q = *;
$q="grande;mediano;pequeño" ;
$q = %;
nada funciona por el momento...
0
vordano Mensajes publicados 1981 Estado Miembro 316
 
Para tu consulta:
$q="%";
$sql="SELECT * FROM T_Oiseau WHERE taille like '$q') ";

en primer lugar, debes mostrar la lista de los pájaros sin distinción de tamaño con tu PHP.
tu lista de pájaros (tu tabla de pájaros) estará rodeada de un div con, por ejemplo, id lista_oiseau
luego tienes un evento en tu lista desplegable que cambiará el HTML ubicado entre el div lista_oiseau. Generas el nuevo HTML de la manera que quieras con xmlhttprequest (personalmente, es una llamada a una función PHP que me devuelve texto, pero no sé si se hace en get...)

¿he acertado?
0
tsig00 Mensajes publicados 20 Fecha de registro   Estado Miembro Última intervención  
 
gracias, estoy haciendo mis pequeñas pruebas, puede que tarde un poco... pero estoy en ello :) en cuanto al '%', no funciona... seguramente es un error de sintaxis... publicaré de nuevo seguramente después de la comida^^
0
tsig00 Mensajes publicados 20 Fecha de registro   Estado Miembro Última intervención  
 
Ok, bueno, no muy famoso pero he salvado la situación^^
para:
$sql="SELECT * FROM T_Oiseau WHERE taille like '$q') ";
pues bien, eso no funciona y me cuesta explicarlo...(quizás el ERP que bloquea) en fin, he inicializado una variable que concatena las diferentes posibilidades (no es glorioso pero funciona por ahora)

Para lo más difícil... pues no he conseguido meter todo en mi tabla con mis dos páginas... he reservado bien el método xmlhttprequest que me parece una buena idea, pero todavía tengo demasiadas lagunas por ahora, tendré que tragarme muchos más tutoriales antes de ver la luz...
pero buena noticia (sí, ¡al menos eso!^^) al poner todo en una tabla he conseguido lo que quería, es decir, una única y sola tabla, que muestra lo que le pido... dado que se trata de una intranet no hay demasiado riesgo a nivel de seguridad... decepcionado por no haber hecho todo esto de forma más limpia, pero tengo un poco de dolor de cabeza ahora^^

Sigue quedando el problema de la primera página que muestra una tabla vacía... aunque sin el menú desplegable no hay problema. He probado con selected en la etiqueta option, pero eso no funciona, no toma el valor a pesar de que muestra bien la opción selected... así que voy a ver qué encuentro al respecto... si se me ocurre alguna idea el tutorial permanece abierto.
0
vordano Mensajes publicados 1981 Estado Miembro 316
 

$sql="SELECT * FROM T_Pájaro WHERE tamaño like '%') ";

1) ¿Puedes mostrar la totalidad de tus pájaros al cargar tu página php? (eso es lo principal)

2) Si es así, ¿puedes devolver el resultado correcto con tu función javascript? (por ejemplo, la lista de todos los pájaros de tamaño 'pequeño', siendo 'pequeño' escrito en duro en el código, para probar)

3) Si es así, debes ser capaz de reemplazar el html generado por el php por el html generado por el javascript.
0
tsig00 Mensajes publicados 20 Fecha de registro   Estado Miembro Última intervención  
 
1) Sí, para el select puse mis datos duros, probé muchas cosas y así lo instancié:
$todaTalla ="grande' o talla = 'media' o talla = 'pequeña";

y en la lista desplegable:
<option value="<?php echo $todaTalla ?>">Todas las tallas</option>

está bien, funciona. Pero como dije, no consigo cargar todo al inicio, tengo que seleccionar 'Todas las tallas' en la lista desplegable...

2) Sí, claramente puedo cuando está escrito de forma fija en la lista desplegable... (...bueno... cuando dices fijo en el código javascript, ¿te refieres a fijo en la consulta sql? ... de lo contrario, no lo veo)

3) En eso no entiendo muy bien... mi código javascript es solo una función que actualiza mi consulta en función de mi lista desplegable... mi consulta es en php... y muestra en html las variables php provenientes de mi consulta... lo entiendo así...
así que no veo el html generado por el javascript, creo que eres muy bueno, no logré aprovechar la función xmlhttprequest si es de eso de lo que hablas...
0
vordano Mensajes publicados 1981 Estado Miembro 316
 
Quizás me expreso mal (o no entiendo bien la solicitud)

De hecho, lo que yo haría, sería por un lado mostrar todos los pájaros con PHP (lo básico, hacer un select de todos tus pájaros sin distinción de tamaño)

Y luego tienes tu lista desplegable generada independientemente de tu lista de pájaros, que contiene todos los tamaños. Esta lista tiene un evento JavaScript que llama a tu función MAJ

Esta función MAJ genera la misma lista de pájaros, pero teniendo en cuenta el tamaño (por lo que tiene el HTML completo con los <td> etc...)

Y para hacer el reemplazo del HTML (en tu función JavaScript), creo que solo basta con rodear tu <table> ... </table> con un div (en tu HTML)

¿Me explico bien o es un lío?
0
tsig00
 
lol cada vez mejor ^^
pero el problema es que es una pantalla de visualización y que, por una cuestión de ergonomía, debo ahorrar el máximo de espacio. Es primordial para mi proyecto integrar la lista desplegable en el título de la tabla.... había pensado en seguir tu razonamiento y hacer una segunda página que redirija a la que funciona al cambiar. Voy a intentar por este camino. Es increíble que el valor por defecto no funcione... pero sería demasiado simple, evidentemente.
0
vordano Mensajes publicados 1981 Estado Miembro 316
 
¡Atención, nunca dije que hicieras una segunda página con una redirección en el evento onchange!!!!

Solo estoy repitiendo el mismo código desde hace un rato ^^
Lee de nuevo el código que hice (y acabo de modificar)
Quizás entiendas mejor. Solo hace falta cambiar el html directamente con javascript
<script type="text/javascript">
function MAJ(str)
{
var ajax;

ajax=new XMLHttpRequest();

ajax.onreadystatechange=function()
{
if (ajax.readyState==4 && ajax.status==200)
{

document.getElementById("liste_oiseau").innerHTML="<tr><td>NUEVO PIAFFFFFFFFFFFFFFF</td></tr>";
}
}
ajax.open("GET","oiseau.php?q="+str,true);
ajax.send();
}
</script>
<!--escribe tu código html para la lista de tamaños con php para recuperar los tamaños, luego haces un evento onChange (o onClick no recuerdo) que llame a la función MAJ
<?php
$res=odbc_exec($con,"SELECT * FROM T_Oiseau");
echo "<table>";
echo "<div id=\"liste_oiseaux\">";
while($oiseau=odbc_fetch_array($res){//no estoy seguro de que odbc_fetch_array exista

echo "<tr><td>".$oiseau['taille']."</td>";
echo "<td>".$oiseau['repas']."</td></tr>"; //y otros...
}
echo "</div>";
echo "</table>";
?>
0
tsig00 Mensajes publicados 20 Fecha de registro   Estado Miembro Última intervención  
 
ok gracias por tus consejos, regreso a mi base el lunes, intentaré hacerlo en casa en otra base... mientras tanto, ¡buen fin de semana!
0
tsig00 Mensajes publicados 20 Fecha de registro   Estado Miembro Última intervención  
 
bueno, bueno, he encontrado una solución que me parece más accesible y que funciona en otro sistema
 $conexion = mysql_connect("localhost", "", "") or die("No se pudo conectar: " . mysql_error()); //elección de la base de datos mysql_select_db("test"); if (!empty($_GET["q"])) { $q=$_GET["q"]; //consulta según la elección de la lista desplegable $sql="SELECT * FROM T_Oiseau WHERE taille = '$q'"; } else { //consulta según la elección de la lista desplegable $sql="SELECT * FROM T_Oiseau"; } //Ejecutar la consulta $resultados = mysql_query($sql); ?> 


me parece casi demasiado fácil^^ pero como no está en el evento "onchange", la tabla se carga al actualizar la página... intentaré esto el lunes, te mantendré informado si funciona... y llamaré en busca de ayuda si no funciona^^
0
tsig00
 
¡Está funcionando muy bien! Solo queda hacer que coexistan varias listas desplegables... pero eso es solo una cuestión de consulta y unos cuantos litros de café^^...
Tengo otro problema, es reemplazar mi lista desplegable por más opciones de búsqueda, un poco como Excel lo propone, pero publicaré un nuevo tema y declararé este como resuelto... si consigo averiguar cómo hacerlo :)
¡Gracias de nuevo, Vordano!
++
0