Adicionar en MySQL desde PHP

Nemmessis

Lanero Reconocido
Se unió
17 Sep 2003
Mensajes
283
Salu 2...
Alguien me puede ayudar con un pekeño enrredo ke tengo????
Estoy iniciando con PHP y MySQL , estoy tratando de adicionar inf. desde un formulario y me sale un error...
El código que utilizo para grabar es el siguiente:

mysql_query("insert into clientes (Codigo,...................) values ('$codigo','......................')",$link);
header("Location: ./listaclientes.php");
mysql_close($link);

el error que me sale en en la linea header("Location: ./listaclientes.php");
y cuando miro la DB lo unico que braba es un 0 en el campo código...
alguien me sabe decir en que estoy fallando????

Mil Gracias a Todos.....
 

Japo

Lanero Reconocido
Se unió
23 Jul 2003
Mensajes
148
para que está ultilizando el header("Location: ./listaclientes.php") ???
 

JulianD

Lanero Reconocido
Se unió
13 Abr 2001
Mensajes
9,589
Te recomiendo que:

1. Publiques todo el código o almenos la parte en la que crees que tienes el problema.

2. Nos coloques utilizando copiar & pegar el error exacto que te está saliendo. Si en el error hace referencia a una línea de código que no esté incluída en lo que colocaste en el punto 1, colocar esa línea de código también.

3. Si hay problema almacenando información, ejecutar DESCRIBE nombre_tabla; en el motor de MySQL y colocar esa información para ver la estructura de la tabla en la que estás intentando insertar la información.
 

Nemmessis

Lanero Reconocido
Se unió
17 Sep 2003
Mensajes
283
Salu 2............
Este es el código completo que debe grabar en la DB

<html>
<head><title>Grabar Contactos</title>
</head>
<body>
<?php

function Conectarse()
{
if (!($link=mysql_connect("localhost","","")))
{
echo "Error conectando a la base de datos .";
exit();
}
if (!mysql_select_db("portafolio",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}

$link=Conectarse();

mysql_query("insert into clientes (Codigo,TipoIdentificacion,Nombre,Pais,Provincia,Municipio,Direccion,Comentario) values ('$codigo','$id','$Nombre','$pais','$provincia','$municipio','$direccion','$comentario')",$link);
header("Location:listaclientes.php");
mysql_close($link);
?>

</body>
</html>

Los datos son enviados desde un formulário, y el error siempre sale en :
header("Location:listaclientes.php");

Cuando no pongo esta línea de todas formas no graba nada....

Gracias por sus ayudas...
 

Nemmessis

Lanero Reconocido
Se unió
17 Sep 2003
Mensajes
283
el error que veo en el explorer es :

Warning: Cannot modify header information - headers already sent by (output started at c:\wamp\www\portafolio\Html\grabarclientes.php:5) in c:\wamp\www\portafolio\Html\grabarclientes.php on line 26
la línea 26 es : header("Location:listaclientes.php");
 

La_PaRCa

Lanero Reconocido
Se unió
28 Mar 2004
Mensajes
243
Ok. Lo del error del header es porque los encabezados (headers) de HTTP se deben mandar ANTES que cualquier tipo de informacion. Como ya mandaste el texto que tiene el <HTML><HEAD>... el siempre te va a llorar porque queres mandar un encabezado despues de que ya mandaste informacion. Puedes hacer una de dos cosas:

1. Quitar todo el texto HTML y usar solo el header (igual no vas a mostrar ninguna pagina)
2. Cambiar el header por un javascript. Puedes cambiar todo el header por algo como

Código:
<script language="JavaScript">
<!--
window.location="laotrapagina.htm"
--> 
</script>

Ahora, acerca de por que no te esta funcionando el query, te recomiendo que no lo ejecutes directamente sino que lo guardes en un string y le hagas un echo a ver que te devuelve, algo como asi:

PHP:
$query="insert into clientes (Codigo,TipoIdentificacion,Nombre,Pais,Provincia,Municipio,Direccion,Comentario) values ('$codigo','$id','$Nombre','$pais','$provincia','$municipio','$direccion','$comentario')";
echo $query;

Luego miras bien ese query y ves que errores puede tener. Si aun asi no sabes, lo copias y lo ejecutas directamente en el cliente de MySQL.

Ahi quedo pendiente. Me cuenta.
 

JulianD

Lanero Reconocido
Se unió
13 Abr 2001
Mensajes
9,589
PAra el header debes de analizar bien tu programa y mirar exactamente cómo puedes mandar el encabezado ANTES de mantar el buffer de salida al browser.

El buffer de salida es cualquier cosa que envíes al browser y no sea un encabezado. Aunque no lo he probado, creo que puedes solucionar tu problema activando el buffer de salida y reteniéndolo en una variable hasta que estés seguro que no vas a necesitar enviar ningún encabezado. Cuando estés seguro, apagas el buffer y escupes al browser todo lo que hayas guardado.

Te recomiendo ver las funciones ob_start() y otras más que no recuerdo pero que www.php.net te ayudará a encontrar (busca ob_Start y seguro encontrarás las otras).
 
Arriba