JavaScript - ENVIAR DATO POR POST DESDE UNA VARIABLE JS A BD MYSQL

   
Vista:
Imágen de perfil de Nelson Mauricio

ENVIAR DATO POR POST DESDE UNA VARIABLE JS A BD MYSQL

Publicado por Nelson Mauricio (5 intervenciones) el 24/10/2014 23:01:30
Buenas Tardes,

Soy nuevo en JavaScript, y lo necesito para mi proyecto de Grado,

alguien me puede ayudar por favor:

Estoy trabajando en una pagina PHP, donde inserte codigo JS, para un cuestionario, JS recopila las respuestas correctas del cuestionario y calcula una valor numerico de los aciertos, al finalizar, debo enviar este valor como una variable PHP, por POST la tomo, y la envio a una Base de datos en MySql...

Como hago esto,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
if (qnum==7)
	{
	objQuizForm.outerHTML=''
	document.write("<HTML><HEAD>");
	document.write("<TITLE>Resultados...</TITLE>");
	document.write('</HEAD>');
	document.write("<BODY BGCOLOR=#E2E2E2 ALINK=#0080C0 LINK=#0080C0 VLINK=#0080C0>");
	document.write("<p align=Center><B><FONT SIZE=5 FACE="+speechstr+"Verdana"+speechstr+" COLOR=#804040>RESULTADO</B></FONT></p>");
	var currentScore=0;
		for (var y=0; y<7;y++)
		{
		tempAns= new String;
		tempCorrect= new String;
		tempAns= Answers[y];
		tempCorrect= CorrectAns[y];
			if (tempAns.toLowerCase()==tempCorrect.toLowerCase())
			{
			currentScore=currentScore+1;
			}
		}
document.write("<p align=Center><B><FONT SIZE=4 FACE="+speechstr+"Verdana"+speechstr+" COLOR=#008080>RESPONDISTE... "+currentScore.toString()+" Correctas de 7.");
por = "%";
porcentaje = (currentScore/7)*100;
porcentaje = Math.ceil(porcentaje);   //PORCENTAJE ES EL DATO QUE DEBO ENVIAR
 
document.write("<p align=Center><B><FONT SIZE=6 FACE="+speechstr+"Verdana"+speechstr+" COLOR=#0080C0>Obtuviste "+porcentaje+""+  por+"</B></FONT></p>");
 
document.write('<input type="button" onClick="enviar(porcentaje);" value="FINALAZAR" />'); // ESTE BOTON ME A UNA PAGINA QUE SE LLAMA DATOS.PHO, QUE ES DONDE ENVIO EL DATO A LA BD
document.write("</BODY>");
document.write("</HTML>");


POR FAVOR SU AYUDA, MUCHAS GRACIAS..............
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Vainas

ENVIAR DATO POR POST DESDE UNA VARIABLE JS A BD MYSQL

Publicado por Vainas (239 intervenciones) el 26/10/2014 10:32:08
Buenas:

Tu codigo es un poco complicado de entender.

Lo que pides puede que sea ajax. el tema es enviar el dato sin refrescar la web en el cliente.

Lo que no termino de entender es ¿por que usas tanto document.write?

Tambien se podria hacer un apaño sin ajax.

Espero que sirva de algo. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Nelson

ENVIAR DATO POR POST DESDE UNA VARIABLE JS A BD MYSQL

Publicado por Nelson (5 intervenciones) el 26/10/2014 13:29:20
Hola, Muchas Gracias

Bueno estoy usando document.write porque es un script, y es para colocar lenguaje Html y php,

No entiendo tu respuesta, me puedes regalar un Link, con la informacion, de hecho, estoy seguro que lo que me falta, poco, es el codigo para enviarlo a php

Gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ENVIAR DATO POR POST DESDE UNA VARIABLE JS A BD MYSQL

Publicado por Ignacio (3 intervenciones) el 26/10/2014 14:05:51
Una forma puede ser enviando el dato con el método GET. En la función enviar escribe:
1
2
3
function enviar (porcentaje) {
  window.location = "datos.php?porcentaje=" + porcentaje;
}


Otra forma con el método POST sería creandote un formulario.
1
2
3
<form name = "formulario_porcentaje" method="post" action="datos.php">
  <input type="hidden" id="porcentaje" name="porcentaje">
</form>
En la función enviar tendrías que escribir el valor del porcentaje en el input del formulario y después enviarlo
1
2
3
4
5
6
7
8
9
function enviar (porcentaje){
  // el input del formulario
  objetoInputPorcentaje = document.getElementById("porcentaje");
  // dar el valor que ha recibido la función
  objetoInputPorcentaje.value = porcentaje;
 
  // enviar el formulario
  document.formulario_porcentaje.submit();
}


Una vez que lo has enviado recoges el valor en la página datos.php usando $_GET['porcentaje'] o $_POST['porcentaje'] según el método usado para enviar el dato porcentaje.

Podría hacerse mediante AJAX.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Nelson Maurizon

ENVIAR DATO POR POST DESDE UNA VARIABLE JS A BD MYSQL

Publicado por Nelson Maurizon (5 intervenciones) el 27/10/2014 23:49:54
Hola, muchas Gracias por tu ayuda, pero no se que estoy haciendo mal, a la base de datos llega "0", y no se como sacar el valor que esta dentro del script,

este es el código, mira, por favor dime como organizo este código para sacar este valor

Nuevamente Gracias por tu ayuda

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
if (qnum==7)
	{
	objQuizForm.outerHTML=''
	document.write("<HTML><HEAD>");
	document.write("<p>&nbsp;</p>");
	document.write("<p>&nbsp;</p>");
	document.write("<p>&nbsp;</p>");
	document.write("<p>&nbsp;</p>");
	document.write("<TITLE>Resultados...</TITLE>");
	document.write('</HEAD>');
	document.write('<form name = "formulario_porcentaje" method="post" action="datos.php">');
	document.write("<BODY BGCOLOR=#E2E2E2 ALINK=#0080C0 LINK=#0080C0 VLINK=#0080C0>");
	document.write("<background-image: url(../images/o-i_prodsolutions.jpg)>");
	document.write("<p align=Center><B><FONT SIZE=5 FACE="+speechstr+"Verdana"+speechstr+" COLOR=#804040>RESULTADO</B></FONT></p>");
	var currentScore=0;
		for (var y=0; y<7;y++)
		{
		tempAns= new String;
		tempCorrect= new String;
		tempAns= Answers[y];
		tempCorrect= CorrectAns[y];
			if (tempAns.toLowerCase()==tempCorrect.toLowerCase())
			{
			currentScore=currentScore+1;
			}
		}
document.write("<p align=Center><B><FONT SIZE=4 FACE="+speechstr+"Verdana"+speechstr+" COLOR=#008080>RESPONDISTE... "+currentScore.toString()+"  Correctas de 7.");
por = "%";
porcentaje = (currentScore/7)*100;
res = Math.ceil(porcentaje);
 
function enviar (res){
  // el input del formulario
  objetoInputPorcentaje = document.getElementById("res");
  // dar el valor que ha recibido la función
  objetoInputPorcentaje.value = res;
  // enviar el formulario
  document.formulario_porcentaje.submit();
}
document.write("<p align=Center><B><FONT SIZE=6 FACE="+speechstr+"Verdana"+speechstr+" COLOR=#0080C0> Obtuviste "+res+"  "+  por+"</B></FONT></p>");
document.write('<p align=Center><input type="submit" id="res" name="res" value="FINALIZAR"></p>');
document.writeln('</form>');
document.write("</BODY>");
document.write("</HTML>");
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ENVIAR DATO POR POST DESDE UNA VARIABLE JS A BD MYSQL

Publicado por Ignacio (3 intervenciones) el 28/10/2014 16:14:48
Le estás dando valores a un input de tipo submit y no llamas a la función enviar.

Escribe el botón como tenías puesto en el primer código y borra el input de tipo submit. Para enviar el dato porcentaje o res (no sé qué quieres enviar), escribe un input de tipo text o hidden dentro del formulario:
1
2
3
4
// input que contiene el dato res
<input type="hidden" id="res" name="res">
// botón que llama a la función enviar con el dato res
<input type="button" onclick="enviar(res);" value="Finalizar">

En la página datos.php para ver lo que has enviado usa:
1
2
3
<?php
  echo $_POST['res'];
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Nelson Maurizon

ENVIAR DATO POR POST DESDE UNA VARIABLE JS A BD MYSQL

Publicado por Nelson Maurizon (5 intervenciones) el 29/10/2014 13:20:01
OK, coloque el boton, pero ahora al hacer Click no pasa nada, pienso que el problema es el orden del codigo, porque como lo tenia antes, si llamaba la funcion, pero al recibir el dato, siempre marcaba cero 0, es decir, no estaba enviando el dato de la variable, mas si estaba llamando la funcion,

Es necesario tener los dos input?

Mira que el dato que quiero enviar, viene de una variable de JS, que se muestra en la ultima pantalla del cliente.

"+currentScore.toString()+"

Luego la convierto en porcentaje y le quito los decimales.

porcentaje = (currentScore/7)*100;
res = Math.ceil(porcentaje);

Este ultimo valor es una variable JS que la muestra en pantalla

document.write("<p align=Center><B><FONT SIZE=6 FACE="+speechstr+"Verdana"+speechstr+" COLOR=#0080C0> Obtuviste "+res+" "+ por+"</B></FONT></p>");


Tu crees que se debe pasar esta variable a PHP primero, para poderla enviar a la BD?

Debo subir este valor al input?

Gracias por tu ayuda,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ENVIAR DATO POR POST DESDE UNA VARIABLE JS A BD MYSQL

Publicado por Ignacio (3 intervenciones) el 29/10/2014 16:10:10
Es difícil saber en que fallas sin poder ver todo el código. Para que te resulte más fácil, olvídate de la función, prueba a darle el valor de la variable res al input como te indico aquí:
1
2
3
4
5
document.write('<form name = "formulario_porcentaje" method="post" action="datos.php">');
// si quieres que no se muestre el input, cambia type="text" por  type="hidden"
document.write('<input type="text" id="res" name="res" value="' + res +'">');
document.write('<input type="submit" value="FINALIZAR">');
document.write('</form>');
Son necesarios los dos inputs, uno tiene el dato de la variable res (type="text" o type="hidden") y el otro hace que se active el envío (type="submit").

Una vez que obtengas la variable res en datos.php, necesitas usar PHP para guardar el dato res en la BD.

Mira en tu código lo siguiente:
La llave de cierre del condicional
1
if (qnum==7)
creo que se te olvidó cerrarla.

En la línea donde has escrito
1
objQuizForm.outerHTML=''
falta un punto y coma.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Nelson Maurizon

ENVIAR DATO POR POST DESDE UNA VARIABLE JS A BD MYSQL

Publicado por Nelson Maurizon (5 intervenciones) el 02/11/2014 03:26:37
Ignacio, muchas gracias, me funciono, por fin, después de mucho intentar, Dios te bendiga, Graciassssss,

funciono correctamente.

Eres muy bueno....Muchos Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar