Foros del Web » Programando para Internet » PHP »

Problema complejo...

Estas en el tema de Problema complejo... en el foro de PHP en Foros del Web. Buenas, a ver si consigo explicarme.. tengo una aplicación de usuarios. estos se dan de alta, y los datos se guardan en una tabla usuarios_nuevos. ...
  #1 (permalink)  
Antiguo 21/03/2003, 06:08
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
Problema complejo...

Buenas, a ver si consigo explicarme..

tengo una aplicación de usuarios. estos se dan de alta, y los datos se guardan en una tabla usuarios_nuevos. hasta aqui bien. esta no es la tabla buena de usuarios, sino la buena es usuarios (es pq hasta q el admin no confirme los datos, no puede darse de alta en la tabla final).

entonces el admin, tiene un script (nuevos_socios) en el cual se muestran los nuevos usuarios que se van introduciendo en la base de datos 'virtual'. luego, el admin confirma los datos y los guarda en la base de datos final.

mi problema es el siguiente: una vez se han introducido los datos en la nueva tabla, quiero que se borre automáticamente los datos de la tabla virtual, y no lo hace. hago lo siguiente:

<a href="borrar_confirmados.php?nombre=".$row["nombre"].">Volver</a>

entonces llamo a borrar_confirmados.php y hago lo siguiente:

$sql="DELETE FROM usuarios_nuevos WHERE nombre='$nombre'";
$query=mysql_db_query("creasites_net",$sql) or die("No se ha realizado la oeración <b>'$sql'</b>");
if($query)
{

echo '<font face="Verdana, Arial, Helvetica, sans-serif" size="1">El soci ha estat esborrat amb èxit <a href="borrar_usuarios.php">Tornar</a></font>';
}

pero no me borra nada. en el listado de usuarios nuevos, me sigue apareciendo el registro, y me gustaria que desapareciera.

Salu2 y Gracias
  #2 (permalink)  
Antiguo 21/03/2003, 06:47
Avatar de paky  
Fecha de Ingreso: septiembre-2002
Mensajes: 127
Antigüedad: 15 años, 3 meses
Puntos: 0
Prueba con esto:

Código PHP:
$sql="DELETE FROM usuarios_nuevos WHERE nombre='$nombre'";
$query=mysql_db_query("$sql",$link) or die("No se ha realizado la oeración <b>'$sql'</b>"); 
Suerte,
  #3 (permalink)  
Antiguo 21/03/2003, 09:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No sé para que tienes dos tablas de "usuarios" y "ususarios_nuevos" ..

Con usar un campo extra en tu tabla "usuarios" a modo de "flag" (bandera) que indique si está activo el usurio o no (fué o no fué confirmado por el administrador) te evitaría muchos problemas y tan solo tendrias que hacer un "SELECT" con condición de ese campo campo "flag". Si es validado el flag lo dejas a "validado" o "activo" .. si no, haces el "DELETE" y no un movimiento de datos desde tu registro de la tabla "usuario_nuevos" a la tabla final "usuarios" ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 21/03/2003, 10:35
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
Gracias a los 2 por responder. Cluster, es muy interesante tu propuesta, pero hace poco he empezado con php, y no entiendo lo que me dices. q es eso del flag? como podria hacerlo? me puedes ayudar un poco mas??

Salu2 y Gracias
  #5 (permalink)  
Antiguo 21/03/2003, 10:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Flag es "bandera" .. en "informatica" se usa mucho para determinar un estado u otro (normalmente booleanos TRUE/FALSE) pero podrian ser mas ..

El caso que en tu tabla actual de usuarios crea un nuevo campo .. tipo INT(1) por ejemplo .. para poder usar un 1 o 0 .. Tambien podria ser un VARCHAR y darle algun valor tipo "activo" o "no activo" (esto consume mas espación en tu BD .. total solo nos interesa un "identificativo" . nada mas)

En este caso .. sería mejor incluso usar un campo de tu tabla tipo ENUM('1','0') .. Para que solo tenga uno de estos valores .. Este tipo de campos lo puedes crear facilmente con tu administrador de Mysql favorito (phpMyadmin por ejemplo)

El proceso de "pre-registro" sería:

1) el usuario se "pre-registra" .. en tu BD .. en la tabla usuarios guardas via un INSERT todos sus datos y el campo "flag" o como lo quieras llamar le das valor fijo inicia a '0' (o el nombre que quieras darle para identificarlo como "no revisado por un administrador" ..

2) .. En todo tu sitio deberas tener en cuenta ese "flag" haciendo consultas tipo:

SELECT * FORM usuarios WHERE flag='1'

Osese .. "que el estado del registro(s) ha sido validado por un administrado (el adminstrador será el que ponga ese flag a 1 via un UPDATE a ese registro y a ese campo concreto.

3) en los listados (SELECT) de tu panel de administración .. las consultas serán del tipo:

SELECT * FORM usuarios WHERE flag='0'

Osese, mostrar los registros que no han sido validados ... En ese punto .. si quiere el admintrador puede borrrar dicho registro (DELETE) o dejarlo como "no revisado" (flag=0) para revisarlo mas tarde ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 21/03/2003, 10:54
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
Paky, he probado lo que me dijistes, y me da el error en el delete. supongo que la variable estará mal pasada, no? es como si no recibiera la variable.
  #7 (permalink)  
Antiguo 21/03/2003, 10:59
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
Gracias por tu explicación Cluster, está perfecta y la he entendido. pero de esta manera, la base de datos se cargará igual, no?¿ lo que no interesa es que la bd se cargue con archivos que no sirven, no?

perdona mi ignorancia, pero estoy empezando a trabajar con php. no crees que el metodo de las 2 tablas, quita posibles registros inútiles de la bd??

Gracias!
  #8 (permalink)  
Antiguo 21/03/2003, 11:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si tienes un administrador que va a revisar esos registros .. da igual q sea en una tabla o en dos tablas ..

Esos registros inutiles los vas a tener en una u otra tabla .. Es cierto que si usas dos tablas .. la tabla que mas uses (usuarios) estará "limpia" y con menos datos será mas facil y ligero manejarla (en tiempos de proceso) .. pero igual en tu BD vas a tener esos datos en otra tabla hasta q pase el administrador y los elimine ..

No sé tampoco si cada registro nuevo (cada usuario) se va a validar por el "adminstrador" manualmente .. pero se podría hacer automatico si son registros tipo "confirmación por e-mail" .. donde se deja un tiempo en el que puede validar su cuenta confirmando el e-mail .. En esos casos lo que se guarda como "flag" es la Fecha de "pre-registro" y se usa para validarlo con la fecha actual ejecutando alguna rutina de mantencion de tu tabla usuarios cada cierto tiempo ..

De todas formas .. bajo el criterio de ese "administrador" manualmente o de otro medío automático vas a Borrar literalmente (DELETE) los registros que no necesties. Solo vas a tener "dando vueltas" los registros que NO haya validado el administrador todavía y con la lógica de consultas que te detallé .. tanto al administrador se le va a ofrecer solo los registros que no ha validado (flag=0) .. como para el resto de tu aplicación .. solo "jugará" con los datos de los registros validados (flag=1) ..

Es cierto tambien q estar haciendo un "WHERE" (condición) siempre va a ralentizar las consultas minimamente .. Tal vez para este caso tu opción de "dos tablas" sea mas eficiente .. Pero si hablamos de mas estados posibles no sería tan optimo ..

Yo igual prefiero la opción de una tabla y usar flag .. Sobre todo porque el estado podria ser algo tipo "usuario no validado" .. "usuario valido" .. "usuario deshabilitado" .. etc. Depende de la aplicación porsupuesto .. pero añadir un nuevo flag en algun momento es facil modificar unas pocas consultas SQL q no hacer unos cuantos scripts que getionen el tema del "traspaso" de datos entre tablas ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 21/03/2003, 12:48
Avatar de paky  
Fecha de Ingreso: septiembre-2002
Mensajes: 127
Antigüedad: 15 años, 3 meses
Puntos: 0
Supongo que será por la variable. Tienes que asegurarte que $nombre tome valor.

Saludos,
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 18:17.