Foros del Web » Programando para Internet » PHP »

Problema con código examen con php Mysql

Estas en el tema de Problema con código examen con php Mysql en el foro de PHP en Foros del Web. El problema es que cuando pongo la respuesta correcta me la pone como si la tubiera mas les paso el codigo y las tablas aver ...
  #1 (permalink)  
Antiguo 17/08/2012, 16:15
 
Fecha de Ingreso: agosto-2012
Ubicación: Veracruz
Mensajes: 34
Antigüedad: 11 años, 8 meses
Puntos: 0
Pregunta Problema con código examen con php Mysql

El problema es que cuando pongo la respuesta correcta me la pone como si la tubiera mas les paso el codigo y las tablas aver si alguien me puede ayudar ya intente todo lo ke puede :(

index.php

<body>
<form method="post" action="examen.php">
<h3>Ingresar al sistema de examenes en linea</h3>
Matricula:
<label>
<input type="text" name="user" />
</label>
<p>Password:
<label>
<input type="password" name="pss" />
</label>
</p>
<p>
<label>
<input type="submit" value="Entrar" />
</label>
</p>
</form>
</body>

examen.php

<?
$user = (isset($_POST['user'])?$_POST['user']:NULL);
$pass = (isset($_POST['pss'])?$_POST['pss']:NULL);
$numPregs = 10; // asegurarse q la bd tenga >=10 preguntas
$conexion = mysql_connect("localhost","root","");
if(!$conexion){
echo "<p>Error: No se puede conectar al servidor</p>\n";
}
else{
$bd = mysql_select_db("examenes",$conexion);
if(!$bd){
echo "<p>Error: No se pudo seleccionar la bd</p>\n";
}
else if($user==null || $pass==null){
echo "<p>Error: Datos de login nulos<br>\n";
echo "<a href=\"Index.php\"> Regresar al homie ese</a> </p>\n";
}
else{
$nombre = mysql_query("select nombre from usuarios where matricula='$user' and password='$pass'",$conexion);
$presento = mysql_query("select presento from usuarios where matricula='$user' and password='$pass'",$conexion);
if(mysql_num_rows($nombre)<=0){
echo "<p>Autentificacion incorrecta<br>\n";
echo "<a href=\"Index.php\"> Regresar al homie ese</a> </p>\n";
}
else if(mysql_result($presento,0,'presento')==1){
echo "<p>El alumno ".mysql_result($nombre,0,'nombre')." matricula $user ya presento este examen<br>\n";
echo "<a href=\"Index.php\"> Regresar al homie ese</a> </p>\n";
}
else{
echo "<h2> Examen de conocimientos de variedades</h2>\n";
echo "<p>Bienvenido alumno ".mysql_result($nombre,0,'nombre')."</p>\n";
// seleccionar las preguntas aleatoriamente
$pregsInBD = mysql_query("select count(idp) as 'num' from preguntas",$conexion);
$pregsExistentes = mysql_result($pregsInBD,0,'num');
for($r=0;$r<$numPregs;$r++) $vector[$r]=0;
for($r=0;$r<$numPregs;$r++){
$alea=rand(1,$pregsExistentes);
$bandera=true;
for($f=0;$f<$r;$f++)
if($vector[$f]==$alea){
$bandera=false;
break;
}
if(!$bandera){ $r--; continue; }
$vector[$r]=$alea;
}
// cargar las preguntas
echo '<form action="califica.php" method="post">'."\n";
for($r=0;$r<$numPregs;$r++){
$pregActu = mysql_query("select preguntas from preguntas where idp='$vector[$r]'",$conexion);
$txtPregActu = mysql_result($pregActu,0,'preguntas');
$tpPreg = mysql_query("select tipo from preguntas where idp='$vector[$r]'",$conexion);
$tipoPreg = mysql_result($tpPreg,0,'tipo');
echo "<p>\n";
echo "".($r+1).") ".$txtPregActu;
if($tipoPreg==1){ // abierta
echo ' <input type="text" name="'.$r.'">'."\n";
echo ' <input type="hidden" name="preg'.($r+1).'" value="'.$vector[$r].'">'."\n";
}
else{ // multiopcion
$consOps = mysql_query("select idr from corresponde where idp='$vector[$r]'",$conexion);
$numResp = mysql_num_rows($consOps);
echo "\n<br>";
echo ' <input type="hidden" name="preg'.($r+1).'" value="'.$vector[$r].'">'."\n";
for($hui=0;$hui<$numResp;$hui++){
$consResp = mysql_query("select respuesta from respuestas where idr='".mysql_result($consOps,$hui,'idr')."'",$cone xion);
$valor= mysql_result($consResp,0,'respuesta');
echo '<input type="radio" name="'.$r.'" value="'.$valor.'">'.$valor."<br>\n";
}
}
echo "</p>\n";
}
echo '<input type="hidden" name="mat" value="'.$user.'">'."\n";
echo '<input type="submit" value="Calificar">'."\n";
echo '</form>'."\n";
mysql_Close($conexion);
}
}
}
?>

califica.php

<?
// $numPregs = 10; // asegurarse q la bd tenga >=10 preguntas
// diseño estatico para solo revisar diez preguntas
$preg[0] = (isset($_POST['preg1'])?$_POST['preg1']:NULL);
$preg[] = (isset($_POST['preg2'])?$_POST['preg2']:NULL);
$preg[] = (isset($_POST['preg3'])?$_POST['preg3']:NULL);
$preg[] = (isset($_POST['preg4'])?$_POST['preg4']:NULL);
$preg[] = (isset($_POST['preg5'])?$_POST['preg5']:NULL);
$preg[] = (isset($_POST['preg6'])?$_POST['preg6']:NULL);
$preg[] = (isset($_POST['preg7'])?$_POST['preg7']:NULL);
$preg[] = (isset($_POST['preg8'])?$_POST['preg8']:NULL);
$preg[] = (isset($_POST['preg9'])?$_POST['preg9']:NULL);
$preg[] = (isset($_POST['preg10'])?$_POST['preg10']:NULL);

$respDada[0] = (isset($_POST['0'])?$_POST['0']:NULL);
$respDada[] = (isset($_POST['1'])?$_POST['1']:NULL);
$respDada[] = (isset($_POST['2'])?$_POST['2']:NULL);
$respDada[] = (isset($_POST['3'])?$_POST['3']:NULL);
$respDada[] = (isset($_POST['4'])?$_POST['4']:NULL);
$respDada[] = (isset($_POST['5'])?$_POST['5']:NULL);
$respDada[] = (isset($_POST['6'])?$_POST['6']:NULL);
$respDada[] = (isset($_POST['7'])?$_POST['7']:NULL);
$respDada[] = (isset($_POST['8'])?$_POST['8']:NULL);
$respDada[] = (isset($_POST['9'])?$_POST['9']:NULL);

$matricula = (isset($_POST['mat'])?$_POST['mat']:NULL);
if(!$preg||!$respDada||!$matricula){
echo "<p>Acceso invalido</p>";
}
else{
$conexion = mysql_connect("localhost","root","");
if(!$conexion){
echo "<p>Error: No se puede conectar al servidor<br>\n";
echo "<a href=\"Index.php\"> Regresar al homie ese</a> </p>\n";
}
else{
$bd = mysql_select_db("examenes",$conexion);
if(!$bd){
echo "<p>Error: No se pudo seleccionar la bd<br>\n";
echo "<a href=\"Index.php\"> Regresar al homie ese</a> </p>\n";
}
else{
$calif=0;
$consulta = mysql_query("select nombre from usuarios where matricula='$matricula'",$conexion);
echo "<h2> Calificacion </h2>\n";
echo "<p> Alumno ".mysql_result($consulta,0,'nombre')." matricula $matricula</p>\n";
for($cju=0;$cju<sizeof($preg);$cju++){
$consulta = mysql_query("select idr from corresponde where idp='$preg[$cju] and sipi=1'",$conexion);
$idres = mysql_result($consulta,0,'idr');
$consulta = mysql_query("select respuesta from respuestas where idr='$idres'",$conexion);
$respuestidirijilla = mysql_result($consulta,0,'respuesta');
if($respDada[$cju]==$respuestidirijilla) $calif+=1;
}
mysql_query("update usuarios set calif='$calif', presento=1 where matricula='$matricula'",$conexion);
mysql_Close($conexion);
echo "<p>Ha obtenido una calificacion ".($calif>=7?"aprobatoria":"reprobatoria")." de $calif</p>";
echo "<p><a href=\"Index.php\"> Regresar al homie ese</a> </p>\n";
}
}
}
?>

Ayuda Por favor !!!
  #2 (permalink)  
Antiguo 17/08/2012, 16:17
 
Fecha de Ingreso: agosto-2012
Ubicación: Veracruz
Mensajes: 34
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Problema con código examen con php Mysql

Y estas es la BD:

create table usuarios(matricula char(8), password varchar(15), nombre varchar(25), calif smallint, presento boolean, primary key(matricula));
create table preguntas(idp integer, preguntas varchar(74), tipo integer, primary key(idp));
create table respuestas(idr integer, respuesta varchar(40), primary key(idr));
create table corresponde(sipi boolean, idp integer, idr integer);
-- crear el usuario
-- NOTA: Las paginas estan hechas para ser usadas con el usuario userExamen y su password es passExamen
GRANT USAGE ON * . * TO 'userExamen'@'localhost' IDENTIFIED BY 'passExamen' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;
GRANT SELECT , UPDATE ON `examenes` . * TO 'userExamen'@'localhost';
  #3 (permalink)  
Antiguo 17/08/2012, 16:18
 
Fecha de Ingreso: agosto-2012
Ubicación: Veracruz
Mensajes: 34
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Problema con código examen con php Mysql

dandole datos a la tabla usuarios
insert into usuarios values ('20202010', 'tomalas', 'pedro', 0, 0);
insert into usuarios values ('20122010', 'frias', 'jorge', 0, 0);
insert into usuarios values ('28202110', 'caguamas', 'humberto', 0, 0);
insert into usuarios values ('27292010', 'corona', 'elias', 0, 0);
insert into usuarios values ('21202015', 'modelo', 'cesar', 0, 0);
insert into usuarios values ('28202310', 'victoria', 'patty', 0, 0);
insert into usuarios values ('24202010', 'chaparra', 'claudia', 0, 0);
insert into usuarios values ('27202010', 'tomaaas', 'lupe', 0, 0);
insert into usuarios values ('26202910', 'chompetas', 'colossus', 0, 0);
insert into usuarios values ('20902710', 'greÒas', 'macario', 0, 0);

-- dandole datos a la tabla preguntas
-- el campor tipo indica 1 abierta, 2 opcion multiple
insert into preguntas values (1,'Son dispositivos que almacenan datos he informacion por bastante tiempo.',2);
insert into preguntas values (2,'Son dispositivos que captan y envian los datos al dispositivo que los procesara.',2);
insert into preguntas values (3,'Son dispositivos que muetran o proyectan informacion hacia el exterior del ordenador.',2);
insert into preguntas values (4,'Son los dispositivos que se encargan de comunicarse con otras computadoras o maquinas.',2);
insert into preguntas values (5,'Es una unidad de medida informatica y puede equivaler a 210 byte o a 103 bytes.',2);
insert into preguntas values (6,'Es una unidad de medida informatica y puede equivaler a 1024 MegaBytes.',2);
insert into preguntas values (7,'Es una unidad de medida informatica y puede equivaler a 1024 GigaBytes.',2);
insert into preguntas values (8,'Es la unidad minima de informacion digital que puede ser tratada por un ordenador.',2);

insert into preguntas values (9,'Corresponde a todas las partes fisicas y tangibles de un computador.',1);
insert into preguntas values (10,'Corresponde a todas las partes intangibles de un computador.',1);
insert into preguntas values (11,'Es una exprecion general que describe las caracteristicas de las entidades sobre las cuales opera un algoritmo.',1);
insert into preguntas values (12,'Es una lista bien definida, ordenada y finita de operaciones que permite hallar la solucion a un problema.',1);
insert into preguntas values (13,'Se denominan tanto a las unidades o dispositivos a travez de los cuales la computadora se comunica con el mundo exterior.',1);
insert into preguntas values (14,'Equievale a un octeto y cuyo tamaño depende del codigo de informacion o codigo de caracteres en que sea definido.',1);
insert into preguntas values (15,'Es la disiplina que estudia el tratamiento automatico de la informacion, utilizando dispositivos electronicos y sistemas.',1);
insert into preguntas values (16,'Es capaz de efectuar una secuencia de operaciones mediente un programa de acuerdo a lo indicado por el usuario o automaticamente por otro program.',1);

insert into preguntas values (17,'El teclado, mouse y escaner son Perifericos de Entrada',2);
insert into preguntas values (18,'El proyector (cañon), pantalla tactil y bosinas son Perifericos de Salida',2);
insert into preguntas values (19,'El cd, disco duro y la memoria usb son Perifericos de Almacenamiento',2);
insert into preguntas values (20,'El bluetooth, WiFi y el infrarojo son Perifericos de Comunicación',2);
insert into preguntas values (21,'El teclado, mouse y pantalla son Hardware',2);
insert into preguntas values (22,'La pantalla tactil es una periferico de entrada y salida a la vez',2);
insert into preguntas values (23,'El microfono, web cam y la impresora son Perifericos de Entrada',2);
insert into preguntas values (24,'Las boinas, memorias usb y el motitor son Perifericos de Salida',2);
insert into preguntas values (25,'El monitor, bluetooht y los auriculares son Perifericos de Amacenamiento',2);
insert into preguntas values (26,'El scaner, lector de codigo de barras y el lector de codigo de huellas son Perifericos de Comunicación',2);
  #4 (permalink)  
Antiguo 17/08/2012, 16:18
 
Fecha de Ingreso: agosto-2012
Ubicación: Veracruz
Mensajes: 34
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Problema con código examen con php Mysql

-- dandole datos a la tabla respuestas
-- respuestas de opcion para la pregunta 1
insert into respuestas values (1,'Perifeficos de Entrada');
insert into respuestas values (2,'Perifeficos de Salida');
insert into respuestas values (3,'Perifericos de Almacenamiento');
insert into respuestas values (4,'Perifericos de Comunicación');

-- respuestas de opcion para la pregunta 2
insert into respuestas values (5,'Perifeficos de Entrada');
insert into respuestas values (6,'Perifeficos de Salida');
insert into respuestas values (7,'Perifericos de Almacenamiento');
insert into respuestas values (8,'Perifericos de Comunicación');

-- respuestas de opcion para la pregunta 3
insert into respuestas values (9,'Perifeficos de Entrada');
insert into respuestas values (10,'Perifeficos de Salida');
insert into respuestas values (11,'Perifericos de Almacenamiento');
insert into respuestas values (12,'Perifericos de Comunicación');

-- respuestas de opcion para la pregunta 4
insert into respuestas values (13,'Perifeficos de Entrada');
insert into respuestas values (14,'Perifeficos de Salida');
insert into respuestas values (15,'Perifericos de Almacenamiento');
insert into respuestas values (16,'Perifericos de Comunicación');

-- respuestas de opcion para la pregunta 5
insert into respuestas values (17,'Byte');
insert into respuestas values (18,'KiloBit');
insert into respuestas values (19,'KiloByte');

-- respuestas de opcion para la pregunta 6
insert into respuestas values (20,'MegaByte');
insert into respuestas values (21,'GigaByte');
insert into respuestas values (22,'TaraByte');

-- respuestas de opcion para la pregunta 7
insert into respuestas values (23,'KiloByte');
insert into respuestas values (24,'TaraByte');
insert into respuestas values (25,'MegaByte');

-- respuestas de opcion para la pregunta 8
insert into respuestas values (26,'Bite');
insert into respuestas values (27,'Byte');
insert into respuestas values (28,'Bit');

-- respuestas para las preguntas 9 a 16
insert into respuestas values (29,'Hardware');
insert into respuestas values (30,'Software');
insert into respuestas values (31,'Dato');
insert into respuestas values (32,'Algoritmo');
insert into respuestas values (33,'Perifericos');
insert into respuestas values (34,'Byte');
insert into respuestas values (35,'Informatica');
insert into respuestas values (36,'Computadora');

-- respuestas de opcion para la pregunta 17
insert into respuestas values (37,'FALSO');
insert into respuestas values (38,'VERDADERO');

-- respuestas de opcion para la pregunta 18
insert into respuestas values (39,'FALSO');
insert into respuestas values (40,'VERDADERO');

-- respuestas de opcion para la pregunta 19
insert into respuestas values (41,'FALSO');
insert into respuestas values (42,'VERDADERO');

-- respuestas de opcion para la pregunta 20
insert into respuestas values (43,'FALSO');
insert into respuestas values (44,'VERDADERO');

-- respuestas de opcion para la pregunta 21
insert into respuestas values (45,'FALSO');
insert into respuestas values (46,'VERDADERO');

-- respuestas de opcion para la pregunta 22
insert into respuestas values (47,'FALSO');
insert into respuestas values (48,'VERDADERO');

-- respuestas de opcion para la pregunta 23
insert into respuestas values (49,'FALSO');
insert into respuestas values (50,'VERDADERO');

-- respuestas de opcion para la pregunta 24
insert into respuestas values (51,'FALSO');
insert into respuestas values (52,'VERDADERO');

-- respuestas de opcion para la pregunta 25
insert into respuestas values (53,'FALSO');
insert into respuestas values (54,'VERDADERO');

-- respuestas de opcion para la pregunta 26
insert into respuestas values (55,'FALSO');
insert into respuestas values (56,'VERDADERO');



-- dandole datos a la tabla corresponde
insert into corresponde values (0,1,1);
insert into corresponde values (0,1,2);
insert into corresponde values (0,1,3);
insert into corresponde values (1,1,4);

insert into corresponde values (1,2,5);
insert into corresponde values (0,2,6);
insert into corresponde values (0,2,7);
insert into corresponde values (0,2,8);

insert into corresponde values (0,3,9);
insert into corresponde values (1,3,10);
insert into corresponde values (0,3,11);
insert into corresponde values (0,3,12);

insert into corresponde values (0,4,13);
insert into corresponde values (0,4,14);
insert into corresponde values (0,4,15);
insert into corresponde values (1,4,16);

insert into corresponde values (0,5,17);
insert into corresponde values (0,5,18);
insert into corresponde values (1,5,19);

insert into corresponde values (0,6,20);
insert into corresponde values (1,6,21);
insert into corresponde values (0,6,22);

insert into corresponde values (0,7,23);
insert into corresponde values (1,7,24);
insert into corresponde values (0,7,25);

insert into corresponde values (0,8,26);
insert into corresponde values (0,8,27);
insert into corresponde values (1,8,28);

insert into corresponde values (1,9,29);
insert into corresponde values (1,10,30);
insert into corresponde values (1,11,31);
insert into corresponde values (1,12,32);
insert into corresponde values (1,13,33);
insert into corresponde values (1,14,34);
insert into corresponde values (1,15,35);
insert into corresponde values (1,16,36);

insert into corresponde values (0,17,37);
insert into corresponde values (1,17,38);

insert into corresponde values (0,18,39);
insert into corresponde values (1,18,40);

insert into corresponde values (0,19,41);
insert into corresponde values (1,19,42);

insert into corresponde values (0,20,43);
insert into corresponde values (1,20,44);

insert into corresponde values (0,21,45);
insert into corresponde values (1,21,46);

insert into corresponde values (0,22,47);
insert into corresponde values (1,22,48);

insert into corresponde values (1,23,49);
insert into corresponde values (0,23,50);

insert into corresponde values (1,24,51);
insert into corresponde values (0,24,52);

insert into corresponde values (1,25,53);
insert into corresponde values (0,25,54);

insert into corresponde values (1,26,55);
insert into corresponde values (0,26,56);
  #5 (permalink)  
Antiguo 17/08/2012, 16:20
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Problema con código examen con php Mysql

pone tu codigo la proxima vez con el Highlight asi no sale tan desordenado y sale asi

Código HTML:
Ver original
  1. <span>hola</span>

indicanos en que parte del código tenes el problema, (linea, porción de codigo o lo que sea) en que parte validas eso que vos queres, no da para leerse todo eso
  #6 (permalink)  
Antiguo 17/08/2012, 16:29
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Problema con código examen con php Mysql

Cita:
El problema es que cuando pongo la respuesta correcta me la pone como si la tubiera mas les paso el codigo y las tablas aver si alguien me puede ayudar ya intente todo lo ke puede :(
Aparte de lo que te comenta rodrigo791 seria bueno que la pregunta estuviera bien redactada. Literalmente pusiste algo mal redactado y un montón de código que no nos dice nada.
__________________
Blog de humor http://elcuasatar.net63.net/
  #7 (permalink)  
Antiguo 17/08/2012, 16:44
 
Fecha de Ingreso: agosto-2012
Ubicación: Veracruz
Mensajes: 34
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Problema con código examen con php Mysql

como les explica mmm la tabla corresponde:
c = 0 es incorrecto, 1 correcto
idp = Numero de la pregunta
idr = Respuesta que va aparecer como radiobutton

c idp idr
insert into corresponde values ( 0, 1 , 1 );
nsert into corresponde values ( 0, 1 , 2 );
insert into corresponde values ( 0, 1 , 3 );
insert into corresponde values ( 1, 1 , 4 );

se supone que la respuesta correcta de la pregunta 1 de las 4 opciones es la 4 y a mi me sale como si estubiera mal
  #8 (permalink)  
Antiguo 18/08/2012, 11:02
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Problema con código examen con php Mysql

Me comentas que no conoces mucho de la dinámica del blog y bueno eso no es problema porque aquí se trata de ayudar de manera desinteresada (o por los menos creo que la mayoria lo hacemos) pero esta un poco mal encaminada la forma como preguntas.

Te recomiendo que la pregunta la formules así: Primero que estas haciendo, segundo cual es el problema, tercero que errores coloca y basado en esa parte mostrar el código usando el highlight en donde se esta originando el problema algo así como:

Código PHP:
Esto esta en highlightaquí pongo el código que me genera el problema
Por lo que comentas simplemente dices que una pregunta que se supone que esta bien la coloca como mal y colocas unos insert que no nos dice mayor cosa, lo que importa es saber como se esta procesando esa información posteriormente y de esa manera poder saber porque la detecta como mala.

Por favor pon enfasis en esto que dice rodrigo791

Cita:
indicanos en que parte del código tenes el problema, (linea, porción de codigo o lo que sea) en que parte validas eso que vos queres, no da para leerse todo eso
__________________
Blog de humor http://elcuasatar.net63.net/

Etiquetas: examen, mysql, sql, tabla, usuarios
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 14:08.