Foros del Web » Programando para Internet » PHP »

Formulario y Base de Datos. Mete valores en blanco.

Estas en el tema de Formulario y Base de Datos. Mete valores en blanco. en el foro de PHP en Foros del Web. Hola, estoy siguiendo un curso, y quiero crear un formulario y que los datos los meta en una base de datos, el caso es que ...
  #1 (permalink)  
Antiguo 08/08/2009, 11:32
Usuario no validado
 
Fecha de Ingreso: agosto-2009
Mensajes: 53
Antigüedad: 14 años, 7 meses
Puntos: 1
Pregunta Formulario y Base de Datos. Mete valores en blanco.

Hola, estoy siguiendo un curso, y quiero crear un formulario y que los datos los meta en una base de datos, el caso es que si me conecta con la base de datos, pero me mete datos en blanco. Estoy en local, aunque si lo subo a un server el problema es el mismo, si me añade pero en blanco, osea que si que conecta con la base de datos, tanto para guardar como para leer, pero mete en blanco, osea no mete los datos bien.

Os incluyo los archivos que utilizo:

Base de datos:

Código:
CREATE TABLE `prueba` (
  `ID_Prueba` int(11) NOT NULL AUTO_INCREMENT,
  `Nombre` varchar(100) COLLATE latin1_spanish_ci NOT NULL,
  `Apellidos` varchar(100) COLLATE latin1_spanish_ci NOT NULL,
  PRIMARY KEY (`ID_Prueba`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci AUTO_INCREMENT=4 ;

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

INSERT INTO `prueba` VALUES (1, '', '');
INSERT INTO `prueba` VALUES (2, '', '');
conexion.php
Código PHP:
<!-- conexión.php -->
<html>
<head>
   <title>Ejemplo de PHP</title>
</head>
<body>
<?php
function Conectarse()
{
   if (!(
$link=mysql_connect("localhost","root","121992")))
   {
      echo 
"Error conectando a la base de datos.";
      exit();
   }
   if (!
mysql_select_db("noticias",$link))
   {
      echo 
"Error seleccionando la base de datos.";
      exit();
   }
   return 
$link;
}

$link=Conectarse();
echo 
"Conexión con la base de datos conseguida.<br>";

mysql_close($link); //cierra la conexion
?>
</body>
</html>
db_conecta.inc
Código PHP:
<!-- db_conecta.inc -->
<?php
function Conectarse()
{
   if (!(
$link=mysql_connect("localhost","root","121992")))
   {
      echo 
"Error conectando a la base de datos.";
      exit();
   }
   if (!
mysql_select_db("noticias",$link))
   {
      echo 
"Error seleccionando la base de datos.";
      exit();
   }
   return 
$link;
}
?>
procesar.php
Código PHP:
<?php
   
include("conexion.php");
   
$link=Conectarse();
    
mysql_query("insert into prueba (Nombre,Apellidos) values (' " $_POST['nombre'] . " ',' " $_POST['apellidos'] . " ')");  
   
   
header("Location: ejemplo22.php");
?>
ejemplo22.php
Código PHP:
<!-- Ejemplo22.php -->
<html>
<head>
   <title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de uso de bases de datos con PHP y MySQL</H1>
<FORM ACTION="procesar.php">
<TABLE>
<TR>
   <TD>Nombre:</TD>
   <TD><INPUT TYPE="text" NAME="nombre" SIZE="20" MAXLENGTH="30"></TD>
</TR>
<TR>
   <TD>Apellidos:</TD>
   <TD><INPUT TYPE="text" NAME="apellidos" SIZE="20" MAXLENGTH="30"></TD>
</TR>
</TABLE>
<INPUT TYPE="submit" NAME="accion" VALUE="Grabar">
</FORM>
<hr>
<?php
   
include("db_conecta.inc");
   
$link=Conectarse();
   
$result=mysql_query("select * from prueba",$link);
?>
   <TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
      <TR><TD>&nbsp;<B>Nombre</B></TD> <TD>&nbsp;<B>Apellidos</B>&nbsp;</TD></TR>
<?php      

   
while($row mysql_fetch_array($result)) {
      
printf("<tr><td>&nbsp;%s</td> <td>&nbsp;%s&nbsp;</td></tr>"$row["Nombre"], $row["Apellidos"]);
   }
   
mysql_free_result($result);
   
mysql_close($link);   
?>
</table>
</body>
</html>

Si alguien sabe que puede pasar se lo agradeceria muchisimo, ya que tengo un proyecto en mente y esto es de gran utilidad para mi pagina web.

Pregunte en la subseccion de base de datos, pero me remitieron aqui, diciendo que la inseccion estaba bien:
  #2 (permalink)  
Antiguo 08/08/2009, 17:19
 
Fecha de Ingreso: octubre-2008
Mensajes: 42
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Formulario y Base de Datos. Mete valores en blanco.

Hola, me parece que estás mostrando datos y no guardando, no se donde guardas los datos, donde hay código que haya por ejemplo:
$sql="insert into tabla(var1,var2,...) values ('val1','val2',...);
eso no lo veo, espero que de algo sirva.
Saludos
  #3 (permalink)  
Antiguo 08/08/2009, 20:00
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 2 meses
Puntos: 14
Respuesta: Formulario y Base de Datos. Mete valores en blanco.

Estimado , usted posee un error en su html.

la etiqueta form debe contener el method es decir la forma que usted le enviara la información al script que la recogera mediante el metodo POST o GET , recuerde que POST en su modo de ocultamiento de datos en cierto modo , en cambio GET pasa los campos y sus valores en forma explicita por la URL.

La etiqueta form deberia ser asi:

<form name="nombre" action="script_que_procesaphp" action="POST">

mientras que usted declardo el form como:

<form name="nombre">

Solamente entonces el script no sabe en donde se ubican los datos , el compilador es exacto no es un adivino :).

PD: Usted debe declarar el method de su codigo como POST.

Saludos!
  #4 (permalink)  
Antiguo 09/08/2009, 00:12
Usuario no validado
 
Fecha de Ingreso: agosto-2009
Mensajes: 53
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Formulario y Base de Datos. Mete valores en blanco.

Genial era eso, solo que pusiste mal el codigo, asi es como debe de ser y como al final me ha funcionado.

Código HTML:
<form name="ranking" action="procesar.php" method="POST"> 
Muchisimas gracias, me estaba volviendo loco.

Lo podeis dar por solucionado el tema, aunque seguro que volvere con otro ya que no soy muy experto y en el siguiente paso me volvere a atrancar.

Saludos
  #5 (permalink)  
Antiguo 15/08/2009, 16:03
Usuario no validado
 
Fecha de Ingreso: agosto-2009
Mensajes: 53
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Formulario y Base de Datos. Mete valores en blanco.

Despues de profundizar un poco mas, veo que al introducir los datos en el formulario, veo que en la base de datos me ha añadido un espacio en blanco antes y despues del texto que meto en el formulario.

Esto me crea problemas al realizar busquedas ya que el texto no corresponde por culpa de los espacios en blanco.

Como puedo hacer para que lo que meta en el formulario sea lo que se guarde en la base de datos sin espacios en blanco.
  #6 (permalink)  
Antiguo 15/08/2009, 16:17
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Formulario y Base de Datos. Mete valores en blanco.

Usa trim(). Un consejo para que no te atraques tanto, como dices que posiblemente ocurrira (que a todo el mundo le pasa), te sugiero que cuando estes trabajando con datos de string y numeros verifiques siempre a ver si existe una funcion que pueda trabajar con lo que quieres por ejemplo visita este link para que veas todas las funciones que te permiten trabajar con string y numeros. Cuando quieras trabajar con fechas visita este link para que te diga las funciones que se pueden usar para ellos y asi sucesivamente con las demas funciones.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 15/08/2009 a las 16:22
  #7 (permalink)  
Antiguo 15/08/2009, 17:02
Usuario no validado
 
Fecha de Ingreso: agosto-2009
Mensajes: 53
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Formulario y Base de Datos. Mete valores en blanco.

No se muy bien como meter el trim, estoy buscando ejemplos de codigos, pero no lo veo muy claro, podria ser algo asi ??

Código PHP:
$result=mysql_query("select trim * from prueba ORDER BY puntos DESC",$link); 
  #8 (permalink)  
Antiguo 16/08/2009, 05:02
Usuario no validado
 
Fecha de Ingreso: agosto-2009
Mensajes: 53
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Formulario y Base de Datos. Mete valores en blanco.

Se me ha ocurrido hacer esto, pero aunque si me sigue añadiendo datos a la base de datos, no me ha quitado los espacios en blanco, quizas lo que he hecho esta mal, o haya otra manera mejor.


Procesar.php

Código PHP:
<?php



   $v_nombre
trim($_REQUEST['nombre']);
   
$v_numero_usuariotrim($_REQUEST['numero_usuario']);
   
$v_puntostrim($_REQUEST['puntos']);
   
$v_paistrim($_REQUEST['pais']);
   
$v_fabricantetrim($_REQUEST['fabricante']);
   
$v_marcatrim($_REQUEST['marca']);
   
$v_modelotrim($_REQUEST['modelo']);
   
$v_bustrim($_REQUEST['bus']);
   
$v_cputrim($_REQUEST['cpu']);
   
$v_mhz_gputrim($_REQUEST['mhz_gpu']);
   
$v_mhz_ramtrim($_REQUEST['mhz_ram']);
   
$v_mhz_cputrim($_REQUEST['mhz_cpu']);
   
$v_motherboardtrim($_REQUEST['motherboard']);
   
$v_extrastrim($_REQUEST['extras']);
   
$v_urltrim($_REQUEST['url']);


   
   
   
   
   include(
"conexion.php");
   
$link=Conectarse();
   
    
   
mysql_query("insert into prueba (v_nombre,v_numero_usuario,v_puntos,v_pais,v_fabricante,v_marca,v_modelo,v_bus,v_cpu,v_mhz_gpu,v_mhz_ram,v_mhz_cpu,v_motherboard,v_extras,v_url) values (' " $_POST['v_nombre'] . " ',' " $_POST['v_numero_usuario'] . " ',' " $_POST['v_puntos'] . " ',' " $_POST['v_pais'] . " ',' " $_POST['v_fabricante'] . " ',' " $_POST['v_marca'] . " ',' " $_POST['v_modelo'] . " ',' " $_POST['v_bus'] . " ',' " $_POST['v_cpu'] . " ',' " $_POST['v_mhz_gpu'] . " ',' " $_POST['v_mhz_ram'] . " ',' " $_POST['v_mhz_cpu'] . " ',' " $_POST['v_motherboard'] . " ',' " $_POST['v_extras'] . " ',' " $_POST['v_url'] . " ')"); 
   
   
  
 
?>
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:16.