Foros del Web » Programando para Internet » PHP »

error que no entiendo, que es? Duplicate entry '0' for key 1....¿?

Estas en el tema de error que no entiendo, que es? Duplicate entry '0' for key 1....¿? en el foro de PHP en Foros del Web. hola a todos los aqui presentes, tengo una pagina a la cual llamo por un include, de esta manera: Código PHP: <a href="index.php?id=firmar">Firmar libro</a> <?php      $id  =  ...
  #1 (permalink)  
Antiguo 07/11/2006, 15:01
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 9 meses
Puntos: 638
Exclamación error que no entiendo, que es? Duplicate entry '0' for key 1....¿?

hola a todos los aqui presentes, tengo una pagina a la cual llamo por un include, de esta manera:
Código PHP:
<a href="index.php?id=firmar">Firmar libro</a>
<?php 
    $id 
$_GET['id'];
    switch (
$id) {
    case 
"firmar": include('firmar.php');
    break;
    } 
    
?>
script que encontre en este mismo foro, y me devuelve este error que mensiono en el titulo de mi post:

Duplicate entry '0' for key 1

la pagina firmar.php, tiene un formulario en la que el usuario plasmara su firma en un libro de visitas, bla, bla, bla.....
pero que siempre da el mismo error y ni siquiera introduce los datos en la tabla correspondiente............¿?
como dato adicional: estoy usando dreamweaver 8 y he hecho el query tal y como lo hago siempre con los demas formularios del sitio que estoy haciendo, ya probe poner el formulario en la misma pagina, sin el include, y nada.....
aqui les doy el codigo hecho por dreamweaver:

Código PHP:
<?php
function GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}

$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
  
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "firmar_libro")) {
  
$insertSQL sprintf("INSERT INTO libro_visitas (nombre, email, url, firma, fecha, `date`) VALUES (%s, %s, %s, %s, %s, %s)",
                       
GetSQLValueString($_POST['nombre'], "text"),
                       
GetSQLValueString($_POST['email'], "text"),
                       
GetSQLValueString($_POST['url'], "text"),
                       
GetSQLValueString($_POST['firma'], "text"),
                       
GetSQLValueString($_POST['fecha'], "text"),
                       
GetSQLValueString($_POST['date'], "date"));

  
mysql_select_db($database_palacio_db_conect$palacio_db_conect);
  
$Result1 mysql_query($insertSQL$palacio_db_conect) or die(mysql_error());

  
$insertGoTo "index.php?id=firmar#firmar";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
    
$insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$insertGoTo));
}
?>
todo esto esta en la pagina firmar.php, tambien lo probe en la pagina desde la cual hago el llamado, y siempre lo mismo.

espero como siempre resivir la ayuda de ustedes.
gracias.
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #2 (permalink)  
Antiguo 07/11/2006, 15:19
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
De acuerdo

Pues por lo que comentas este error se debe a que alguno de tus campos, dentro de la base de datos, lo estableciste como unique, por lo que al querer almacenar la información dentro de algun campo, este ya existe. Elimina esta propiedad.

Saludillos.
  #3 (permalink)  
Antiguo 08/11/2006, 07:29
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 9 meses
Puntos: 638
hola mauled, eso pense en algun momento, que tiene que ver con algo que anda mal en la bd, aqui pongo la tabla a ver si me das un norte:
Código PHP:
-- 
-- 
Estructura de tabla para la tabla `libro_visitas`
-- 

CREATE TABLE `libro_visitas` (
  `
idlibroint(11NOT NULL,
  `
nombrevarchar(50NOT NULL,
  `
emailvarchar(50) default NULL,
  `
urlvarchar(255NOT NULL,
  `
firmavarchar(255NOT NULL,
  `
fechavarchar(100NOT NULL,
  `
datedate NOT NULL,
  `
revisadovarchar(10) default NULL,
  
PRIMARY KEY  (`idlibro`)
ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- 
-- 
Volcar la base de datos para la tabla `libro_visitas`
-- 

INSERT INTO `libro_visitasVALUES (0'rogertm''''''''''0000-00-00'''); 
a ver si notas algo, por que yo creo verlo todo bien, desde mi punto de vista bien novato, claro! a veces las cosas estan tan claras que no las vemos.
gracias anyway

saludos.
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #4 (permalink)  
Antiguo 08/11/2006, 07:41
 
Fecha de Ingreso: mayo-2005
Mensajes: 188
Antigüedad: 19 años
Puntos: 6
Hola rogertm. El problema es que no has declarado el campo "idlibro" de tipo auto_increment. Así, cuando haces el INSERT, la base de datos toma como valor el valor por defecto que tienen los campos de tipo INT, que es el 0. Pero ya tienes un registro con idlibro = 0, por lo que todos los INSERTs posteriores te darán error.

Lo único que debes hacer es declarar "idlibro" como AUTO_INCREMENT (nunca recuerdo exactamente cómo se escribe)
  #5 (permalink)  
Antiguo 08/11/2006, 10:51
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 9 meses
Puntos: 638
De acuerdo

YA...!
muchas gracias, era exactamente eso, ahora ya todo esta muy bien.
como dije antes:
a veces las cosas estan tan claras que no las vemos.
saludos
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
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.
Tema Cerrado

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 11:28.