PHP - Test vocacional con una base de datos y mostrar los resultados en php

   
Vista:

Test vocacional con una base de datos y mostrar los resultados en php

Publicado por Gonzalo (6 intervenciones) el 18/11/2015 03:14:18
Estoy trabajando de forma local con el programa wamp y he creado una base de datos referida a un test vocacional por lo tanto hice tres tablas: una para las universidades la cual tiene dos columnas, el ID que identifica a cada universidad y el nombre de la universidad...otra con las carreras del test, la cual tiene tres columnas, el ID que identificaa cada carrera, el nombre y el ID que conecta a sus respectivas universidades... Y otra que contiene las preguntas, esta a su vez tiene tres columnas, el ID de cada pregunt, el nombre y el ID que conecta con sus respectivas carreras...
Conecte está base de datos a una página web y puedo visualizar la tabla de preguntas y las preguntas...utilice un select/ option que evalúa si y no (1y0) para poder dar respuesta a esas preguntas.
El problema está a la hora de recibir el contenido en el archivo php...
Necesitaría ayuda con ese tema por empezar, luego hay otras dudas.
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 VRM

Test vocacional con una base de datos y mostrar los resultados en php

Publicado por VRM (171 intervenciones) el 18/11/2015 07:06:28
Hola:

¿Cuál es el problema?

Saludos de Víctor.-
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

Test vocacional con una base de datos y mostrar los resultados en php

Publicado por Gonzalo (6 intervenciones) el 18/11/2015 11:47:55
El problema está que yo en los sele, tuve que utilizar tres arrays para que me guardara la respuesta el ID de la pregunta y el ID de la carrera a la que está asociada la pregunta..
Después para recibir esos datos, yo declaro las variables pero no llega nada entonces no puedo continuar con la lógica que había pensado
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 VRM

Test vocacional con una base de datos y mostrar los resultados en php

Publicado por VRM (171 intervenciones) el 18/11/2015 15:15:53
Hola:

De verdad: me gustaría ayudarte, pero si no mandas más información es imposible. Por ejemplo: dices "no llega nada" ¿cómo lo sabes? ¿has hecho alguna prueba para ver lo que llega?

Se supone que tienes un form (o no?) ¿como se manda los datos? POST GET

Se supone que sele son elementos "select" pero no entiendo lo de tener que utilizar tres arrays ¿los intentas mandar por el formulario?

"Después para recibir esos datos, yo declaro las variables..." ¿qué variables?

Podría ser buena idea mandar el código.

Saludos de Víctor.-
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

Test vocacional con una base de datos y mostrar los resultados en php

Publicado por Gonzalo (6 intervenciones) el 20/11/2015 22:17:31
Te adjunto los codigos que he utilizado. El primer codigo es donde se muestra la tabla y en el otro se muestran los resultados.

El problema es que recibimos el resultado, pero estos no sabemos como imprimirlos con el array según la carrera.
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 VRM

Test vocacional con una base de datos y mostrar los resultados en php

Publicado por VRM (171 intervenciones) el 21/11/2015 06:47:18
Hola:

En "resultado.php" en la linea:
1
$carrera_respuesta [$carrera >= $resultado];
¿Qué se quiere hacer? Porque $carrera lo defines después, se tomaría aquí lo que hace la iteración anterior.

¿Cómo se obtiene la carrera vocacional?

La tabla "preguntas" de la base de datos supongo que tiene las siguientes columnas:
idcarrera tipo?
idpregunta varchar o text

Se supone que debe haber una columna con las respuestas.

¿Dónde se hace la comparación de las preguntas con las respuestas?

Saludos de Víctor.-
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

Test vocacional con una base de datos y mostrar los resultados en php

Publicado por Gonzalo (6 intervenciones) el 21/11/2015 13:11:46
En la línea que me enviaste del código, he querido comparar los resultados con el IDcarrera que si no me equivoco, ya la había declarado a la variable.

Si, la tabla pregunta tiene una columna de tipo varchar que es Idpregunta, la que sigue es IDcarrera dónde cada pregunta tiene el número de la carrera a la que va dirigida.

Y no hay una columna con las respuestas porque eso lo debe ingresar el usuario a través select/option que evalúa si y no
Te mando las imágenes
Querés te envíe una de como se ve en la página diseñada?
DSC_0003
DSC_0002
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 VRM

Test vocacional con una base de datos y mostrar los resultados en php

Publicado por VRM (171 intervenciones) el 21/11/2015 19:16:44
Hola:

Vale, centremonos en una sóla pregunta:

¿Cómo se obtiene la carrera vocacional?

Saludos de Víctor.-
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

Test vocacional con una base de datos y mostrar los resultados en php

Publicado por Gonzalo (6 intervenciones) el 21/11/2015 20:02:24
Yo tenía pensado que habiq que sumar la cantidad de 'si' que había obtenido cada IDcarrer...porque suponete que hay 10 preguntas y la mitad pertenecen a la carrera 1 y las otras a la 2
Yo quería sumar cuantos si había tenido cada carrera y después comprar cual es mayor y ahí obtendría la carrera vocacional
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 VRM

Test vocacional con una base de datos y mostrar los resultados en php

Publicado por VRM (171 intervenciones) el 22/11/2015 10:19:37
Hola:

Lo que he entendido es lo siguiente:

Creas tres arrays, que transferidos por POST quedan
$_POST["idpregunta"][#]
$_POST["idcarrera"][#]
$_POST["respuesta"][#]
Donde # es el número de la pregunta.

Básicamente lo que se necesita es:
1º recorrer el array $_POST["respuesta"]. Si la respuesta es 'SI' se incrementa el contador de la carrera correspondiente. Ejemplo si $_POST["respuesta"][7] == 'SI' se incrementa la carrera con índice $_POST["idcarrera"][7]. Si la respuesta es 'NO' no se hace nada.
2º Ver que carreras tienen más respuestas positivas
3º Presentar los resultados

Yo he tenido en cuenta que:
- puede haber empaates
- alguien puede contestar a todo 'NO'

No lo he probado, así que tendrá errores a montones. Para cualquier duda o problema aquí estamos.

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
error_reporting (0);
 
/**
 * Creamos un array para almacenar los resultados. 
 * $num_respuestas_a_la_carrera[0] se pone a cero ya que la carrera 0 no existe
 * $num_respuestas_a_la_carrera[1] es el número de contestaciones afirmativas a preguntas de agronomía
 * $num_respuestas_a_la_carrera[2] es el número de contestaciones afirmativas a preguntas de veterinaria
 * ... etc...
 */
$num_respuestas_a_la_carrera = array();
$num_respuestas_a_la_carrera[0] = 0;
 
/**
 * Recorremos el array de respuestas ($_POST["respuesta"])
 */
foreach($_POST['respuesta'] as $num_respuesta => $respuesta) {
	/**
	 * Si la respuesta es SI se suma una unidad al contador ($num_respuestas_a_la_carrera[]) de la carrera correspondiente
	 */
	if ( $respuesta == "SI" ) {
		/**
		 * Vemos la carrera que corresponde a esa carrera
		 */
		$carrera = $_POST["idcarrera"][$num_pregunta];
		/**
		 * Incrementamos el contador de la carrera
		 */
		$num_respuestas_a_la_carrera[$carrera]++;
	}
}
 
/**
 * Creamos un array para almacenar los nombres de las carreras.
 * Como la carrera cero no existe ponemos ninguna en el índice cero
 */
$nombre_de_la_carrera = array("Ninguna","Agronomía","Veterinaria","Medicina","Música","Artes plásticas","Teatro","Profesorado en matemáticas","Profesorado en física",
							   "Contador","Profesorado en Historia","Derecho","Economía","Profesorado en Letras","Comunicación Social","Filosofía","Ingeniería en sistemas",
							   "Ingeniería en Petroleo","Electrónica");
 
/**
 * Miramos el valor máximo de respuestas positivas en una carrera
 */
$max_respuestas_positivas = max($num_respuestas_a_la_carrera);
 
/**
 * Creamos un array para almacenar las carreras que tienen el valor máximo
 */
$carreras_vocacionales = array();
 
/**
 * Miramos las carreras con el valor máximo
 * Contemplamos el caso de que no se responda a ninguna pregunta positivamente
 */
if ( $max_respuestas_positivas != 0 ){// Hay alguna respuesta positiva a alguna pregunta
	foreach( $num_respuestas_a_la_carrera as $indice_carrera => $respuestas ) {
		if ( $respuestas == $max_respuestas_positivas ){
			$carreras_vocacionales[] = $indice_carrera;
		}
	}
} else {
	$carreras_vocacionales[] = 0;// Se considera que no tiene ninguna carrera vocacional
}
 
/**
 * Presentamos el resultado.
 */
echo "Tus carreras vocacionales son:<br/>";
foreach( $carreras_vocacionales as $carrera_vocacional ) {
	echo "<br/>".$nombre_de_la_carrera[$carrera_vocacional];
}
 
?>

No te lo mando adjunto porque hay que validarse.

OffTopic: ¿de qué pais eres? Lo digo porque me ha resultado curioso que exista una carrera de Profesorado en Física o de Teatro.

Saludos de Víctor.-
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

Test vocacional con una base de datos y mostrar los resultados en php

Publicado por Gonzalo (6 intervenciones) el 22/11/2015 16:09:31
Muchas Gracias por tu ayuda
Soy de Argentina

Lo he probado al código pero sigue sin funcionar a pesar de que ya le agregue lo que faltaba y le cambie un par de cosas que no tendrian que afectar.

Por ejemplo yo contesto Si a todas las preguntas y me aparece una sola carrera, cuando deberían estar todas. O contesto a algunas SI y a otras NO y me vuelve a salir la misma carrera que antes.

No se porque podria ser.
Te vuelvo a pedir si podrias darme otra ayuda mas y gracias por todos los comentarios explicando.
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 VRM

Test vocacional con una base de datos y mostrar los resultados en php

Publicado por VRM (171 intervenciones) el 23/11/2015 08:58:07
Hola:

Había dos errores:

1) en la linea 21 debe quedar:
1
if ( $respuesta == 1 ) {
1 en vez de "SI".
2) en la linea 25 debe quedar:
1
$carrera = $_POST["idcarrera"][$num_respuesta];
Tenía $num_pregunta.

Una recomendación:

Si este programa va a pasar a producción o es un ejercicio que luego corrige alguien, deberias poner más comentarios, no cambiar constantemente de php a html, no cerrar los tags que no tiene cierre (por ejemplo un input es <input _opciones_ /> y no <input _opciones_ ></input>, los errores son cosas muy frecuentes en programación así que hay que tener una estrategia para localizarlos, lo que yo hago es primero tratar de acotar el lugar en el que está el bug, luego ir colocando lineas echo para ir viendo lo que sucede.

El programa me funciona (con esos cambios). Pero he tenido que escribir todo el principal.php ya que no tengo la base de datos. Cuentamé si finalmente has conseguido que funcione.

Saludos de Víctor.-
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