Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Problema con Contador

Estas en el tema de Problema con Contador en el foro de SQL Server en Foros del Web. Hola ¿cómo están? Estoy realizando un sistema con php y SQL Server 2000. En mi BD tengo una tabla llamada Parcial que posee como claves ...
  #1 (permalink)  
Antiguo 30/09/2009, 09:10
 
Fecha de Ingreso: enero-2008
Mensajes: 37
Antigüedad: 16 años, 3 meses
Puntos: 0
Mensaje Problema con Contador

Hola ¿cómo están?

Estoy realizando un sistema con php y SQL Server 2000. En mi BD tengo una tabla llamada Parcial que posee como claves principales: Cedula del Estudiante y Número de la Pregunta. Necesito que cada vez que el Estudiante modifique una pregunta del Parcial, se le sume uno al campo Contador de la respectiva pregunta. El problema es que como lo estoy haciendo hasta el momento no me funciona (a veces me suma 1 y a veces 2) y no encuentro cual es el error. A continuación les coloco el código a ver si alguien encuentra cual es el problema:

Código PHP:
<?php
$Cedula
=trim($_POST["Cedula"]);
$NumeroPregunta=trim($_POST["NumeroPregunta"]);
$Respuesta=trim($_POST["Respuesta"]);

                include(
"conexionBD.php"); 
    
$sql="SELECT Pregunta FROM PARCIAL WHERE CedulaEstudiante='$Cedula' AND Pregunta='$NumeroPregunta'";
    
$rs=odbc_exec($conn,$sql);
    
$result=odbc_fetch_array ($rs); // Guarda  en un array
    
$prueba=$result['Pregunta ']; 
    if(
$prueba==$NumeroPregunta)//Si el estudiante ya respondio la pregunta 
    
{
        
$sql1="SELECT Contador FROM PARCIAL WHERE CedulaEstudiante='$Cedula' AND Pregunta='$NumeroPregunta'";
        
$rs1=odbc_exec($conn,$sql1);
        
$result1=odbc_fetch_array ($rs1); // Guarda  en un array
        
$prueba1=$result1['Contador ']; //Extraigo el valor del contador
        
$prueba1=$prueba1+1;//Le sumo uno al contador
        
        
$sql2="UPDATE PARCIAL SET Respuesta='$Respuesta',Contador='$prueba1' WHERE CedulaEstudiante='$Cedula' AND Pregunta='$NumeroPregunta'";
        
$rs2=odbc_exec($conn,$sql2);

                                
?><script language=javascript>alert ("Estudiante: has modificado tu respuesta");
        self.location="IndicePreguntas.php";
        </script><?

               
}
               else
               {
                                
$sql3 "INSERT INTO PRUEBA(CedulaEstudiante,Pregunta,Respuesta,Contador) VALUES ('$Cedula','$NumeroPregunta','$Respuesta',1)";
        
$rs3=odbc_exec($conn,$sql3);

        
?><script language=javascript>alert ("Estudiante: se ha guardado tu respuesta");
        self.location="IndicePreguntas.php";
        </script><? 
                
}
?>
PD: Lo coloco en este foro porque creo que el error que tengo tiene que ver con SQL Server 2000 y no con php.

Gracias de antemano por su ayuda. Saludos, Eduardo.
  #2 (permalink)  
Antiguo 30/09/2009, 11:45
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Problema con Contador

El error (garrafal) es enviar codigo T-SQL desde tu PHP y no crear procedimientos almacenados para tal fin.

Deja que la base controle las transacciones (BEGIN TRAN, COMMIT TRAN, ROLLBACK TRAN).

Cumple con la regla de 3 capas en el desarrollo de tu aplicativo
  #3 (permalink)  
Antiguo 01/10/2009, 13:29
 
Fecha de Ingreso: octubre-2009
Mensajes: 4
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Problema con Contador

Lo que se podria hacer es que cada vez que se ingresa el registro a la tabla, se dispare un trigger que se encargue de actualizar el campo "contador", asi se libera el codigo (php) y se evitan errores como el descrito
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 11:22.