Bueno, vamos a analizar primero lo último que mencionas: El error de sintaxis devuelto por MySQL.
Si tomo el segmento del código completo sería:
Código PHP:
Ver original<?php
$sql = "insert into visitantes (nomape, direccion, email, pais, ciudad, telefono, informacion, comenta, ipad, fechain )
values ($_POST['nomape'], $_POST['direccion'], $_POST['email'], $_POST['pais'], $_POST['ciudad'], $_POST['telefono'], $_POST['informacion'], $_POST['comenta'], $_POST['ipad'] , $_POST['fechain'] )";
?>
Vamos a limpiar un poco este código, poniéndolo más legible para saber qué variables estáas trabajando (usar códigos limpios es la mejor manera de ver los problemas) :
Código PHP:
Ver original<?php
$sql = "INSERT ITO visitantes(";
$sql .= " nomape, ";
$sql .= " direccion, ";
$sql .= " email, ";
$sql .= " pais, ";
$sql .= " ciudad, ";
$sql .= " telefono, ";
$sql .= " informacion, ";
$sql .= " comenta, ";
$sql .= " ipad, ";
$sql .= " fechain ) ";
$sql .= "VALUES($_POST['nomape'], ";
$sql .= " $_POST['direccion'], ";
$sql .= " $_POST['email'], ";
$sql .= " $_POST['pais'], ";
$sql .= " $_POST['ciudad'], ";
$sql .= " $_POST['telefono'], ";
$sql .= " $_POST['informacion'], ";
$sql .= " $_POST['comenta'], ";
$sql .= " $_POST['ipad'] , ";
$sql .= " $_POST['fechain'] )";
?>
Con eso ya podemos ver que por ejemplo, los contenidos de las variables seguro que causan problemas, ya que estás creyendo que MySQL "entiende" PHP y que interpreta que una cadena es una cadena, y no otra cosa... Y eso no es cierto.
PHP y MySQL son cosas independientes, y cuando creas una sentencia SQL en PHP lo haces para que la librería de acceso a datos la envíe a la base, y la base entienda lo que quieres. Pero la base no recibe variables. Recibe una cadena de texto conteniendo una sentencia SQL, y nada más.
Suponiendo que los valores de las variables fuesen estos:
Cita: $_POST['nomape'] = Juan Perez
$POST['direccion'] = Camila O'Gorman', Nº 90
$_POST['email'] =
[email protected]
$_POST['pais'] = Argentina
$_POST['ciudad'] = Colonia Lola
$_POST['telefono'] = 05439897767
$_POST['informacion'] = "ninguna disponible"
$_POST['comenta'] = "lo que fuese"
$_POST['ipad'] = NULL
$_POST['fechain'] = 2013-03-26
Lo que en realidad recibiría MySQL Sería esto:
Código MySQL:
Ver originalINSERT INTO visitantes
(nomape
, direccion
, email
, pais
, ciudad, telefono, informacion, comenta, ipad, fechain )
Colonia Lola, 5439897767, "ninguna disponible", "lo que fuese", ,1984)
Lo que a todas luces está lleno de errores, que se producen porque los datos se combinaron con la consulta sin respetar la estructura del SQL.
Para ser una sentencia válida, debería haberse creado de esta forma:
Código MySQL:
Ver originalINSERT INTO visitantes
(nomape
, direccion
, email
, pais
, ciudad
, telefono
, informacion
, comenta
, ipad
, fechain
) VALUES('Juan Perez', 'Camila O\'Gorman, Nº 90', '[email protected]', 'Argentina', 'Colonia Lola', '05439897767', 'ninguna disponible', 'lo que fuese', ,'2013-03-26')
¿Se entiende?
La sentencia está mal creada. Las cadenas de texto y las fechas deben quedar entre apóstrofes, los apóstrofes internos deben estar escapados, y los teléfonos con cero inicial se deben tratar como cadenas de texto.
Del resto, aún no he revisado nada.