elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Examen tipo test MySQL y PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Examen tipo test MySQL y PHP  (Leído 12,347 veces)
migue_coco

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Examen tipo test MySQL y PHP
« en: 29 Mayo 2013, 11:31 am »

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 Desconectado

Mensajes: 86


=>Te cabe!=>


Ver Perfil WWW
Re: Examen tipo test MySQL y PHP
« Respuesta #1 en: 29 Mayo 2013, 11:50 am »

...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  :laugh:


En línea

"la unica verdad es la realidad" (Domingo Peron)
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.596



Ver Perfil WWW
Re: Examen tipo test MySQL y PHP
« Respuesta #2 en: 29 Mayo 2013, 11:57 am »

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 Desconectado

Mensajes: 10


Ver Perfil
Re: Examen tipo test MySQL y PHP
« Respuesta #3 en: 29 Mayo 2013, 12:42 pm »

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
Moderador
***
Desconectado Desconectado

Mensajes: 5.596



Ver Perfil WWW
Re: Examen tipo test MySQL y PHP
« Respuesta #4 en: 29 Mayo 2013, 13:50 pm »

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.

Código
  1. <?php
  2. $client = mysqli_connect('localhost','root','','test');
  3. if(!$client){die('No se pudo conectar a la bd.');}
  4.  
  5. $correctas = array(
  6.   'Lengua1'=>'a',
  7.   'Lengua2'=>'b',
  8.   'Lengua3'=>'a',
  9.   'Lengua4'=>'d',
  10.   'Lengua5'=>'a',
  11.   'Matematicas1'=>'b',
  12.   'Matematicas2'=>'c',
  13.   'Matematicas3'=>'d',
  14.   'Matematicas4'=>'a'
  15. );
  16.  
  17. $query = 'SELECT * FROM examen';
  18. $resultado = mysqli_query($client,$query);
  19.  
  20. // $respuestas contendrá las cuentas (correctas/incorrectas) por cada columna.
  21. $respuestas = array(); // Array para modo estrcito.
  22.  
  23. // Por cada resultado,
  24. while($row = mysqli_fetch_array($resultado,MYSQLI_ASSOC)){
  25.   // Creamos un array por cada email que contara y lo ponemos en 0
  26.   $respuestas[$row['email']] = array('correctas'=>0,'incorrectas'=>0);
  27.   // Por cada item en $correctas.
  28.   foreach($correctas as $index=>$correcta){
  29.      // Comprobamos si el valor que contiene el nombre del item (Lengua1,Lengua2) que hemos sacado de la bd
  30.      // Coincide con la respuesta correcta.
  31.      if($row[$index]===$correcta){
  32.         // Si coincide sumamos 1 correctas
  33.         $respuestas[$row['email']]['correctas']++;
  34.      }else{
  35.         // Si no coincide sumamos a incorrectas.
  36.         $respuestas[$row['email']]['incorrectas']++;
  37.      }
  38.   }
  39. }
  40.  
  41. echo '<pre>';
  42. print_r($respuestas);
  43. ?>

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.

Código:
Array
(
    [listillo@soylist.com] => Array
        (
            [correctas] => 9
            [incorrectas] => 0
        )

    [juancho@intentoserlisto.com] => Array
        (
            [correctas] => 2
            [incorrectas] => 7
        )

)

Saludos
En línea

migue_coco

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Examen tipo test MySQL y PHP
« Respuesta #5 en: 29 Mayo 2013, 18:25 pm »

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
Moderador
***
Desconectado Desconectado

Mensajes: 5.596



Ver Perfil WWW
Re: Examen tipo test MySQL y PHP
« Respuesta #6 en: 29 Mayo 2013, 18:32 pm »

Algo te falla en la consulta Prueba cambiar esto:
Código
  1. $resultado = mysqli_query($client,$query);

Por
Código
  1. $resultado = mysqli_query($client,$query);
  2. if(!$resultado){die('Error en consulta: '.mysqli_error($client));}

Así te debería de mostrar el error que salta en la consulta.

Saludos
En línea

migue_coco

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Examen tipo test MySQL y PHP
« Respuesta #7 en: 29 Mayo 2013, 18:36 pm »

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
Moderador
***
Desconectado Desconectado

Mensajes: 5.596



Ver Perfil WWW
Re: Examen tipo test MySQL y PHP
« Respuesta #8 en: 29 Mayo 2013, 18:44 pm »

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 Desconectado

Mensajes: 10


Ver Perfil
Re: Examen tipo test MySQL y PHP
« Respuesta #9 en: 29 Mayo 2013, 18:48 pm »

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:
Código:
<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

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cuestionario tipo examen
PHP
Zedmix 1 2,204 Último mensaje 31 Octubre 2008, 16:02 pm
por alone-in-the-chat
MYsql solo hay dos BD: information_schema y test
Bases de Datos
. . . 2 5,847 Último mensaje 6 Febrero 2010, 03:08 am
por ^Tifa^
Ejercicios tipo test Pascal
Ejercicios
athort 1 7,588 Último mensaje 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 1,109 Último mensaje 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 2,587 Último mensaje 10 Abril 2016, 22:13 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines