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

Duda

Estas en el tema de Duda en el foro de Mysql en Foros del Web. Hola, buenas tengo un problema, tengo una base de datos, en la cual se supone que un empleado puede tener muchas tareas, pero cuando en ...
  #1 (permalink)  
Antiguo 22/05/2006, 11:09
 
Fecha de Ingreso: abril-2005
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
Duda

Hola, buenas tengo un problema, tengo una base de datos, en la cual se supone que un empleado puede tener muchas tareas, pero cuando en la tarea, introduzco el campo nombre del empleado, si es igual a otro que ya tengo no me deja, xq puede ser?? la funcion q me inserta tareas es esta:

function insert_agenda($nombre, $dia, $hora, $razon)

{
$conn = db_connect();


$query = "select *
from agenda
where nombre='$nombre'";
$result = $conn->query($query);
if (!$result || $result->num_rows!=0)
return false;

$query = "insert into agenda values
('', '$nombre', '$dia', '$hora', '$razon','')";

$result = $conn->query($query);
if (!$result)
return false;
else
return true;
}


Haber si podeis solucionarme el problema, gracias
  #2 (permalink)  
Antiguo 22/05/2006, 11:29
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
El campo que almacena el nombre en la tabla puede ser el problema, puedes haberlo especificado como UNIQUE, y por eso no te acepta....
Saludos...
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #3 (permalink)  
Antiguo 23/05/2006, 01:35
 
Fecha de Ingreso: abril-2005
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
no lo tengo como UNIQUE, no puede ser otra cosa?
  #4 (permalink)  
Antiguo 23/05/2006, 07:39
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 5 meses
Puntos: 5
Que error te devuelve, por que no recuperas el error, no conozco como esta echa tu clase, por que no pruebas

$result = $conn->query($query);
if (!$result)
{
//Aqui le pongo esto, pero no se como manejas los errores
//Pero sin el error dificilmente se sepa que sucede
echo "error en consulta".$conn->errorMsg();
return false;
}
else
return true;
}

es una sugerencia, si no tienes un metodo que recupera el error, no es mala idea tenerlo, ya que mas adelante te ayudara a depurar posibles errores, saludos, cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #5 (permalink)  
Antiguo 24/05/2006, 09:39
 
Fecha de Ingreso: abril-2005
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
Duda

Mira, mi codigo hace esto, inserto con este script

insert_empleado.php

<?php

// include function files for this application
require_once('book_sc_fns.php');
session_start();

do_html_header('Añadiendo un empleado');
if (check_admin_user())
{
if (filled_out($_POST))
{

$nombre = $_POST['nombre'];
$apellidos = $_POST['apellidos'];
$direccion = $_POST['direccion'];
$dni = $_POST['dni'];
$telefono = $_POST['telefono'];
$email = $_POST['email'];
$ciudad = $_POST['ciudad'];
$puesto = $_POST['puesto'];
$f_nac = $_POST['f_nac'];
$f_ini_con = $_POST['f_ini_con'];
$f_fin_con = $_POST['f_fin_con'];

if(insert_empleado($nombre, $apellidos, $direccion, $dni, $telefono, $email, $ciudad, $puesto, $f_nac, $f_ini_con, $f_fin_con))
echo "El empleado '".stripslashes($nombre)."' fue añadido a la base de datos.<br />";
else
echo "El empleado '".stripslashes($nombre).
"' no pudo ser añadido a la base de datos.<br />";
//este es el error q me sale
}
else
echo 'No has rellenado el formulario correctamente. Inténtalo de nuevo.';
do_html_url('admin.php', 'Vuelve al menú del administrador');
}
else
echo 'No estás autorizado a ver esta página.';

do_html_footer();

?>

q llama a la funcion inser_empleado, q es esta:

function insert_empleado($nombre, $apellidos, $direccion, $dni, $telefono, $email, $ciudad, $puesto, $f_nac, $f_ini_con, $f_fin_con)
{
$conn = db_connect();

$query = "select *
from servicios
where nombre='$nombre'";

$result = $conn->query($query);
if (!$result || $result->num_rows!=0)
return false;

$query = "insert into servicios values
('', '$nombre', '$apellidos', '$direccion', '$dni', $telefono, '$email', '$ciudad', '$puesto', '$f_nac', '$f_ini_con', '$f_fin_con')";

$result = $conn->query($query);
if (!$result)
return false;
else
return true;
}

y no se, xq coño, no me deja poner el mismo nombre, ni en clientes, ni en agenda, ni en nada, leches
  #6 (permalink)  
Antiguo 24/05/2006, 09:46
 
Fecha de Ingreso: enero-2006
Mensajes: 22
Antigüedad: 18 años, 2 meses
Puntos: 0
Corregidme si me equivoco, pero..
if (!$result || $result->num_rows!=0)
return false;
Lo que estas haciendo en $result->num_rows!=0 es devolver false si la query ha devuelto resultados, es decir, si el nombre ya esta introducido. Creo que ese es tu problema, por eso no te permite duplicar.
  #7 (permalink)  
Antiguo 24/05/2006, 09:59
 
Fecha de Ingreso: abril-2005
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
entonces como lo soluciono?? q tengo q poner? x favor dimelo, xq llevo dos dias dandome de hostias contra una pared.
  #8 (permalink)  
Antiguo 25/05/2006, 02:21
 
Fecha de Ingreso: enero-2006
Mensajes: 22
Antigüedad: 18 años, 2 meses
Puntos: 0
Pues deberias quitar la condicion de $result->num_rows!=0 y dejar solamente
if (!$result )
  #9 (permalink)  
Antiguo 25/05/2006, 02:52
 
Fecha de Ingreso: abril-2005
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
ya está solucionado, tenia mal la consulta del select, gracias de todas formas, en vez de hacer nombre='$nombre', tenia q hacer id='$id'.
  #10 (permalink)  
Antiguo 25/05/2006, 03:15
 
Fecha de Ingreso: enero-2006
Mensajes: 22
Antigüedad: 18 años, 2 meses
Puntos: 0
De todas formas aconsejarte que revises la estructura de tu base de datos, porque no la tienes bien diseñada. No es normal que cada vez que metas un contrato de un empleado introduzcas sus datos personales, vas a tener muchos datos duplicados. Debes crearte una tabla de empleados con sus datos personales, nombre, apellidos, cif... y otra de servicios en el que insertes que empleado realiza el servicio.
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:20.