Cristalab

Necesito ayuda, posible problma javascript

   Foros de discusión -> XHTML, CSS, Javascript y AJAX
Mensaje Autor
Mensaje Publicado: Jue May 08, 2008 9:36 pm     Citar   msie 
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'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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



MP         
Volver arriba
Mensaje Publicado: Vie May 09, 2008 11:23 am     Citar   firefox 
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.
Sonrisa
 _________________
Rizome
2008


rizome


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


MP         
Volver arriba
Mensaje Publicado: Vie May 09, 2008 1:48 pm     Citar   firefox 
FLP cuando posteas codigo debes encerrarlo entre las etiquetas [code] asi se lee mejor, y si dejas un link al trabajo es mas practico.
 _________________

introBlog | ::mariux.deviantArt:: | cristalab en deviantArt

Mariux
BOFH

Bastard Operators From Hell Héroes
clabLevel: 2916 Genero:Femenino
paseando con wendy por los pasillos de clab

6 Tips

MP Web         
Volver arriba
Mensaje Publicado: Vie May 09, 2008 11:37 pm     Citar   msie 
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



MP         
Volver arriba
Mensaje Publicado: Sab May 10, 2008 2:24 am     Citar   firefox 
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.
U_U
 _________________
Rizome
2008


rizome


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


MP         
Volver arriba
Mensaje Publicado: Sab May 10, 2008 10:19 am     Citar   msie 
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



MP         
Volver arriba
Mensaje Publicado: Sab May 10, 2008 10:40 am     Citar   firefox 
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 Genero:Masculino
Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO


MP         
Volver arriba
Mensaje Publicado: Sab May 10, 2008 12:47 pm     Citar   firefox 
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



MP         
Volver arriba
Mensaje Publicado: Sab May 10, 2008 3:11 pm     Citar   firefox 
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 Genero:Masculino
Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO


MP         
Volver arriba
Mensaje Publicado: Sab May 10, 2008 7:02 pm     Citar   firefox 
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



MP         
Volver arriba
Mensaje Publicado: Sab May 10, 2008 7:14 pm     Citar   firefox 
conche!!!
pero si eso es lo que venía diciendo desde el principio...
Riendo

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 Genero:Masculino
Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO


MP         
Volver arriba
Responder al tema    Foros de discusión -> XHTML, CSS, Javascript y AJAX Todas las horas son GMT
Página 1 de 1

Respuesta Rapida

  Citar el ultimo mensaje
Adjuntar tu firma

Mostrar mensajes de anteriores:
  

 


Cristalab BloodBerry Style © 2006 Cristalab
Powered by phpBB © 2001, 2002 phpBB Group