Comunidad de diseño web y desarrollo en internet online

ayuda...con insert to DB

Citar            
MensajeEscrito el 07 Ene 2011 07:41 am
Hola a tod@s..
Primero mil disculpas si esto no va aca.... es que soy nuevo :oops:
Bueno la cuestion es la siguiente estoy ingresando a esto del PHP y me parece super...

pero me he partido la cabeza con este programilla.. es una cosa sencilla "lo se".. pero por lo novato me quedo grande..
la cuestion es que deseo insertar dato a la base pero no me lo permite....

Aca el codigo....

<html>
<head>
<title>Insertar Personal</title>
</head>

<body>

<H1>Insertar Personal En La Base de Datos</H1>

<form action="insertarp.php" method="post">

<TABLE>
<TR>
<TD>Documento de Identidad:</TD>
<TD><INPUT TYPE="text" NAME="Documento" SIZE="12" MAXLENGTH="30"></TD>
</TR>
<TR>
<TD>Nombre Completo:</TD>
<TD><INPUT TYPE="text" NAME="Nombre" SIZE="30" MAXLENGTH="30"></TD>
</TR>
<TR>
<TD>Salario Basico:</TD>
<TD><INPUT TYPE="text" NAME="SalB" SIZE="12" MAXLENGTH="30"></TD>
</TR>
<TR>
<TD>Direccion:</TD>
<TD><INPUT TYPE="text" NAME="Direccion" SIZE="30" MAXLENGTH="30"></TD>
</TR>
<TR>
<TD>Telefono Fijo:</TD>
<TD><INPUT TYPE="text" NAME="TelF" SIZE="12" MAXLENGTH="30"></TD>
</TR>
<TR>
<TD>Telefono Movil:</TD>
<TD><INPUT TYPE="text" NAME="TelM" SIZE="12" MAXLENGTH="30"></TD>
</TR>
<TR>
<TD>Email:</TD>
<TD><INPUT TYPE="text" NAME="Email" SIZE="20" MAXLENGTH="30"></TD>
</TR>
</TABLE>
<INPUT TYPE="submit" NAME="accion" VALUE="Grabar">

</FORM>
<?php
$Documento=$_POST["Documento"];
$NombresA =$_POST ["Nombre"];
$SalarioB = $_POST["SalB"];
$Direccion = $_POST["Direccion"];
$TelF =$_POST ["TelF"];
$TelM =$_POST ["TelM"];
$Email =$_POST ["Email"];

if (!$_POST["Documento"] || !$_POST ["Nombre"] || !$_POST["SalB"] ||
!$_POST["Direccion"] || !$_POST["TelF"] || !$_POST["TelM"] || !$_POST["Email"])
{
echo "No has introducido todos los datos requeridos.<br>"
."Por favor introduce todos los datos y vuelve e inténtalo de nuevo.";
exit;
}

$Documento = addslashes($Documento);
$NombresA = addslashes($NombresA);
$SalarioB = addslashes($SalarioB);
$Direccion = doubleval($Direccion);
$TelF = addslashes($TelF);
$TelM = addslashes($TelM);
$Email = addslashes($Email);

$db = mysql_pconnect("localhost", "root", "");

if (!$db)
{
echo "Error: No se puede conectar a la base de datos. Por favor inténtalo de nuevo.";
exit;
}

mysql_select_db("hiso");
$query = "insert into personal (Documento,NombresA,SalarioB,Direccion,
TelF,TelM,Email)
values ('$Documento', '$NombresA', '$SalarioB', '$Direccion',
'$TelF', '$TelM', '$Email')";

$result = mysql_query($query);
if ($result)
echo mysql_affected_rows()." Regitro introducido en la base de datos.";
?>

<hr>

</body>
</html>


Bueno les cuento... hice lo que creia que deberia hacer... pero no... hasta estube estudiando funciones intendando poner la conexion a la DB en una pagina llamada motor y alli mismo las busquedas... pero nada..
tambien intente colocar el codigo PHP en otra pagina para asi no utilizar eso de $_POST... llamandola con INCLUDE... adivinen.... nada

Posdata...
en Visual Basic.... habia una forma de parar el programa donde uno queria para ver que valor lleva una variable.. en PHP Expert Editor 4.03 se podra este es el que tengo yo... si alguien me dice de uno que se pueda hacer gracias..


Porfa esto me tiene loco
Gracias

Por nitramara

30 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 07 Ene 2011 01:09 pm
A ver, vamos por partes.
El "action" del <form> apunta a un archivo que se llama insertarp.php, o sea que cuando das clic en el botón "Grabar", todos los datos del formulario se van por POST a ese archivo. ¿Este código es el código de ese archivo?.

Voy a suponer que sí.
Entonces la primera vez que cargas el formulario en el navegador, esta línea dará error:

Código PHP :

$Documento=$_POST["Documento"];

Porque en ese momento no existe el array $_POST, ya que la petición ha sido GET. Solo después de haber hecho clic en el botón "Guardar" la petición será POST y por lo tanto existirá el array $_POST. Ahí ya tienes un problema. Porque tal como está el código, la inserción se hace siempre que el visitante visita esta página, lo cual, evidentemente no es tu intención.

Un consejo: separa la lógica presentacional de la lógica funcional. Esto es, haz dos archivos, uno con código HTML para presentar al visitante y otro archivo donde incluyas la lógica de tu sitio web. En este caso deberías quitar el código PHP que está después de "</FORM>" y ponerlo en otro archivo y hacer que el action del <form> apunte a ese archivo.

Hay una variable superglobal que te será muy útil para el caso que nos ocupa:

Código :

$_SERVER['REQUEST_METHOD']

Devuelve las cadenas "POST" o "GET" dependiendo del tipo de petición que el navegador usó para cargar la página.

Y una función:

Código :

header("Location: pagina.php");
provoca que el navegador vaya a la página apuntada por "Location:" (pagina.php en el ejemplo). Te será útil para redireccionar al visitante dependiendo del resultado de la ejecución de tus scripts (por ejemplo, cuando encuentras un error en los datos del formulario y debes hacer que el visitante regrese a él para que los corrija).

Creo que tus problemas con la base de datos se debe a la lógica defectuosa que estás usando. Coméntanos qué sucedió.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 07 Ene 2011 07:28 pm
Hola... tienes razon lo primero me da un erro pero bueno eso lo podria obiar a travez del arroba.. te cuento que este mismo codigo lo intente generar como dices en dos paginas una llamada motor y otra donde como sugieres el codigo HTML pero no me dio por lo tanto lo trabaje asi...
Bueno.. te cuento el problemilla con la insercion lo solucione atravez de la ayuda de REPARA2 el me tiro una forma de hacer ver los errores del programa... era una cosilla los campos a los que le estaba tirando los datos eran parecidos pero NO IGUALES a los que estan en la DB.... "Que gueva NO...jejeje".
En todo caso gracias por tu ayuda....
Otra cosilla, me dices que debo utilizar
la funcion $_SERVER['REQUEST_METHOD'] al igual que header("Location: pagina.php");....
Bueno lo intente pero me quedo grande me puedes tirar un ejemplillo completo para analizar y asi no tener que molestar tanto....

Muchas Gracias

Por nitramara

30 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 07 Ene 2011 09:12 pm
Ok. Veamos.
$_SERVER['REQUEST_METHOD'] no es una función, es una variable:

Código PHP :

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   echo "Esta página se pidió por POST";
}

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 07 Ene 2011 10:49 pm
vale disculpa por la ignorancia pero es que soy novato en esto del php.... de igual forma gracias...
y en cuanto a lo otro "lo de las funciones??"..
La idea es que quiero hacer una pagina en donde vaya todo lo de PHP (conexion a la Db, Busquedas en la misma, Calculos.. etc) y desde otra(s) llamar esas funciones algo asi como se hacia en Visual Basic.. no se si soy claro...
la verdad lo estube intentando pero me forme un rollo que ni te imaginas...
Por tu colaboracion y comprension... nuevamente gracias

Por nitramara

30 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.