Foros del Web » Programando para Internet » PHP »

Problema con onsulta "fantasma"

Estas en el tema de Problema con onsulta "fantasma" en el foro de PHP en Foros del Web. Me gustaria saber si a alguien le ha pasado algo por el estilo: tengo la tipica funcion que actulaiza un valor de la base de ...
  #1 (permalink)  
Antiguo 30/04/2008, 04:53
 
Fecha de Ingreso: febrero-2008
Mensajes: 11
Antigüedad: 16 años, 2 meses
Puntos: 0
Problema con onsulta "fantasma"

Me gustaria saber si a alguien le ha pasado algo por el estilo: tengo la tipica funcion que actulaiza un valor de la base de datos, pone una encuesta actic¡vada <-> desactivada.

Para eso primero conecto con la base de datos, realizo la consulta:
$sql = 'UPDATE encuestas SET Activo = "true" WHERE IDEncuesta = '.$idEncuesta.'';
Y despues valido si ha salido bien con un mysql_affected_rows();

El caso es que cuando ejecuto la funcion, me sale un mensaje de que todo ha salido bien ( mysql_affected_rows() != 0), pero la base de datos no se actualiza, si no que sigue igual. He probado a imprimir la consulta con un echo y probarla en la linea de comandos del phpmyadmin y funciona bien.

En fin si a alguien la ha pasado algo parecido y tiene alguna pista lo agradeceria.

Un saludo.
  #2 (permalink)  
Antiguo 30/04/2008, 14:51
Avatar de Evert  
Fecha de Ingreso: abril-2004
Ubicación: Cochabamba - Bolivia
Mensajes: 94
Antigüedad: 20 años
Puntos: 2
Re: Problema con onsulta "fantasma"

hola...

me paso algo asi... pero era porque el valor que buscaba mediante el WHERE no existia en la base de datos y por eso no actualizaba ningun registro, ya verificaste que el valor que tienes en $idEncuesta existe en la base de datos?

espero resuelvas tu problema
__________________
Es mejor tener la boca cerrada y parecer un tonto ..... que abrirla y confirmarlo!!!
  #3 (permalink)  
Antiguo 30/04/2008, 15:11
 
Fecha de Ingreso: marzo-2008
Mensajes: 166
Antigüedad: 16 años
Puntos: 5
Re: Problema con onsulta "fantasma"

Si, a mi también me a pasado pero fíjate muy bien que valores le entran a la consulta... luego no te das cuenta y estas afectando otras tablas o cosas por el estilo... a mi me a pasado varias veces pero como te digo por descuidos mios que son difíciles de percatar.

Saludos.
  #4 (permalink)  
Antiguo 30/04/2008, 18:21
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Problema con onsulta "fantasma"

Verifica que no tengas errores en tu instrucción SQL

Código PHP:
$sql "UPDATE encuestas SET Activo = 'true' WHERE IDEncuesta = '$idEncuesta'";
$result mysql_query($sql) or die("Error en query $sql:" .mysql_error() ); 

Saludos.
  #5 (permalink)  
Antiguo 05/05/2008, 05:10
 
Fecha de Ingreso: febrero-2008
Mensajes: 11
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Problema con onsulta "fantasma"

Bueno, primero gracias por las respuestas, segundo.... que no hay manera, pongo el codigo entero:

Cita:
function activarEncuesta($idEncuesta){

$datos = new conexionDB('encuestas');
$datos->conectar();
$datos->consultar('SELECT Activo FROM encuestas WHERE IDEncuesta = '.$idEncuesta.'');
$temp = mysql_fetch_row($datos->getQuery());
if($datos->resultados() > 0){ // el Id es bueno
if($temp[0] == "si"){ // esta es la encuesta activa y la desactivamos
$this->desactivarEncuesta($idEncuesta);
}elseif($temp[0] == "no") { // la encuesta no esta activa.
$datos->consultar('SELECT IDEncuesta FROM encuestas WHERE Activo = "si"');
$temp = mysql_fetch_row($datos->getQuery());
if($datos->resultados() == 0) { // no hay encuestas activas.
$conexion = new conexionDB('encuestas');
$conexion->conectar();
$conexion->consultar("UPDATE encuestas SET Activo = 'si' WHERE IDEncuesta = '$idEncuesta'");
if($conexion->actualizados() > 0){
include('./includes/mensajes/encuestaOK.php');
}else{
include('./includes/mensajes/ErrorBD.php');
}
}else{
include('./includes/mensajes/ErrEncuesta.php');
}
} // fin elseif
}else{ // error ID incorrecto
include('./includes/mensajes/ErrorBD.php');
}
}


function desactivarEncuesta($idEncuesta){

$conexion = new conexionDB('encuestas');
$conexion->conectar();
$conexion->consultar('UPDATE encuestas SET Activo = "no" WHERE IDEncuesta ="'.$idEncuesta.'"');
if($conexion->actualizados() == 0){
include('./includes/mensajes/ErrorDB.php');
}else{
include('./includes/mensajes/encuestaDes.php');
}
}
Bueno he cambiado el 'true' y 'false' por 'si' y 'no', aunque da igual como veis he provado de todo. Bueno algunas explicaciones sobre el código: conexionDB es una clase que hace las operaciones con la base de datos, las operaciones son conectar, consultar, etc, etc... Los include son mensajes de aviso.

Otra cosa, si comento todo el código excepto las tres primeras lineas, y en la primera consulta pongo la consulta del UPDATE, funciona. Pero claro, no puedo hacerlo asi poruqe tengo que comprobar antes algunas cosas. Tambien he probado a crear un objeto conexionDB para cada consulta y no ha funcionado.

Resumiendo: el $idEncuesta es correcto y se comprueba, el codigo de "UPDATE..." tambien es bueno, solo se conecta y se trabaja con la tabla encuestas de la BD. Asi que no se donde falla, quizas en cuanto se hace el primer SELECT ya no deja trabajar más con esa tabla.

Bueno un saludo
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 17:11.