Comunidad de diseño web y desarrollo en internet online

Necesito ayuda, posible problma javascript

Citar            
MensajeEscrito el 08 May 2008 09:36 pm
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.

Por FLP

3 de clabLevel



 

msie7
Citar            
MensajeEscrito el 09 May 2008 11:23 am
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.
:)

Por El Oso Amoroso

Claber

1780 de clabLevel

6 tutoriales

 

Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO

firefox
Citar            
MensajeEscrito el 09 May 2008 01:48 pm
FLP cuando posteas codigo debes encerrarlo entre las etiquetas [code] asi se lee mejor, y si dejas un link al trabajo es mas practico.

Por Mariux

BOFH

7756 de clabLevel

28 tutoriales
15 articulos

Genero:Femenino   Héroes Editores

Diseñadora & ilustradora

firefox
Citar            
MensajeEscrito el 09 May 2008 11:37 pm
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

Por FLP

3 de clabLevel



 

msie7
Citar            
MensajeEscrito el 10 May 2008 02:24 am
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

Por El Oso Amoroso

Claber

1780 de clabLevel

6 tutoriales

 

Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO

firefox
Citar            
MensajeEscrito el 10 May 2008 10:19 am
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

Por FLP

3 de clabLevel



 

msie7
Citar            
MensajeEscrito el 10 May 2008 10:40 am
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.

Por El Oso Amoroso

Claber

1780 de clabLevel

6 tutoriales

 

Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO

firefox
Citar            
MensajeEscrito el 10 May 2008 12:47 pm
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

Por FLP

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 May 2008 03:11 pm
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)

Por El Oso Amoroso

Claber

1780 de clabLevel

6 tutoriales

 

Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO

firefox
Citar            
MensajeEscrito el 10 May 2008 07:02 pm
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.

Por FLP

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 May 2008 07:14 pm
conche!!!
pero si eso es lo que venía diciendo desde el principio...
XD

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

Por El Oso Amoroso

Claber

1780 de clabLevel

6 tutoriales

 

Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.