Enviar datos de Php a Mysql

Y amigas de todoexpertos, tengo el siguiente inconveniente estoy desarrollando una página web en Dreamweaver con lenguaje de programación PHP haciendo uso de la herramienta XAMPP que trae el Apache, Mysql, Mercury y Filezilla; Tengo la base de datos en Mysql que se accide por internet con el phpmyadmin, pero no he podido enviar los datos que se cargan mediante formulario del dreamweaver a la base de datos, el ejemplo es muy simple y lo conseguí de internet aplicándolo a mi proyecto,,, pero a pesar de que no hay errores en el código no me envía los datos a la base de datos que es lo que necesito, este es el código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Hola Mundo</title>
</head>
<body>
<p><font face="Arial, Helvetica, sans-serif"></font></p>
<form id="form2" name="form2" method="post" action="Prueba.php"> <!Prueba.php es la pagina que esta detras-->
<label for="Nombre2">Nombre</label>
<input type="text" name="Nombre" id="Nombre" />
</form>
<p>
<label for="Email">Email</label>
<input type="text" name="Email" id="Email" />
</p>
<p>
<label for="Pais_Ciudad">Pais_Ciudad</label>
<input type="text" name="Pais_Ciudad" id="Pais_Ciudad" />
</p>
<input type="submit" name="valider" value="Enviar" />
<?php
// datos de configuracion
$ip = "localhost";
//$ip = 'localhost';
$usuario = "root";
$password = "califele2011";
$db_name = "omnilife";
// conectamos con la db
$conn = mysql_connect($ip,$usuario,$password) or die();
// seleccionamos la base de datos
$huboerror = mysql_select_db($db_name,$conn) or die();
// si se envia el formulario
if ( !empty($_POST['submit']) ) {
$query = "INSERT INTO 'boletin' (Nombre,Email,Pais_Ciudad) values ('{$_POST['Nombre']}','{$_POST['Email']}','{$_POST['Pais_Ciudad']}')";
$response = mysql_query($query, $conn);
}
?>
<br>
<br><br>
</body>
</html>
Respuesta
1
Bueno por lo que veo tu estas grabando los datos en la misma página en donde esta el formulario, ahora bien... el formulario en el Action dice Prueba.php.. ¿Ese es otro archivo o el mismo?
Trata de explicar un poco más, yo te recomiendo trabajar con 2 archivos, uno que contenga el formulario en el cual enviaras los datos y otro para recibir y procesar los datos que vienen por post del formulario.

1 respuesta más de otro experto

Respuesta
1
En tu archivo prueba.php la cual le estas indicando al formulario de action.
Coloca lo siguiente:
Como le indicas en el form método POST entonces las variables llegan igual por POST si fuera GET pues ponemos GET en la llegada.
<?Php
include('../seguridad.php');//lo uso para conectarme a mi DB
$ciudad = $_POST['ciudad'];
$dpt = $_POST['dpt'];
$user = $_SESSION['login'];
$date_add = date('Ymd');
if (mysql_query("INSERT INTO tbl_ciudad (ciudad,dpt,user,date_add) VALUES ('$ciudad','$dpt','$user','$date_add')")){
echo 'Se agrego con exito la ciudad: '.$ciudad.' - '.$dpt;
} else {
echo "ERROR: no se pudo crear la ciudad. Contacte con el administrador";
}
?>
Hola muchas gracias por tu interés... desafortunadamente acomode el código que usted me envío a mi proyecto e incluso cambie Get por Session y he tenido los siguientes inconvenientes:
1. En dreamweaver me dice la aplicacion en una franja que dice "This Page may have dinamically - related files that con only be discovered by the server". algo asi que los archivos son desconocidos por el servidor, ademas me aparecen los siguientes errores, ya en la ejecucion de la pagina web:
Notice: Undefined variable: _SESSION in D:\xampp\htdocs\Prueba.php on line 67
Warning: include(../Prueba.php) [function.include]: failed to open stream: No such file or directory in D:\xampp\htdocs\Prueba.php on line 70
Warning: include() [function.include]: Failed opening '../Prueba.php' for inclusion (include_path='.;D:\xampp\php\PEAR') in D:\xampp\htdocs\Prueba.php on line 70
Notice: Undefined index: Nombre in D:\xampp\htdocs\Prueba.php on line 71
Notice: Undefined index: Email in D:\xampp\htdocs\Prueba.php on line 72
Notice: Undefined index: Pais_Ciudad in D:\xampp\htdocs\Prueba.php on line 73
ERROR: no se pudo crear la ciudad. Contacte con el administrador
De nuevo gracias por su atención y ayuda.
Ja ja.. perdoname! Pero tienes razón se me olvido quitarte la variable sesión es que ese código que te pase es un trozo de mi Base de datos en la cual pues.. tienen que iniciar sesión para llegar allí. Te paso un código que le acabo de enviar a otra persona. Lo que se intenta allí es crear registro en una DB Mysql:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>..:: Crear registro en una DB ::..</title>
<style type="text/css">
td {text-align: center;}
table {text-align: left;}
</style>
</head>
<body>
<p><font face="Arial, Helvetica, sans-serif"></font></p>
<form id="form2" name="form2" method="POST" action="add_a_mysql.php">
<table width="200" border="0" align="center">
<tr>
<td>Nombre</td>
<td><input name="name" type="text" id="name" size="50" /></td>
</tr>
<tr>
<td>Email</td>
<td><input name="email" type="text" id="email" size="50"/></td>
</tr>
<tr>
<td>Pais/Ciudad</td>
<td><input name="ciudad" type="text" id="ciudad" size="50" /></td>
</tr>
<tr>
<td colspan="2"><hr /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="submit" value="Enviar" /></td>
</tr>
</table>
</form>
<?php
$valida = true;
if (empty($_POST['name'])){echo "<b>No se especifico nombre</b><br/>";$valida = false;}
if (empty($_POST['email'])){echo "<b>No se especifico E - mail</b><br/>";$valida = false;}
if (empty($_POST['ciudad'])){echo "<b>No se especifico asunto</b><br/>"; $valida = false; }
if ($valida == true){
echo "aqui creas tu registro";
function Conectarse(){
if (!($link=mysql_connect("localhost","USUARIO","CONTRASEÑA"))) {
echo "Error conectando a la base de datos. Por favor comunique con el administrador ";
exit();
}
if (!mysql_select_db("TU BASE DE DATOS",$link))
{
echo "Error seleccionando la base de datos. Por favor comunique con el administrador";
exit();
}
return $link;
}
$link = Conectarse();
$name = $_POST['name'];
$email = $_POST['email'];
$ciudad = $_POST['ciudad'];
if (mysql_query("INSERT INTO tbl_MITBALA (Nombre,Email,Pais_Ciudad) values ('$name','$email','$ciudad')",$link)){
echo "Registro agregado exitosamente";
} else {
Echo "ERROR: se genero un error intentando crear elregistro en la base de datos... Por favor contacte con el Administrador.";
}
mysql_close($link); //cierra la conexion
}
// Cortesia JuanM
?>
<br>
<br><br>
</body>
</html>
Hola Muchas gracias por su ayuda, de nuevo agradezco el tiempo y esfuerzo que has dedicado a ayudarme pero veo el siguiente problema cuando doy clic en el botón:
¡Objeto no encontrado!
El enlace requerido no ha sido localizado en este servidor. El enlace en la página referente parece tener algún error o ha expirado. Por favor comunique al autor de la página el error.
Por favor contacte con el webmaster en caso de que usted crea que existe un error en el servidor.
Error 404
Localhost
31/08/2011 03:30:08 p.m.
Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.4 mod_perl/2.0.4 Perl/v5.10.1
Hay que tener ern cuenta que cuando doy click en el botón tengo el Apache, el Mysql Activo mediante la herramienta Xampp..
¿Qué pasara? ..
Gracias
Hola muchas gracias de nuevo, desafortunadamente al momento de dar click en el botón me aparece la página web en blanco diciéndome lo siguiente:
¡Objeto no encontrado!
El enlace requerido no ha sido localizado en este servidor. El enlace en la página referente parece tener algún error o ha expirado. Por favor comunique al autor de la página el error.
Por favor contacte con el webmaster en caso de que usted crea que existe un error en el servidor.
Error 404
Localhost
31/08/2011 03:30:08 p.m.
Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.4 mod_perl/2.0.4 Perl/v5.10.1
Ahí que tener en cuenta que al momento de oprimir el botón tengo el Apache y el Mozilla ejecutándose mediante la herramienta Xampp.
¿A qué se deberá eso?... Muchas gracias de nuevo.
Intenta con el WampServer ese si que es bueno..
El error es que en el action debes colocar el mismo nombre de la página donde colocaste el código.
<form id="form2" name="form2" method="POST" action="add_a_mysql.php">
Éxitos...
Hola, hice lo que tu me dijiste, puse el código... pero tengo un problema,,, que pena aprovecharme de tu nobleza .. instale el servidor wamp, pero voy a ejecutar la base de datos (phpmyadmin), y me sale el siguiente mensaje de error:
phpMyAdmin - Error
No se pudo cargar la extensión mysqli,
por favor revise su configuración de PHP. -
Estuve viendo las ayudas acerca de este error en internet y me dicen que se arregla modificando una linea de instrucción del archivo Php.ini más específicamente:
extension_dir = y extension=php_myslqi.Dll
Pese a que configuro el archivo con las dos propiedades determinadas anteriormente no me sirve el phpmyadmin, tampoco si pongo a corres Xampp
Gracias y que pena tanto pereque!,
Felicidades.
Sabes, como consejo no uses ese XAMP... pues nunca lo utilizo pero por lo que me acabas de decir y lo que e leídos pues es malo.
Te recomiendo que uses WAMPSERVER 2.1 es bueno... lo llevo usando tres meses 24 horas 7 días en un XPSP3 y pues nada de errores...
Usalo y me comentas...
Hola, muchas gracias, pues no se pero el xampp desde el sábado me funciono bien,,, incluso intente hacer un select para que desde Php me traiga los registros desde una tabla en Mysql y me los trae, pero desafortunadamente no pasa con un Insert pues me muestra en la página web lo siguiente:
Notice: Undefined index: Nombre in D:\xampp\htdocs\Prueba.php on line 200
Notice: Undefined index: Email in D:\xampp\htdocs\Prueba.php on line 201
Notice: Undefined index: Pais_Ciudad in D:\xampp\htdocs\Prueba.php on line 202
Column count doesn't match value count at row 1
y el codigo que tengo es:
<?php
$Nombre=$_POST['Nombre'];
$Email=$_POST['Email'];
$Pais_Ciudad=$_POST['Pais_Ciudad'];
$conexion = mysql_connect("localhost", "root", "califele2011");
mysql_select_db("Omnilife", $conexion);
$queEmp = "INSERT INTO boletin values ('$Nombre','$Email','$Pais_Ciudad')";
$resEmp = mysql_query($queEmp, $conexion) or die(mysql_error());
$totEmp = mysql_num_rows($resEmp);
?>
Gracias que pena tanta molestia..
Mmmm... en tu sentencia no veo por ningún lado que le estés indicando los values osea.. eso quiere decir que le tienes que indicar en qué columba va cada variable para hacer el INSERT. Mira como lo hago yo:
ini_set("date.timezone", "America/Bogota");
$user = $_SESSION['login'];
$ip = $_SERVER['REMOTE_ADDR'];
$pagina = $_SERVER['REQUEST_URI'];
$date = date("Ymd");
$hora = getdate(time());
$hora = ( $hora["hours"] . ":" . $hora["minutes"] . ":" . $hora["seconds"] );
en las lineas de arriba declarmo mis variables y...
dentro del if hamo query "INSERT INTO tu_tabla(columnaUno,columnaDos)values('$variableColumnaUno','$variableColumnaDos')"
Si no me hace el INSERT en mi tabla muestro el error con "mysql_error()"
if (mysql_query("insert into tbl_abner (ip,user,id_permiso,date,hora,url) values ('$ip','$user','$permiso','$date','$hora','$pagina')")){
} else {
echo "Error".mysql_error();
}
mysql_close($link);
Listo! Espero sea de tu ayuda y fresca... no hay problema mejor dicho hasta que no puedas hacer ese insert no dejes de molestarme aha..
Chao DTB
Hola de nuevo... soy yo camilo desde Colombia, pues hice lo que me dijiste y no me deja insertar registros a la base de datos el código que tengo:
<?php
$conexion = mysql_connect("localhost", "root", "califele2011");
mysql_select_db("Omnilife", $conexion);
ni_set("date.timezone", "America/Bogota");
$Nombre=$_POST['Nombre'];
$Email=$_POST['Email'];
$Pais_Ciudad=$_POST['Pais_Ciudad'];
if (mysql_query("insert into 'boletin' (Nombre,Email,Pais_Ciudad) values ('$Nombre','$Email','$Pais_Ciudad')")){
} else {
echo "Error".mysql_error();
}
$resEmp = mysql_query($queEmp, $conexion) or die(mysql_error());
$totEmp = mysql_num_rows($resEmp);
mysql_close($link);
?>
Ademas me sale un mensaje en dreamweaver en la parte superior que dice lo siguiente:
"This page have dinamically - related files that can only be discovered by the server ", ademas me salen 2 opciones que dicen lo siguiente Discover y Preferencies, cuando doy clic en Discover me sale un letrero que dice "Dynamically related files couldnot be resolved because the site definition is not correct for this server", aqui me aparecen 2 opciones de nuevo una que dice Retry,,,,que me vuelve a mostrar el anuncio mencionado y otra que dice setup que me lleva al administrador de sitios de Dreamweaver.. sera que eso influye en que no se envien datos a la base de datos??
Gracias..
MMmm oye... si que nos esta quedando grande jajja...
Bueno. Te cuento que me tome la molestria de crear una base de datos en mi Server llamada Omnilife, este el código de la base de datos:
-- PhpMyAdmin SQL Dump
-- version 3.3.9
-- http://www.phpmyadmin.net
--
-- Servidor: localhost
-- Tiempo de generación: 07-09-2011 a las 23:38:11
-- Versión del servidor: 5.5.8
-- Versión de PHP: 5.3.5
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Base de datos: `Omnilife`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `boletín`
--
CREATE TABLE IF NOT EXISTS `boletin` (
`id` int(11) NOT NULL,
`Nombre` varchar(100) NOT NULL,
`Email` varchar(100) NOT NULL,
`Pais_Ciudad` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Volcar la base de datos para la tabla `boletín`
--
INSERT INTO `boletin` (`id`, `Nombre`, `Email`, `Pais_Ciudad`) VALUES
(0, 'nombre', 'email', 'pais ciudad');
--------------------------------
aqui el codigo para hacer el INSERT
<?php
#---------------- Inicio coneccion a la DB
function Conectarse(){
# Esta funcion es la q me conecta a la DB solo modifica tu usuario y la contraseña
# Por estética pues no la debes colocar en todos los archivos que tengas que hacer
# una conecciona la DB, simplemente crea un archivo llamado qué se yo.. "Conex.php"
# y colocas esta funcion y... cuando necesites una coneccion a tu DB simplemente
# haces esto: "include('Conex.php');" y despues llamas la funcion "$link = Conectarse();"
# y listo!!
if (!($link=mysql_connect("localhost","JuanM","sbbhkk"))){
echo "Error conectando a la base de datos. Por favor comunique con el administrador ";
exit();
}
if (!mysql_select_db("Omnilife",$link)){
echo "Error seleccionando la base de datos. Por favor comunique con el administrador";
exit();
}
return $link;
}
#---------------- Fin coneccion a la DB
$link = Conectarse(); # con esto me conecto a la DB
ini_set("date.timezone", "America/Bogota"); # esto no veo que lo estes usando. Para mi, esto sobra.
$Nombre = $_POST['Nombre'];
$Email = $_POST['Email'];
$Pais_Ciudad = $_POST['Pais_Ciudad'];
# El error que veia era que despues de INTO.. tu tabla la estabas colocando entre comillas '' y eso no se debe hacer.
if (mysql_query("INSERT INTO boletin (Nombre,Email,Pais_Ciudad) values ('$Nombre','$Email','$Pais_Ciudad')")){
echo "Registro agregado con exito!";
} else {
echo "Error: ".mysql_error();
}
mysql_close($link);# Con esto cierro la conexion a la DB
?>
---------------------------------
Listo eso es todo!
Cualquier cosa me comentas...
Éxitos!
DTB
De verdad eres la rencarnacion de Einstein,,,,, al fin se pudieron insertar registros a la Base de datos muchas gracias por su colaboración de verdad,,,, si vives en Bogotá D.C Colombia, podría invitarlo a algo de verdad infinitas pero infinitas gracias.. que Dios te bendiga!.:)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas