Foros del Web » Programando para Internet » PHP »

El codigo javascript no se ejecuta, de hecho ni aparece en el codigo fuente....

Estas en el tema de El codigo javascript no se ejecuta, de hecho ni aparece en el codigo fuente.... en el foro de PHP en Foros del Web. Hola, este es mi primer tema.... Estoy intentando hacer un formulario que se recarga a si mismo onChange de los select y que actualice sus ...
  #1 (permalink)  
Antiguo 08/11/2008, 15:04
 
Fecha de Ingreso: noviembre-2008
Mensajes: 6
Antigüedad: 15 años, 5 meses
Puntos: 0
Busqueda El codigo javascript no se ejecuta, de hecho ni aparece en el codigo fuente....

Hola, este es mi primer tema....
Estoy intentando hacer un formulario que se recarga a si mismo onChange de los select y que actualice sus "values" con los datos obtenidos del usuario. Una parte del código es en php, pero la parte que me da problema es la de Javascript.

Al cargarse la página, lo primero que hago es averiguar si el formulario ha sido mandado. Si es así, asigna a variables las variables recibidas por post...

1. Se conecta a la base de datos y asigna a variables las variables conseguidas de la base de datos

2. Hasta aquí, me lo hace todo bien. Ahora viene el problema, a la hora de asignar al form los valores obtenidos. No solo no los asigna sino que cuando miro el codigo fuente en el firefox, el codigo ni esta.


if (isset($_POST["numPersonas"]) && isset($_POST["viajes"])) {
echo '<script type="text/javascript">alert("post mandado")</script>';
$numPersonas = $_POST["numPersonas"];
$viaje = $_POST["viajes"];
//------------------------------------------------------------conectar a la base de datos--------------------
mysql_connect("localhost","myflippa","y83VX5Q2");
$selecciona="SELECT precio FROM viajes WHERE codigoViaje='$viaje'";
$sqlArray=mysql_db_query("ventas_viajes",$seleccio na) or die('<b>Error en la consulta:</b><br /><br />'.mysql_error());
while($fila=mysql_fetch_array($sqlArray)) {
$precioUnidad=$fila['precio'];
$precioTotal= $fila['precio'] * $numPersonas;
}
echo '<script type="text/javascript">alert("despues de bd")</script>';
//------------------------------------------------------------asigna los valores obtenidos al form--------------------
?>
<script type="text/javascript">
document.forms["formviaje"]["viajes"].value="<?=$viaje;?>";
alert("<?=$viaje;?>")
document.forms["formviaje"]["numPersonas"].value = "<?=$numPersonas;?>";
alert("<?=$numPersonas;?>")
document.forms["formviaje"]["precioUnidad"].value="<?=$precioUnidad;?>";
alert("<?=$precioUnidad;?>")
document.forms["formviaje"]["precioTotal"].value="<?=$precioTotal;?>";
alert("<?=$precioTotal;?>")
</script><?

}
?>
Todo esto esta en el <head>. Tambien he provado meter el Javascript en un echo:
<?
//-----------------------------------------------------------si consigo variables post form viajes--------------------
if (isset($_POST["numPersonas"]) && isset($_POST["viajes"])) {
echo '<script type="text/javascript">alert("post mandado")</script>';
$numPersonas = $_POST["numPersonas"];
$viaje = $_POST["viajes"];
//------------------------------------------------------------conexion a la base de datos viajes--------------------
mysql_connect("localhost","myflippa","y83VX5Q2");
$selecciona="SELECT precio FROM viajes WHERE codigoViaje='$viaje'";
$sqlArray=mysql_db_query("ventas_viajes",$seleccio na) or die('<b>Error en la consulta:</b><br /><br />'.mysql_error());
while($fila=mysql_fetch_array($sqlArray)) {
$precioUnidad=$fila['precio'];
$precioTotal= $fila['precio'] * $numPersonas;
}
//------------------------------------------------------------output de los nuevos datos en el form viajes--------------------
echo '
<script type="text/javascript">
document.forms["formviaje"]["viajes"].value="'.$viaje.'";
alert("'.$viaje.'")
document.forms["formviaje"]["numPersonas"].value = "'.$numPersonas.'";
alert("'.$numPersonas.'")
document.forms["formviaje"]["precioUnidad"].value="'.$precioUnidad.'";
alert("'.$precioUnidad.'")
document.forms["formviaje"]["precioTotal"].value="'.$precioTotal.'";
alert("'.$precioTotal.'")
</script>';

}
?>

Pero no funciona mejor...
No se que estoy haciendo mal... Mi cliente necesita que este funcionando rápidamente y he provado todo lo que se me ha ocurrido... pero no lo estoy solucionando. Muchísimas gracias por adelantado,
Gioia
  #2 (permalink)  
Antiguo 08/11/2008, 15:12
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: El codigo javascript no se ejecuta, de hecho ni aparece en el codigo fuent

Si el código no es enviado al navegador, el problema no es de Javascript sino de PHP.

Pediré al moderador que mueva el tema hacia allá, así podrán asesorarte mejor.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 08/11/2008, 18:51
 
Fecha de Ingreso: septiembre-2008
Mensajes: 350
Antigüedad: 15 años, 7 meses
Puntos: 31
Respuesta: El codigo javascript no se ejecuta, de hecho ni aparece en el codigo fuent

y ya trovaste a cambiar todo esto: <?=$viaje;?> por un echo así,
<?php echo $viaje;?>
  #4 (permalink)  
Antiguo 08/11/2008, 21:26
 
Fecha de Ingreso: noviembre-2008
Mensajes: 6
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: El codigo javascript no se ejecuta, de hecho ni aparece en el codigo fuent

Si, antes lo tenía así y tampoco me funcionaba....El problema no es que no se acceda a las variables php dentro del javascript, sino que el codigo javascript no se ejecuta para nada... De hecho, es más raro aun, cuando he mirado el codigo fuente desde una mac, no me sale el codigo javascript para nada, cuando lo miro desde un pc, si que sale, con los valores correctos, pero no se ejecuta.... El Url es http://www.flippa.es/contenido/paginas_espanol/compra_online5.php... Si se les ocurre algo... se lo agradecería un montón... la logica me dice que tendría que funcionar... pero....
  #5 (permalink)  
Antiguo 08/11/2008, 21:33
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: El codigo javascript no se ejecuta, de hecho ni aparece en el codigo fuent

Es que estás tratando de modificar el value de un elemento que aún no fue cargado, deberías hacer todo eso en el evento onload.

Aunque no entiendo para qué usar Javascript para mostrar los valores cuando puedes imprimirlos directamente con PHP. .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 08/11/2008, 21:57
 
Fecha de Ingreso: noviembre-2008
Mensajes: 6
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: El codigo javascript no se ejecuta, de hecho ni aparece en el codigo fuent

Porque la primera vez que se carga la pagina, no quiero que me cargue ninguna variable, ya que todavía no se ha mandado el formulario... A ver, según lo que me dices, si lo he entendido bien, podría probar dos cosas:

1. Poner todo el codigo, incluido el php, en un onLoad

2. Hacer que el valor de los form sea igual a un if statement, si $_POST existen, entonces que me pongan las variables php, sino poner unos valores por defecto...

Crees que alguna podría funcionar?
Muchas gracias,
Gioia
  #7 (permalink)  
Antiguo 08/11/2008, 21:59
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: El codigo javascript no se ejecuta, de hecho ni aparece en el codigo fuent

No, solo el código Javascript debes llamarlo desde el onload (no colocarlo directamente en el onload).

La segunda opción me parece más adecuada.

Prueba y nos cuentas. Saludos .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 10/11/2008, 12:12
 
Fecha de Ingreso: noviembre-2008
Mensajes: 6
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: El codigo javascript no se ejecuta, de hecho ni aparece en el codigo fuent

Hola, sigo luchando... :P
He cambiado la lógica de la cosa, esta mejor, pero aún tengo un problema. Ahora he puesto:

<?
//-----------------------------------------------------------asigna valores por defecto--------------------
$viajes="andorra2009_1";
$numPersonas = 1;
$precioUnidad =0;
$precioTotal=0;
//-----------------------------------------------------------si consigo variables post form viajes--------------------
if (isset($_POST["numPersonas"]) && isset($_POST["viajes"])) {
$numPersonas = $_POST["numPersonas"];
$viajes = $_POST["viajes"];
//------------------------------------------------------------conexion a la base de datos viajes--------------------
mysql_connect("localhost","xxxxx","xxxxxxx");
$selecciona="SELECT precio FROM viajes WHERE codigoViaje='$viajes'";
$sqlArray=mysql_db_query("ventas_viajes",$seleccio na) or die('<b>Error en la consulta:</b><br /><br />'.mysql_error());
while($fila=mysql_fetch_array($sqlArray)) {
$precioUnidad=$fila['precio'];
$precioTotal= $fila['precio'] * $numPersonas;
}
echo '<script type="text/javascript">alert("viaje='.$viajes.' numero personas= '.$numPersonas.' precio unidad= '.$precioUnidad.' precio total = '.$precioTotal.'")</script>';
}
?>


Y en el form:

<select name="viajes" id="viajes" onChange="mandaForm()">
<option selected="selected"><?=$viajes?></option>
<option value="andorra2009_1" selected="selected">Ski and Snowboard en Andorra 9-11 enero</option>
<option value="andorra2009_2">Ski and Snowboard en Andorra 16-18 enero</option>
<option value="andorra2009_3">Ski and Snowboard en Andorra 23-25 enero</option>
</select>
</td>
</tr>
<tr>
<td width="74">
<div align="right"><span class="textos">N&ordm; Personas:</span> </div>
</td>
<td width="53">
<select name="numPersonas" id="numPersonas" onChange="mandaForm()">
<option selected="selected"><?=$numPersonas ?></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</td>
<td width="43">
<div align="left">
<div align="right"><span class="textos">Precio:</span></div>
</div>
</td>
<td width="51">
<span class="textos">
<input name="precioUnidad" type="text" id="precioUnidad" value="<?=$precioUnidad ?>" size='4'>
</span>
</td>
<td width="71">
<div align="right"><span class="textos">Precio Total:</span></div>
</td>
<td width="102" height="34" valign="middle">
<span class="style1">
<input name="precioTotal" type="text" id="<?=$precioTotal ?>" value="0"size="5">
</span>
</td>
</tr>
<tr>
<td colspan="6">&nbsp;
</td>
</tr>
</form>


Con el segundo select, funciona bien, ya que el value y lo que ve el usuario es lo mismo, pero en el caso de viajes no me funciona, ya que el value (que uso para conectar a la base de datos) y lo que ve el usuario no es lo mismo... Tengo varias dudas:
1. Con esta sintaxis estoy seleccionado una opción o estoy creando una opción nueva?
2. Si estoy seleccionando, como puedo hacerlo mediante el value y que me salga "lo que ve el usuario" que se corresponde de manera automatica?


Muchísimas gracias,
La perdida y nueva en esto,
Gioia
  #9 (permalink)  
Antiguo 10/11/2008, 12:20
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: El codigo javascript no se ejecuta, de hecho ni aparece en el codigo fuent

Con esa opción lo que estás haciendo es crear una opción nueva. Y no seleccionandola, lo que puedes hacer para seleccionar es, antes de imprimir el option revisar si es la que quieres seleccionar, y en ese caso, imprimir el selected="selected" al lado.

P.S.: La asignación que estás haciendo para los precios dentro del bucle while es medio "rara", ya que solo estarías tomando el último valor obtenido de la consulta.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 10/11/2008, 12:46
 
Fecha de Ingreso: noviembre-2008
Mensajes: 6
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: El codigo javascript no se ejecuta, de hecho ni aparece en el codigo fuent

Lo que dices serí algo así?

<select name="viajes" id="viajes" onChange="mandaForm()">

<option value="andorra2009_1"<? if ($viajes=="andorra2009_1"){echo 'selected="selected"';}?>>Ski and Snowboard en Andorra 9-11 enero</option>
<option value="andorra2009_2"<? if ($viajes=="andorra2009_2"){echo 'selected="selected"';}?>>Ski and Snowboard en Andorra 16-18 enero</option>
<option value="andorra2009_3"<? if ($viajes=="andorra2009_3"){echo 'selected="selected"';}?>>Ski and Snowboard en Andorra 23-25 enero</option>
</select>

O hay alguna manera más simple?
Muchas gracias por haber respondido tan rápido :)
Gioia
  #11 (permalink)  
Antiguo 10/11/2008, 12:54
 
Fecha de Ingreso: noviembre-2008
Mensajes: 6
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: El codigo javascript no se ejecuta, de hecho ni aparece en el codigo fuent

Lo he provado y me funciona, es un pelin redundante, pero ya me saca de apuros... :D
Por lo de los precios... la busqueda no me dara nunca más de un resultado, por eso no me preocupa que se sobreescriba.
Otra vez (a riesgo de ser repetitiva) muchas gracias,
Gioia
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 10:35.