| Mensaje |
Autor |
Publicado: Jue May 08, 2008 9:36 pm |
Citar |
Hol soy nuevo pero neesito vuestra ayuda, llevo varios dias comiendome la cabeza con esto y no veo el fallo. Os detallo el codigo y os explico que hace:
Código : <script type="text/JavaScript"> <!-- function menuover(obj, bola){ obj.style.backgroundColor=""; obj.style.color="#00FF00"; bola.src="../verde.gif"; } function menuout(obj, bola){ obj.style.backgroundColor=""; obj.style.color="#FFFFFF"; bola.src="../blanca.gif"; } function submenuover(obj, subbola){ obj.style.backgroundColor=""; obj.style.color="#FFFF00"; subbola.src="../amarilla.gif"; } function submenuout(obj, subbola){ obj.style.backgroundColor=""; obj.style.color="#FFFFFF"; subbola.src="../blanca.gif"; } function abre_cat(r){ document.datos.cat_sel.value=r; alert(r); document.datos.subcat_sel.value="ninguna"; document.datos.submit(); } function abre_subcat(r,n){ document.datos.cat_sel.value=r; document.datos.subcat_sel.value=n; document.datos.submit(); } function envia_subcat(){ cadena=buscador.subcategoria(buscador.subcategoria.selectedIndex).value; subcadenas=cadena.split("-"); categ=subcadenas[0]; subcateg=subcadenas[1]; document.datos.cat_sel.value=categ; document.datos.subcat_sel.value=subcateg; if (subcateg!=undefined) document.datos.submit(); } //--> </script> </head> <table width="792" border="0" align="center" cellpadding="0" cellspacing="0" background="fondo_tabla_principal.jpg"> <tr> <td> <?php $categorias=mysql_query("select id_cat, categoria from categorias", $db) or die ("error al cargar categorias"); while ($categoria=mysql_fetch_row($categorias)){ echo("".$cat_sel.""); if($cat_sel==$categoria[1]){ echo("<font class='categorias' style='color:red;cursor:default'><img name='".$categoria[0]."' src='../roja.gif' width=10 height=10 border=0> ".$categoria[1]."</font><BR>\n"); $familias=mysql_query("select id_fam, familia, categoria from familias where categoria=\"$cat_sel\"", $db) or die ("error al cargar familias"); while ($familia=mysql_fetch_row($familias)){ echo("<a href='#' onmouseover=\"submenuover(this, subbola".$familia[0].")\" onmouseout=\"submenuout(this, subbola".$familia[0].")\" onclick=\"abre_subcat('".$categoria[1]."','".$familia[1]."')\" class='subcategorias'> <img name='subbola".$familia[0]."' src='../blanca.gif' width=10 height=10 border=0> ".$familia[1]."</a><BR>\n"); } }else{ echo("<a href='#' onmouseover=\"menuover(this, bola".$categoria[0].")\" onmouseout=\"menuout(this, bola".$categoria[0].")\" onclick=\"abre_cat('".$categoria[1]."')\" class='categorias'><img name='bola".$categoria[0]."' src='../blanca.gif' width=10 height=10 border=0> ".$categoria[1]."</a><BR>\n"); } } ?> </td> </tr>
</table> <form method="POST" name="datos" id="datos" action="cata.php"> <input type="hidden" name="cat_sel" value=""> <input type="hidden" name="subcat_sel" value=""> </form>
Bien lo que hace es que me muestre un menu desde una base de datos y cuando pulse en el menu se despliegue la subcategoria consultando la base de datos. Para ello guardo la caegoria en un campo oculto o mando a una funcion que contiene un submit para que guarde la categoria para asi poder realizar una consulta a la bse datos con la categoria seleccionada. Pero el fallo esta en que no envia la variabe de nuevo, con lo cual no hace la consulta. Puse un alert sobre la vaiable que mando a la funcion antes de hacer el submit y me da el valor, pero cuando hace el submit se pierde el valor de la variable y esta no esta en ninguna variable ni nada.
Gracias espero vuestra ayuda porque no se que puede ocurrir. |
|
|
FLP
clabLevel: 3
|
|
Volver arriba |
 |
Publicado: Vie May 09, 2008 11:23 am |
Citar |
Veamos. Es muy importante ser sintético en Cristalab. No podemos (al menos yo) leer la cantidad de código que has puesto, para resolver cada duda. Te doy un consejo, para que podamos ayudarte, reduce el código a sólo la parte involucrada en él. En este ejemplo, te sobra, cuanto menos, todo lo referente al CSS y el cambio de propiedades-CSS cuando se pasa por encima de las cosas.
Si lo que quieres, es que te ayudemos con un "algo" que envía y recibe valores, valdría con un input, un submit, y un "<?php echo $_POST['variable'] ?>"
Espero que lo entiendas.
 |
_________________ Rizome 2008
 |
|
rizome

clabLevel: 585 
Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO
|
|
Volver arriba |
 |
Publicado: Vie May 09, 2008 1:48 pm |
Citar |
|
Mariux
BOFH

clabLevel: 2916 
paseando con wendy por los pasillos de clab
6 Tips
|
|
Volver arriba |
 |
Publicado: Vie May 09, 2008 11:37 pm |
Citar |
Vamos a ver mirad os exlico con un trozo de codigo:
echo("<a href='#' onmouseover=\"menuover(this, bola".$categoria[0].")\" onmouseout=\"menuout(this, bola".$categoria[0].")\" onclick=\"abre_cat('".$categoria[1]."')\" class='categorias'><img name='bola".$categoria[0]."' src='../blanca.gif' width=10 height=10 border=0> ".$categoria[1]."</a><BR>\n");
esto lo que hace que muestra una una familia de productos de una base de datos, esto a su vez son links para que cuando pulse con el valor de lo que pulsa haga otra consulta en la base de datos y te de el submenu. Al pulsar dicho link ejecuta la funcion abre_cat para pasar el valor de la familia a un campo oculto de un formulario, que es esto:
<form method="POST" name="datos" id="datos" action="cata.php"> <input type="hidden" name="cat_sel" value=""> <input type="hidden" name="subcat_sel" value=""> </form>
La funcion es esta:
function abre_cat(r){ document.datos.cat_sel.value=r; alert(r); document.datos.subcat_sel.value="ninguna"; document.datos.submit(); }
El caso es que el alert(r); me da el valor que le paso esto tanto como para "r" como para document.datos.cat_sel.value , pero el campo cat_sel no obtiene el valor. Este se pierde no se donde va a parar, con lo cual no me funciona y no logro ver el fallo.
Gracias |
|
|
FLP
clabLevel: 3
|
|
Volver arriba |
 |
Publicado: Sab May 10, 2008 2:24 am |
Citar |
Usas la nomenclatura IE para acceder a los elementos. No lo hagas así. Pon ID a los input-hidden, y accede a ellos mediante el DOM, esto es:Código : <script> function abre_cat(r) {document.getElementById('cat_sel').value=r; alert(r); document.getElementById('subcat_sel').value="ninguna"; document.getElementById('datos').submit(); } </script> <body> <form method="POST" name="datos" id="datos" action="cata.php"> <input type="hidden" name="cat_sel" id="cat_sel" value=""> <input type="hidden" name="subcat_sel" id="subcat_sel" value=""> </form> </body>
Para la próxima vez que postees: Por favor: Lee lo que te puso Mariux
Mariux escribió: FLP cuando posteas codigo debes encerrarlo entre las etiquetas [code] asi se lee mejor[...] Y si no lo entiendes revisa este hilo, por favor: http://www.cristalab.com/foros/t55926.html
Si no atiendes estas indicaciones, y peticiones que se te han hecho, creo que no voy a contestar tus siguientes post.
 |
_________________ Rizome 2008
 |
|
rizome

clabLevel: 585 
Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO
|
|
Volver arriba |
 |
Publicado: Sab May 10, 2008 10:19 am |
Citar |
Bien ya esta hecho como comentas, y puse el campo oculto en texto para comprobar que funciona.Entra en la funcion el campo ecibe el valor pero cuando hace el submit este se queda otra vez en blanco. Gracias |
|
|
FLP
clabLevel: 3
|
|
Volver arriba |
 |
Publicado: Sab May 10, 2008 10:40 am |
Citar |
claro. Cuando haces un "submit", la página se refresca. Y cuando se refresca, se resetea el formulario. Pero eso no quiere decir que no se hayan recibido los valores en el PHP. Para comprobarlo, pon, en el mismo "input" que has cambiado como "hidden":
<input type="hidden" name="cat_sel" id="cat_sel" value="<?php echo $_POST['cat_sel']; ?>"> Así veremos si llega, o no el valor después de enviar el formulario. Si no llega, cambia el método a GET, y "echo $_GET['cat_sel'];", y verifica que cuando envías el formulario, la variable enviada, está en la URL de la nueva página; algo así:
http://www.tuserver.es/ruta/cata.php?subcat_sel=ninguna&cat_sel=valor_enviado y confirmanos todos estos pasos. |
_________________ Rizome 2008
 |
|
rizome

clabLevel: 585 
Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO
|
|
Volver arriba |
 |
Publicado: Sab May 10, 2008 12:47 pm |
Citar |
| Bien ya hice las dos pruebas que me comentaste, la primero con el POST no me imprime el valor, pero con el GET si me lo manda a la direccion del explorador. Asi que como lo puedo hacer.Gracias |
|
|
FLP
clabLevel: 3
|
|
Volver arriba |
 |
Publicado: Sab May 10, 2008 3:11 pm |
Citar |
Veamos. ¿dices que con GET tampoco te funciona? (aunque aparece la varieble en la URL)
He hecho dos pruebas, y con este código, funciona:
<script> function abre_cat(r) {document.getElementById('cat_sel').value=r; document.getElementById('datos').submit(); } </script> <body> <form method="get" name="datos" id="datos" action="cata.php"> <input type="text" name="cat_sel" id="cat_sel" value="<?php echo $_GET['cat_sel']; ?>" /> <input type="button" value="listo" onclick="javascript:abre_cat('prueba1');" /> </form> </body> NOTA: también funciona con "post" (method), y "$_POST" (variable en php).
Antes de nada, prueba a ver si tu PHP acepta envío de variables por POST y GET, pues ese podría ser el error. Miralo así: - Crea un "prueba.php", con este código:
<?php echo $_GET['variable1']; ?> -Ingresa esta URL en tu navegador: http://www.tuserver.es/ruta_de_la_prueba/prueba.php&variable1=valor1 -Debería aparecer en el navegador, escrito: "valor1" ¿aparece?
¿has probado el ejemplo que te he puesto al inicio del post, y que a mí me funciona? (tanto con POST, como con GET) |
_________________ Rizome 2008
 |
|
rizome

clabLevel: 585 
Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO
|
|
Volver arriba |
 |
Publicado: Sab May 10, 2008 7:02 pm |
Citar |
Sabes ya lo he solucionado he encontrado la forma en que si me funciona, es la siguiente con GET pero luego hago var=$_GET['cat_sel']; y asi me guarda en var el valor y si se realiza la consulta de otra forma no hay manera.
Gracias por todo. |
|
|
FLP
clabLevel: 3
|
|
Volver arriba |
 |
Publicado: Sab May 10, 2008 7:14 pm |
Citar |
conche!!! pero si eso es lo que venía diciendo desde el principio...

Ahora, releyendo, veo que tienes:
echo("".$cat_sel.""); Que no funciona, porque tienes el server con "REGISTER_GLOBALS=off" (por cuestiones de seguridad).
Para llamar las variables enviadas por POST, o GET, se hace como te he puesto todas estas veces:
$_GET['nombre_de_la_variable']; para las enviadas por GET
$_POST['nombre_de_la_variable']; para las enviadas por POST |
_________________ Rizome 2008
 |
|
rizome

clabLevel: 585 
Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO
|
|
Volver arriba |
 |
 |