Foros del Web » Programando para Internet » PHP »

es correcta esta forma de añadir datos y buscarlos a la vez

Estas en el tema de es correcta esta forma de añadir datos y buscarlos a la vez en el foro de PHP en Foros del Web. hola me pregunto si es correcto hacer lo siguiente, o si hay forma de optimizarlo Código: //voy a buscar si el usuario esta registrado con ...
  #1 (permalink)  
Antiguo 23/10/2008, 17:15
 
Fecha de Ingreso: noviembre-2002
Mensajes: 746
Antigüedad: 21 años, 5 meses
Puntos: 6
es correcta esta forma de añadir datos y buscarlos a la vez

hola

me pregunto si es correcto hacer lo siguiente, o si hay forma de optimizarlo

Código:
//voy a buscar si el usuario esta registrado con ese email
$consulta = "SELECT idusuario,email FROM usuarios WHERE email='$email'";
$resultado = mysql_query($consulta);
$fila= mysql_fetch_array ($resultado);
$resultados = mysql_num_rows($resultado);

if ($resultados < 1){ // si no esta este email en la base de datos lo añado como nuevo usuario
$consulta = "INSERT INTO usuarios (email,fecha) VALUES ('$email','$fecha')";
$resultado = mysql_query($consulta);
$consulta = "SELECT idusuario FROM usuarios WHERE email='$email'";
$resultado = mysql_query($consulta);
$fila= mysql_fetch_array ($resultado);
}
$idusuario = $fila['idusuario'];

//ahora que ya es un usuario, busco su id de usuario esta en otra tabla
$consulta = "SELECT * FROM imagenes_carpetas WHERE idusuario='$idusuario'";
$resultado = mysql_query($consulta);
$fila= mysql_fetch_array ($resultado);
$resultados = mysql_num_rows($resultado);

if ($resultados < 1){ // si no esta dado de alta en esta tabla lo doy de alta y recojo su id para usar esa tabla
$consulta = "INSERT INTO imagenes_carpetas (idusuario) VALUES ('$idusuario')";
$resultado = mysql_query($consulta);
$consulta = "SELECT * FROM imagenes_carpetas WHERE idusuario='$idusuario'";
$resultado = mysql_query($consulta);
$fila= mysql_fetch_array ($resultado);
}
$idcarpeta = $fila['idcarpeta'];

la duda que tengo es, si es optimo añadir un dato y buscarlo inmediatamente?

lo hariais de otra forma?


gracias a todos
  #2 (permalink)  
Antiguo 23/10/2008, 20:08
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: es correcta esta forma de añadir datos y buscarlos a la vez

Hola,

Si alguien no está añadido a la base de datos de usuarios, ¿es posible que esté en la otra base de imagenes_carpetas? Porque si sabes seguro que tampoco estará, entonces puedes aprovechar para añadirlo en el mismo paso en el que lo añades a la primera, y así te ahorras algo.

Por otro lado, si está dado de alta, ¿tendrá siempre también su correspondiente entrada en la otra tabla? Porque en ese caso podrías hacer una única consulta con un INNER JOIN, en lugar de hacerlas por separado.

Y por último, si la relación es 1 a 1 (es decir que por cada $idusuario de la tabla usuarios sólo hay también un registro en la tabla imagenes_carpetas, ¿para qué mantener dos tablas cuando podría estar todo agrupado en una sóla? Simplificarías mucho.

De todas formas, esto no tiene mucho que ver con PHP.

En cuanto al planteamiento, quedaría más estructurado con un esquema similar a esto:

funcion recuperar_datos_usuario() {
hacer_consultas
devolver true si hay algo o false si no existe
}

función dar_de_alta() {
incluirlo_en_las_dos_tablas()
recuperar_datos_usuario()
}

si ( ! recuperar_datos_usuario() ) {
dar_de_alta()
}

...


Un saludo.
  #3 (permalink)  
Antiguo 24/10/2008, 03:14
 
Fecha de Ingreso: noviembre-2002
Mensajes: 746
Antigüedad: 21 años, 5 meses
Puntos: 6
Respuesta: es correcta esta forma de añadir datos y buscarlos a la vez

hola Deschamps

el tema de funciones esta bien pero es lo mismo que hacerlo sin ellas, el tema es saber si de esta forma existe riesgo de añadir un registro y que en momento seguido de la consulta no este aun.

a tus preguntas:
un usuario puede darse de alta por otros medios, y no ser usuario de imagenes_carpetas,

es imposible estar en inmagenes_carpetas sin estar en usuarios ya que necesito el id de usuario para dar su alta correctamente

es cierto que en este proceso si el usuario no esta en imagenes_carpetas ni en usuarios, se podria en este caso añadir todo a la vez, pero habra casos que si este en usuarios y no en carpetas, por lo tanto decide hacer inserciones separadas y fuera de las condiciones.

sobre en tema de la cantidad de idcarpetas por idusuario, la idea es que pueda crear en otro paso mas carpetas para los usuarios, en la mayoria de los casos seria relacion 1-1 como tu dices pero en otros pocos seria 1-2 o 1-3 o incluso 1-10 donde quiza ponga el limite

Gracias por todo
  #4 (permalink)  
Antiguo 24/10/2008, 03:48
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Respuesta: es correcta esta forma de añadir datos y buscarlos a la vez

Si lo que quieres es obtener la clave autonumerica generada en la ultima insercion, tienes mysql_insert_id() www.php.net/mysql_insert_id .
  #5 (permalink)  
Antiguo 24/10/2008, 05:34
 
Fecha de Ingreso: noviembre-2002
Mensajes: 746
Antigüedad: 21 años, 5 meses
Puntos: 6
Respuesta: es correcta esta forma de añadir datos y buscarlos a la vez

Cita:
Iniciado por DarkJ Ver Mensaje
Si lo que quieres es obtener la clave autonumerica generada en la ultima insercion, tienes mysql_insert_id() www.php.net/mysql_insert_id .
vaya! pense que no podria haber algo asi. Es sin duda un avanze importante en mi script, ya que se quedara en casi la mitad ..


otra cosa que se me ocurre mejorar quitando el mysql_num_rows(), existe alguna otro forma mejor de comprobar si la consulta devuelve o no resultados, realemente el numero de resultados no me interesa

gracias voy a probarlo

Última edición por suntus; 24/10/2008 a las 06:04
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 19:57.