Foros del Web » Programando para Internet » PHP »

Entrada duplicada para la clave 3 ¿?

Estas en el tema de Entrada duplicada para la clave 3 ¿? en el foro de PHP en Foros del Web. Buenas, me salta un error cuando relleno el formulario de un pedido. Me dice: Error de query: Entrada duplicada '' para la clave 3 Os ...
  #1 (permalink)  
Antiguo 22/05/2006, 03:54
 
Fecha de Ingreso: septiembre-2005
Mensajes: 374
Antigüedad: 12 años, 3 meses
Puntos: 0
Entrada duplicada para la clave 3 ¿?

Buenas, me salta un error cuando relleno el formulario de un pedido. Me dice:
Error de query: Entrada duplicada '' para la clave 3

Os dejo el codigo.Mi tabla de pedidos tiene una clave primaria llamada "pedidoid" que es autonumerico. Te pongo el insertar pedido(bastante largo) y la tabla de pedidos para que veas el codigo. Me he dado cuenta que al llegar al pedidoid numero 132 es cuando aparece el error.


Código PHP:
Código PHP:
function insertar_pedido($detalles_pedido

  global 
$HTTP_SESSION_VARS

   
//extraer detalles_pedido como variables 
  
extract($detalles_pedido); 


  
//poner la direccion de envio y su direccion normal 
  
if(!$nombre_envio&&!$direccion_envio&&!$ciudad_envio&&!$provincia_envio&&!$cp_envio&&!$usuario_envio
  { 
    
$nombre_envio $nombre
    
$direccion_envio $direccion
    
$ciudad_envio $ciudad
    
$provincia_envio $provincia
    
$cp_envio $cp
    
$usuario_envio $usuario
  } 

  
$con conexion_bd(); 
  
  
//inserta los datos de la direccion del cliente 
  
$query "select clienteid from clientes where   
            nombre = '$nombre' and direccion = '$direccion'  
            and ciudad = '$ciudad' and provincia = '$provincia'  
            and cp = '$cp' and usuario = '$usuario'"

  
$result mysql_query($query); 
  if(
mysql_numrows($result)>0
  { 
    
$cliente_id mysql_result($result0'clienteid'); 
  } 
  else 
  { 
    
$query "insert into clientes values 
            ('','$nombre','$direccion','$ciudad','$provincia','$cp','$usuario','','','','','','')"

    
$result mysql_query($query) or die('Error de query: '.mysql_error()); 
    if (!
$result
       return 
false
  } 
  
$query "select clienteid from clientes where   
            nombre = '$nombre' and direccion = '$direccion'  
            and ciudad = '$ciudad' and provincia = '$provincia'  
            and cp = '$cp' and usuario = '$usuario'"

  
$result mysql_query($query); 
  if(
mysql_numrows($result)>0
    
$clienteid mysql_result($result0'clienteid'); 
  else 
    return 
false;  
  
$fecha date('Y-m-d'); 
  
$query "insert into pedidos values 
            ('', $clienteid, "
.$HTTP_SESSION_VARS['precio_total'].", '$fecha', 'Pendiente', '$nombre_envio', 
             '$direccion_envio','$ciudad_envio','$provincia_envio','$cp_envio', 
              '$usuario_envio')"

  
$result mysql_query($query); 
  if (!
$result
    return 
false

  
$query "select pedidoid from pedidos where  
               clienteid = $clienteid and  
               importe > "
.$HTTP_SESSION_VARS['precio_total']."-.001 and 
               importe < "
.$HTTP_SESSION_VARS['precio_total']."+.001 and 
               fecha= '$fecha' and 
               estado_pedido = 'Pendiente' and 
               nombre_envio = '$nombre_envio' and 
               direccion_envio = '$direccion_envio' and 
               ciudad_envio = '$ciudad_envio' and 
               provincia_envio = '$provincia_envio' and 
               cp_envio = '$cp_envio' and 
               usuario_envio = '$usuario_envio'"

  
$result mysql_query($query); 
  if(
mysql_numrows($result)>0
    
$pedidoid mysql_result($result0'pedidoid'); 
  else 
    return 
false;  


  
// inserta todos los vinos 
  
foreach($HTTP_SESSION_VARS['carro'] as $vinosid => $cantidad
  { 
    
$detalles info_vinos($vinosid); 
    
$query "delete from articulos_pedido where   
              pedidoid = '$pedidoid' and vinosid =  '$vinosid'"

    
$result mysql_query($query); 
    
$query "insert into articulos_pedido values 
              ('$pedidoid', '$vinosid', "
.$detalles['precio'].", $cantidad)"
    
$result mysql_query($query); 
    if(!
$result
      return 
false
  } 

  return 
$pedidoid


?> 

TABLA PEDIDOS:

CREATE TABLE `pedidos` (
`pedidoid` int(10) unsigned NOT NULL auto_increment,
`clienteid` int(10) unsigned NOT NULL default '0',
`importe` float(6,2) default NULL,
`fecha` date NOT NULL default '0000-00-00',
`estado_pedido` varchar(10) default NULL,
`nombre_envio` varchar(40) NOT NULL default '',
`direccion_envio` varchar(40) NOT NULL default '',
`ciudad_envio` varchar(20) NOT NULL default '',
`provincia_envio` varchar(20) default NULL,
`cp_envio` varchar(10) default NULL,
`usuario_envio` tinytext NOT NULL,
PRIMARY KEY (`pedidoid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=132 ;
  #2 (permalink)  
Antiguo 30/05/2006, 11:40
 
Fecha de Ingreso: mayo-2006
Mensajes: 3
Antigüedad: 11 años, 6 meses
Puntos: 0
Campo auto_increment

Hola,
Veo que tu error está al tratar de insertar un valor '' cuando debe ser 0 ya que es auto_increment.
Cambia este valor por un cero y veras:

$fecha = date('Y-m-d');
$query = "insert into pedidos values
('', $clienteid, ".$HTTP_SESSION_VARS['precio_total'].", '$fecha', 'Pendiente', '$nombre_envio',
'$direccion_envio','$ciudad_envio','$provincia_env io','$cp_envio',
'$usuario_envio')";

ARREGLADO:

$fecha = date('Y-m-d');
$query = "insert into pedidos values
(0, $clienteid, ".$HTTP_SESSION_VARS['precio_total'].", '$fecha', 'Pendiente', '$nombre_envio',
'$direccion_envio','$ciudad_envio','$provincia_env io','$cp_envio',
'$usuario_envio')";
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 10:35.