Foros del Web » Programando para Internet » Javascript »

La función no funciona sin razón

Estas en el tema de La función no funciona sin razón en el foro de Javascript en Foros del Web. Tengo el siguiente la siguiente función dentro de <body> Código HTML: <script> //defino una serie de varibles Array para cada país <?php require("sql.php"); $prov = ...
  #1 (permalink)  
Antiguo 02/01/2009, 10:52
 
Fecha de Ingreso: junio-2008
Mensajes: 51
Antigüedad: 15 años, 10 meses
Puntos: 2
Pregunta La función no funciona sin razón

Tengo el siguiente la siguiente función dentro de <body>
Código HTML:
<script>
//defino una serie de varibles Array para cada país
<?php
require("sql.php");
$prov = mysql_query("SELECT id FROM provincia ORDER BY id DESC", $sql_c)
		or die ("Problemas al seleccionar las id de las provincias porque: ".mysql_error());
$p = mysql_fetch_array($prov);

for($i=1;$i<=$p[0];$i++)
{
echo 'var provincias_'.$i.'=new Array("Seleccione..."';

$loc = mysql_query("SELECT * FROM localidad", $sql_c)
	   or die ("Problemas al seleccionar las localidades porque: ".mysql_error());

while ($l=mysql_fetch_array($loc))
{
if ($l['idprov']==$i) {echo ",\"".$l['nombre']."\"";}
else{}
}

echo ')
';
}
?>
//función que cambia las provincias del select de provincias en función del país que se haya escogido en el select de país.
function cambia_loc(){
//tomo el valor del select del pais elegido
var prov
prov = document.f1.provincias[document.f1.provincias.selectedIndex].value
//miro a ver si el pais está definido
if (prov != 0) {
//si estaba definido, entonces coloco las opciones de la provincia correspondiente.
//selecciono el array de provincia adecuado
mis_provincias=eval("provincias_" + prov)
//calculo el numero de provincias
num_provincias = mis_provincias.length
//marco el número de provincias en el select
document.f1.localidad.length = num_provincias
//para cada provincia del array, la introduzco en el select
for(i=0;i<num_provincias;i++){
document.f1.localidad.options[i].value=mis_provincias[i]
document.f1.localidad.options[i].text=mis_provincias[i]
}
}else{
//si no había provincia seleccionada, elimino las provincias del select
document.f1.localidad.length = 1
//coloco un guión en la única opción que he dejado
document.f1.localidad.options[0].value = "-"
document.f1.localidad.options[0].text = "-"
}
//marco como seleccionada la opción primera de provincia
document.f1.localidad.options[0].selected = true
}
</script>
<?php

$provs = mysql_query("SELECT * FROM provincia",$sql_c)
		 or die("Problemas al seleccionar las provincias (línea 76): ".mysql_error());
?>
  <form id="f1" name="f1" method="post" action="clientes2.php">
    <table width="550" border="0" cellpadding="0" cellspacing="3">
      <tr>
        <td align="right">Provincia:</td>
        <td>
        	<select name="provincias" onchange="cambia_loc()">
				<option value="0" selected="selected">Seleccione...</option>
<?php
while($pr = mysql_fetch_array($provs))
{
echo "				<option value=\"".$pr['id']."\">".$pr['nombre']."</option>
";
}
?>
        	</select> </td>
      </tr>
      <tr>
        <td align="right">Localidad</td>
        <td>
        	<select name="localidad">
				<option value="-">Seleccione la Provincia</option>
        	</select>
        </td>
      </tr> 
El código trata de que tengo una lista de provincias que al seleccionar una opción en la lista localidad aparecen todas las localidades correspondientes a esa provincia.

El problema es que funcionaba y después no, así de simple y complicado.
Si ustedes pueden encontrar el error o el problema se los agradecería.
  #2 (permalink)  
Antiguo 02/01/2009, 11:19
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: La función no funciona sin razón

Estás en el foro de javascript, no en el de php, de manera que sólo podrá ayudarte el que sepa php (en realidad, al no conocer bien qué hay en tu base de datos, ni siquiera el que sepa php podrá ayudarte bien). Mejor colocar la salida html resultante para poder ayudarte.
  #3 (permalink)  
Antiguo 02/01/2009, 11:23
 
Fecha de Ingreso: junio-2008
Mensajes: 51
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: La función no funciona sin razón

Si coloco la salida con html es porque quiero que lean la parte html y nada más. Yo ya comprobé que la parte php y funciona.
Pido ayuda con javascript.

Te enviaré otro código para que no te confunda ni confunda a nadie más.

Código HTML:
<body>
<script>
//defino una serie de varibles Array para cada país
var provincias_1=new Array("Seleccione...","Bella Vista","Empedrado","Esquina")
var provincias_2=new Array("Seleccione...","Florencia","Las Toscas")
//función que cambia las provincias del select de provincias en función del país que se haya escogido en el select de país.
function cambia_loc(){
//tomo el valor del select del pais elegido
var prov
prov = document.f1.provincias[document.f1.provincias.selectedIndex].value
//miro a ver si el pais está definido
if (prov != 0) {
//si estaba definido, entonces coloco las opciones de la provincia correspondiente.
//selecciono el array de provincia adecuado
mis_provincias=eval("provincias_" + prov)
//calculo el numero de provincias
num_provincias = mis_provincias.length
//marco el número de provincias en el select
document.f1.localidad.length = num_provincias
//para cada provincia del array, la introduzco en el select
for(i=0;i<num_provincias;i++){
document.f1.localidad.options[i].value=mis_provincias[i]
document.f1.localidad.options[i].text=mis_provincias[i]
}
}else{
//si no había provincia seleccionada, elimino las provincias del select
document.f1.localidad.length = 1
//coloco un guión en la única opción que he dejado
document.f1.localidad.options[0].value = "-"
document.f1.localidad.options[0].text = "-"
}
//marco como seleccionada la opción primera de provincia
document.f1.localidad.options[0].selected = true
}
</script>
  <form id="f1" name="f1" method="post" action="clientes2.php">
Nombre:<input name="nombre" type="text" id="nombre" size="30" />
Provincia:<select name="provincias" onchange="cambia_loc()">
				<option value="0" selected="selected">Seleccione...</option>
				<option value="1">Corrientes</option>
				<option value="2">Santa Fe</option>
        	</select>
Localidad<select name="localidad">
				<option value="-">Seleccione la Provincia</option>
        	</select> 
  #4 (permalink)  
Antiguo 02/01/2009, 11:46
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: La función no funciona sin razón

Justamente te decía lo contrario: no nos muestres el código php sino la salida html que el mismo produce.
Ese código, agregándole el tag form de cierre, funciona sin ningún problema. Habría que ver si es lo que realmente te está devolviendo php. Por ejemplo, si hay saltos de línea o caracteres extraños que incluya php, no funcionará adecuadamente. Pero tal como lo estás mostrando, funciona bien.
  #5 (permalink)  
Antiguo 02/01/2009, 12:25
 
Fecha de Ingreso: junio-2008
Mensajes: 51
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: La función no funciona sin razón

Por eso digo, antes funcionaba, hace una hora más o menos.
Pero ahora nada. Y como tu dices, tiene que funcionar, pero no lo hace.
Creo que si tu no le encontraste el error entonces no habrá quién lo haga.
Gracias de todos modos.

PD: si alguien sabe como solucionarlo el post seguirá abierto.
  #6 (permalink)  
Antiguo 02/01/2009, 12:33
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: La función no funciona sin razón

El error, como te dije, puede estar en la salida real de tu código php. Porqué no hacés lo siguiente: Ejecutás tu archivo php, usás la opción ver código fuente, y nos copiás ese código?
  #7 (permalink)  
Antiguo 02/01/2009, 12:52
 
Fecha de Ingreso: junio-2008
Mensajes: 51
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: La función no funciona sin razón

Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Dar de alta a clientes</title>
<style type="text/css">
<!--
.Estilo1 {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 11px;
}
body,td,th {
	font-family: Calibri;
	font-size: 16px;
}
-->
</style>
<script type="text/javascript">
//defino una serie de varibles Array para cada país
var provincias_1=new Array("Seleccione...","Bella Vista","Empedrado","Esquina")
var provincias_2=new Array("Seleccione...","Florencia","Las Toscas")
//función que cambia las provincias del select de provincias en función del país que se haya escogido en el select de país.
function cambia_loc(){
//tomo el valor del select del pais elegido
var prov
prov = document.f1.provincias[document.f1.provincias.selectedIndex].value
//miro a ver si el pais está definido
if (prov != 0) {
//si estaba definido, entonces coloco las opciones de la provincia correspondiente.
//selecciono el array de provincia adecuado
mis_provincias=eval("provincias_" + prov)
//calculo el numero de provincias
num_provincias = mis_provincias.length
//marco el número de provincias en el select
document.f1.localidad.length = num_provincias
//para cada provincia del array, la introduzco en el select
for(i=0;i<num_provincias;i++){
document.f1.localidad.options[i].value=mis_provincias[i]
document.f1.localidad.options[i].text=mis_provincias[i]
}
}else{
//si no había provincia seleccionada, elimino las provincias del select
document.f1.localidad.length = 1
//coloco un guión en la única opción que he dejado
document.f1.localidad.options[0].value = "-"
document.f1.localidad.options[0].text = "-"
}
//marco como seleccionada la opción primera de provincia
document.f1.localidad.options[0].selected = true
}
</script>
</head>

<body>
<div align="center" class="Estilo1">
  <form id="f1" name="f1" method="post" action="clientes2.php">
    <table width="550" border="0" cellpadding="0" cellspacing="3">

      <tr>
        <td width="181" align="right">Nombre:</td>
        <td width="360"><input name="nombre" type="text" id="nombre" size="30" /></td>
      </tr>
      <tr>
        <td align="right">Provincia:</td>
        <td>
        	<select name="provincias" onchange="cambia_loc()">

				<option value="0" selected="selected">Seleccione...</option>
				<option value="1">Corrientes</option>
				<option value="2">Santa Fe</option>
        	</select> </td>
      </tr>
      <tr>
        <td align="right">Localidad</td>

        <td>
        	<select name="localidad">
				<option value="-">Seleccione la Provincia</option>
        	</select>
        </td>
      </tr>
      <tr>
        <td align="right" valign="top">Categoría del Servicio:</td>

        <td>
        	<select name="localidad">
            	<option value="0" selected="selected">Seleccione...</option>
        		<option value="1">Excursiones de Pesca</option> </select> </td>
      </tr>
      <tr>
        <td align="right">Direccion:</td>

        <td><input name="direccion" type="text" id="direccion" value="-" size="30" /></td>
      </tr>
      <tr>
        <td align="right">Telefono:</td>
        <td><p>
          
          
          <input name="telefono" type="text" id="telefono" value="-" size="30" />
          </p> </td>
      </tr>

      <tr>
        <td align="right">Email:</td>
        <td><input name="email" type="text" id="email" value="0" size="30" /></td>
      </tr>
      <tr>
        <td align="right">Web:</td>
        <td><input name="web" type="text" id="web" value="0" size="30" /></td>
      </tr>

      <tr>
        <td align="right">		
          <input type="submit" name="Submit" value="Enviar" /></td>
        <td><input type="reset" name="Submit2" value="Restablecer" /></td>
      </tr>
    </table>
  </form>
</div>
</body>
</html> 
  #8 (permalink)  
Antiguo 02/01/2009, 13:44
 
Fecha de Ingreso: junio-2008
Mensajes: 51
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: La función no funciona sin razón

Aquí está el código. Lo revisé mil veces y todavía no le encuentro el problema.
  #9 (permalink)  
Antiguo 02/01/2009, 13:54
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años
Puntos: 43
Respuesta: La función no funciona sin razón

No se si es así, pero a mi parecer es incorrecto tener dos select con el mismo nombre en un mismo formulario.
Hablo que tienes el select con nombre localidad, dos veces.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #10 (permalink)  
Antiguo 02/01/2009, 14:17
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: La función no funciona sin razón

El problema es que tenés 2 selects con el mismo nombre. Cambiándole el nombre al segundo funciona correctamente.
Veo que the_web_saint se me adelantó.
  #11 (permalink)  
Antiguo 02/01/2009, 14:25
 
Fecha de Ingreso: junio-2008
Mensajes: 51
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: La función no funciona sin razón

Cita:
Iniciado por the_web_saint Ver Mensaje
No se si es así, pero a mi parecer es incorrecto tener dos select con el mismo nombre en un mismo formulario.
Hablo que tienes el select con nombre localidad, dos veces.

Saludos
Todavía no puedo creer como lo hiciste man.
Eso es mirar bien y estar atento.
Hoy me levante a las 6 de la mañana y no dormí siesta, estoy medio somnoliento, jeje.
Gracias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:49.