Autor
|
Tema: Examen tipo test MySQL y PHP (Leído 15,552 veces)
|
migue_coco
Desconectado
Mensajes: 10
|
Buenas a todos. Tengo una duda en la que estoy atascado y espero que podais echarme un mano. Tengo una base de datos en la que se han guardado las respuestas a un examen tipo test. Son 105 respuestas de tipo A, B, C y D En la base de datos, la estructura es: Lengua1 Lengua 2 Lengua 3 ... Lengua 15 Matematicas 1 Matematica 2 ... Matematicas 15 Sociales 1 Sociales 2 ... Hasta las 105 preguntas
El caso es que quisiera hacer un codigo PHP en el que yo le indico que recupere los valores de cada respuesta de la base de datos. Y despues indicar que: Lengua 1 debe ser = a B (como respuesta correcta) Lengua 2 = C Lengua 3 = A ... Hasta ahi todo bien, pero claro, lo que no tengo ni idea de como hacer es para que me cuente cuantas respuestas correctas, (o cuantas igualdades se confirman)
Habia pensado en indicar que si la igualdad es correcta le asigne Value = 1, si es incorrecta Value = 0 y despues contar cuantos 1 existen Pero no se si ese planteamiento es correcto, ni se como se debe hacer.
Creen que pueden echarme un mano con el codigo? Es que de la idea en mi cabeza a escribir el codigo, para mi, hay un paso muy grande y no consigo plasmar la idea en php :S
Un saludo y muchas gracias por la ayuda!!
|
|
|
En línea
|
|
|
|
El Che Guevara
Desconectado
Mensajes: 86
=>Te cabe!=>
|
...parece algo simple pero hasta lo mas simple lleva mucho codigo de programacion.... bajate 'pangolin professional edition' y desile a tu profe que lo programaste vos! jaa
|
|
|
En línea
|
"la unica verdad es la realidad" (Domingo Peron)
|
|
|
#!drvy
|
Hola,
Cuando dices: "En la base de datos, la estructura es:" Te refieres a que en una tabla tienes 105 celdas y cada una de ella es del tipo "Lengua1","Lengua 2" ?
O, podrías poner como tienes la estructura (exactamente) ?
Saludos
|
|
|
En línea
|
|
|
|
migue_coco
Desconectado
Mensajes: 10
|
El problema es que el profesor soy yo jajajaja Si, la estructura es nombre, email, y las 105 respuestas, atendiendo a la forma que puse al principio.
Entonces, seria posible que si una igualdad se cumple, darle un value y despues hacer un count de los values=1??
O me estoy inventando esto??
Gracias por vuestra ayuda!!
|
|
|
En línea
|
|
|
|
#!drvy
|
Hola, Entonces, según he entendido no has guardado en la BD las respuestas correctas. Yo lo que haría, seria indicar todas en un array, tal y que 'Lengua1'=>'a', y así sucesivamente. Luego, sacaria todas las respuestas y las pasaría por el array. Te dejo un ejemplo mas o menos. <?php if(!$client){die('No se pudo conectar a la bd.');} 'Lengua1'=>'a', 'Lengua2'=>'b', 'Lengua3'=>'a', 'Lengua4'=>'d', 'Lengua5'=>'a', 'Matematicas1'=>'b', 'Matematicas2'=>'c', 'Matematicas3'=>'d', 'Matematicas4'=>'a' ); $query = 'SELECT * FROM examen'; // $respuestas contendrá las cuentas (correctas/incorrectas) por cada columna. $respuestas = array(); // Array para modo estrcito. // Por cada resultado, // Creamos un array por cada email que contara y lo ponemos en 0 $respuestas[$row['email']] = array('correctas'=>0,'incorrectas'=>0); // Por cada item en $correctas. foreach($correctas as $index=>$correcta){ // Comprobamos si el valor que contiene el nombre del item (Lengua1,Lengua2) que hemos sacado de la bd // Coincide con la respuesta correcta. if($row[$index]===$correcta){ // Si coincide sumamos 1 correctas $respuestas[$row['email']]['correctas']++; }else{ // Si no coincide sumamos a incorrectas. $respuestas[$row['email']]['incorrectas']++; } } } echo '<pre>'; ?>
La idea, es que el nombre de $correctas (Lengua1,Lengua2) coincida exactamente con el nombre que tiene la celda en la bd y que la respuesta (a,b,c,) sea la correcta. Si todo sale bien, el resultado seria algo asi xD. Array ( [listillo@soylist.com] => Array ( [correctas] => 9 [incorrectas] => 0 )
[juancho@intentoserlisto.com] => Array ( [correctas] => 2 [incorrectas] => 7 )
) Saludos
|
|
|
En línea
|
|
|
|
migue_coco
Desconectado
Mensajes: 10
|
Gracias por la respuesta!!!
He probado ese codigo (con algunas modificaciones mias) y me reporta este error:
Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in /home/../enviar.php on line 43
Array ( )
Linea 43: while($row = mysqli_fetch_array($resultado,MYSQLI_ASSOC)){
A que se debe ese error? Un saludo!
|
|
|
En línea
|
|
|
|
#!drvy
|
Algo te falla en la consulta Prueba cambiar esto:
Por
Así te debería de mostrar el error que salta en la consulta. Saludos
|
|
|
En línea
|
|
|
|
migue_coco
Desconectado
Mensajes: 10
|
Vale, el problema es que en parte de mi codigo esta usando mysql_algo Y despues al copiar, habiadejado msyqlI_algo Al quitar la I no aparece el error. Pero el print sale sin ningun valor Array( ) No muestra nada dentro...
Jo, lamento mi torpeza!!
|
|
|
En línea
|
|
|
|
#!drvy
|
Hola,
Yo te he puesto le código con la libreria mysqli (osease, con una i latina al final). Es porque mysql_ esta considerado como obsoleto y terminara por desaparecer de php.
Saludos
|
|
|
En línea
|
|
|
|
migue_coco
Desconectado
Mensajes: 10
|
Vale. Ya lo he solucionado. Os cuento, porque pensaba que podia hacer lo que yo tenia pero parece que no. El caso es el siguiente. Os lo explico con todo detalle: Primero, la base de datos tiene el nombre, email, 105 respuestas y otros datos personales. Claro, yo pensaba que podia añadir este codigo al que yo tenia, de forma que se mostraran los datos personales y debajo las respuestas correctas e incorrectas. Pero tal y como lo tenia, hacia que el array no funcionara. Mi codigo era este: <HTML> <HEAD> <TITLE>Correcion</TITLE> </HEAD> <BODY> <?php //Incluimos datos de conexion include("conectar.php"); // Nos conectamos a phpmyadmin $conectar = mysql_connect($dbhost, $dbuser, $dbpasswd); // Comprobamos que nos pudieramos conectar a phpmyadmin if (!$conectar) { die('No se pudo conectar a la base: ' . mysql_error()); } // Nos conectamos a la base mysql_select_db($dbname); //Cogemos los campos del formulario $ID=$_POST['ID']; //Realizamos la consulta $sql = "SELECT Nombre, Email, FROM test_online_1 WHERE ID = '$ID'"; $result = mysql_query($sql); ?> <table align="center"> <tr> <th>Nombre</th> <th>Email</th> </tr> <?php // Recoger y mostrar los resultados while ($result_fila = mysql_fetch_array($result)){ echo '<tr><td>' .$result_fila['Nombre'] . '</td>'; echo '<td>'.$result_fila['Email'] . '</td></tr>'; } mysql_free_result($result) ?> </table> </BODY> </HTML>
Entonces yo habia pegado debajo del while que yo habia hecho, el while del codigo que habeis puesto aqui, pero asi no funciona. Entonces, para que se entienda. Una tabla en la que ponga Nombre | Email | Dato personal 1 | Dato personal 2 | etc... Y debajo me muestra el array. Se entiende lo que quiero decir? Muchisimas gracias por vuestra ayuda!! Un saludo!!!! P.D. ya, lo de la i latina lo conocia, pero son manias que cuesta dejar jejejeje
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Cuestionario tipo examen
PHP
|
Zedmix
|
1
|
3,258
|
31 Octubre 2008, 16:02 pm
por alone-in-the-chat
|
|
|
Ejercicios tipo test Pascal
Ejercicios
|
athort
|
1
|
9,097
|
3 Septiembre 2011, 06:17 am
por iAssassin
|
|
|
50 mitos y verdades sobre el cerebro (Cuestionario de 20 Preguntas) tipo test
Foro Libre
|
El_Andaluz
|
0
|
2,117
|
24 Marzo 2016, 14:47 pm
por El_Andaluz
|
|
|
Saber la nota de examen tipo test aplicando la siguiente formula
Foro Libre
|
El_Andaluz
|
7
|
5,025
|
10 Abril 2016, 22:13 pm
por ivancea96
|
|
|
Alguien saber hacer un script tipo test ?
« 1 2 3 »
Foro Libre
|
El_Andaluz
|
20
|
13,902
|
30 Octubre 2021, 23:13 pm
por Machacador
|
|