Foros del Web » Programando para Internet » PHP »

Problemas al insertar datos en db

Estas en el tema de Problemas al insertar datos en db en el foro de PHP en Foros del Web. Buenas!, les comento, en mis intentos de captar la idea mysql y php encontré este sencillo ejercicio de esta web , cuando termino y lo ...
  #1 (permalink)  
Antiguo 08/03/2008, 18:26
 
Fecha de Ingreso: febrero-2007
Ubicación: Uruguay
Mensajes: 172
Antigüedad: 17 años, 2 meses
Puntos: 1
Problemas al insertar datos en db

Buenas!, les comento, en mis intentos de captar la idea mysql y php encontré este sencillo ejercicio de esta web, cuando termino y lo voy a probar, el insertado no me funciona, luego leyendo los comentarios descubrí que quien hizo el código lo hizo mal, pero por mas que probé los cambios que ahí dicen no puedo insertar datos en la tabla.
No me sale ningún error, solo que le doy al botón enviar del formulario y no hace ningún envio.
La conexión con la base de datos funciona correctamente porque inserté datos manualmente en la base, y cuando ejecuto ver.php me los muestra, el problema esta en el formulario de grabar.php.
La tabla tiene: id, nombre, apellido, dni.
Gracias!!
Saludos!
Les dejo los codigos

conexion.php:
Código PHP:
<?
$dbhost
="localhost";    //host mysql
$dbusuario="root";
$dbpass="";
$db="ejemplo";        //elijo la base de datos
$conexion=mysql_connect($dbhost$dbusuario$dbpass);
mysql_select_db($db$conexion);
?>
guardar.php:
Código PHP:
<?
include "conexion.php";
if (!isset(
$accion)){
        echo
"
        <html>
        <head><title>Guardar datos en la base</title></head>
        <body>
<h3>Guardar datos en la base</h3>
<form name=\"form1\" method=\"post\"
    action=\"guardar.php?accion=guardar\">
  <p>Nombre:<br>
    <input type=\"text\" name=\"nombre\">
  </p>
  <p>Apellido:<br>
    <input type=\"text\" name=\"apellido\">
  </p>
  <p>DNI:<br>
    <input type=\"text\" name=\"dni\">
  </p>
  <p>
    <input type=\"submit\" name=\"Submit\" value=\"Enviar\">
  </p>
</form>
</body>
</html>"
;
}elseif(
$accion=="guardar"){
  include
"conexion.php";
   
$result=mysql_query("INSERT INTO usuarios  (id,nombre, apellido, dni)
    VALUES ('',$nombre,$apellido,$dni) "
,$conexion);
  echo
" <html>
    <head></head>
    <body>
    <h3>Los datos han sido guardados</h3>
    </body>
    </html>"
;
}
include 
"cerrar_conexion.php";
?>

ver.php: (este funciona bien, lo dejo por las dudas)

Código PHP:
<?
include "conexion.php";
$result=mysql_query("SELECT * FROM usuarios ORDER BY nombre"$conexion);
echo 
"<table width=300>
<tr>
<td><b>Nombre</b></td><td><b>Apellido</b></td><td><b>DNI</b></td>
</tr>"
;
while(
$row=mysql_fetch_row($result)){
    echo
" <tr>
        <td>$row[1]</td><td>$row[2]</td><td>$row[3]
            <a href=\"actualizar.php?id=$row[0]\">Actualizar</a></td>
        </tr>"
;
}
echo
"</table>";
include 
"cerrar_conexion.php";
?>
__________________
Actualizate hoy(Blog) De vuelta actualizado!
  #2 (permalink)  
Antiguo 08/03/2008, 18:42
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: Problemas al insertar datos en db

yo usario un form asi y llama a este archivo guardar.php

Código PHP:
<html> 
        <head><title>Guardar datos en la base</title></head> 
        <body> 
<h3>Guardar datos en la base</h3> 
<form name="form" method="post" 
    action="guardar.php" > 
  <p>Nombre:<br> 
    <input type="text" name="nombre"> 
  </p> 
  <p>Apellido:<br> 
    <input type="text" name"apellido"> 
  </p> 
  <p>DNI:<br> 
    <input type="text\" name="dni"> 
  </p> 
  <p> 
    <input type="submit" name="Submit" value="Enviar"> 
  </p> 
</form> 
</body> 
</html>



<?php 
//antes de esta line el include a la conexion y recuperas los valores del form asi
if ($_POST['nombre']) {

    
$nombre=$_POST['nombre'];
    
$apellido=$_POST['apellido'];
    
$dni=$_POST['dni'];
    
    
    
$result=mysql_query("INSERT INTO usuarios  (id,nombre, apellido, dni) 
    VALUES ('',$nombre,$apellido,$dni) "
,$conexion); 

    
        echo 
"los datos han sido guardados";
        
        }else{
        
                echo
"fallo al insertar en la base de datos";
                }
        
        
        
    
mysql_close();
    
?>
  #3 (permalink)  
Antiguo 09/03/2008, 12:45
 
Fecha de Ingreso: febrero-2007
Ubicación: Uruguay
Mensajes: 172
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: Problemas al insertar datos en db

Hola jaronu, gracias por responder.
Con ese código que me pasaste (y agregandole el include como indicas) me suceden dos cosas:
La primera vez que cargo guardar.php, me sale abajo del form el mensaje de:"fallo al insertar en la base de datos"
Luego cuando lleno el form y le doy guardar me sale el mensaje de: "los datos han sido guardados" pero no los guarda.
__________________
Actualizate hoy(Blog) De vuelta actualizado!
  #4 (permalink)  
Antiguo 09/03/2008, 13:19
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: Problemas al insertar datos en db

A Ver, Enseñame El Codigo Que Tu Estas Usando Para Provar
  #5 (permalink)  
Antiguo 09/03/2008, 13:21
 
Fecha de Ingreso: febrero-2007
Ubicación: Uruguay
Mensajes: 172
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: Problemas al insertar datos en db

Usé el tuyo le agregue el include.
Saludos!

Código PHP:
<html> 
        <head><title>Guardar datos en la base</title></head> 
        <body> 
<h3>Guardar datos en la base</h3> 
<form name="form" method="post" 
    action="guardar.php" > 
  <p>Nombre:<br> 
    <input type="text" name="nombre"> 
  </p> 
  <p>Apellido:<br> 
    <input type="text" name"apellido"> 
  </p> 
  <p>DNI:<br> 
    <input type="text\" name="dni"> 
  </p> 
  <p> 
    <input type="submit" name="Submit" value="Enviar"> 
  </p> 
</form> 
</body> 
</html>



<?php 
include "conexion.php";
//antes de esta line el include a la conexion y recuperas los valores del form asi
if ($_POST['nombre']) {

    
$nombre=$_POST['nombre'];
    
$apellido=$_POST['apellido'];
    
$dni=$_POST['dni'];
    
    
    
$result=mysql_query("INSERT INTO usuarios (id,nombre, apellido, dni) 
    VALUES ('',$nombre,$apellido,$dni) "
,$conexion); 

    
        echo 
"los datos han sido guardados";
        
        }else{
        
                echo
"fallo al insertar en la base de datos";
                }
        
        
        
    
mysql_close();
    
?>
__________________
Actualizate hoy(Blog) De vuelta actualizado!
  #6 (permalink)  
Antiguo 09/03/2008, 13:29
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: Problemas al insertar datos en db

perdon hazlo conn este otro codigo
y dime que tal
se me olvido un if
Código PHP:

<?php  
//antes de esta line el include a la conexion y recuperas los valores del form asi 
if (isset($_POST['submit'])) {  

    
$nombre=$_POST['nombre']; 
    
$apellido=$_POST['apellido']; 
    
$dni=$_POST['dni']; 
     
     if (
$result=true){
    
$result=mysql_query("INSERT INTO usuarios  (id,nombre, apellido, dni)  
    VALUES ('',$nombre,$apellido,$dni) "
,$conexion);  

     
        echo 
"los datos han sido guardados"
         
        }else{ 
         
                echo
"fallo al insertar en la base de datos"
                } 
         
         }
         
    
mysql_close(); 
?>
     
<html>  
        <head><title>Guardar datos en la base</title></head>  
        <body>  
<h3>Guardar datos en la base</h3>  
<form name="form" method="post"  
    action="guardar.php" >  
  <p>Nombre:<br>  
    <input type="text" name="nombre">  
  </p>  
  <p>Apellido:<br>  
    <input type="text" name"apellido">  
  </p>  
  <p>DNI:<br>  
    <input type="text\" name="dni">  
  </p>  
  <p>  
    <input type="submit" name="Submit" value="Enviar">  
  </p>  
</form>  
</body>  
</html>
  #7 (permalink)  
Antiguo 09/03/2008, 13:36
 
Fecha de Ingreso: febrero-2007
Ubicación: Uruguay
Mensajes: 172
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: Problemas al insertar datos en db

Usé el código que acabas de poner y antes de esto hice el include:
Código PHP:
<?php 
include "conexion.php"
//antes de esta line el include a la conexion y recuperas los valores del form asi 
if (isset($_POST['submit'])) {
Pero ahora ni siquiera me muestra los mensajes "los datos han sido guardados" o "fallo al insertar en la base de datos".
Volvió como antes :(

Ya ni se que es lo que le pasa
__________________
Actualizate hoy(Blog) De vuelta actualizado!
  #8 (permalink)  
Antiguo 09/03/2008, 14:08
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: Problemas al insertar datos en db

Código PHP:
<?php

// verificamos si se han enviado ya las variables necesarias. los campos del form agregas los que quieras
if (isset($_POST["submit"])) {
    
$titulo $_POST["titulo"];
    
$comentario $_POST["comentario"];

    
// Hay campos en blanco
    
if($titulo==NULL|$comentario==NULL) {
        echo 
"un campo está vacio.";
        


}else{
                
$query 'INSERT INTO comentarios (titulo, comentario, fecha, user)
                VALUES (\''
.$titulo.'\',\''.$comentario.'\',\''.date("Y-m-d").'\',\''.$_SESSION['k_username'].'\')';
                
mysql_query($query) or die(mysql_error());
                echo 
'Comentario publicado!<br/>';
                
                
            
                
                
                                
                }
                }
        
        
        
?>

Mirate este codigo, yo lo tengo actualmente en funcionamiento y va bien claro, por eso lo tengo intenta adaptartelo a tu form

un saludo
  #9 (permalink)  
Antiguo 09/03/2008, 14:23
 
Fecha de Ingreso: febrero-2007
Ubicación: Uruguay
Mensajes: 172
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: Problemas al insertar datos en db

Debes estar con ganas de matarme,xD pero no me sale:S
Te paso la modificación que le hice yo:
Código PHP:
<?php
include "conexion.php";
// verificamos si se han enviado ya las variables necesarias. los campos del form agregas los que quieras
if (isset($_POST["submit"])) {
    
$nombre $_POST["nombre"];
    
$apellido $_POST["apellido"];
    
$dni $_POST["dni"];

    
// Hay campos en blanco
    
if($nombre==NULL|$apellido==NULL|$dni==NULL) {
        echo 
"un campo está vacio.";
        


}else{
                
$query 'INSERT INTO usuarios (nombre, apellido, dni)
                VALUES (\''
.$nombre.'\',\''.$apellido.'\',\''.$dni.'\')';
                
mysql_query($query) or die(mysql_error());
                echo 
'Usuario agregado!<br/>';
                
                
            
                
                
                                
                }
                }
        
        
        
?> 
<html>  
        <head><title>Guardar datos en la base</title></head>  
        <body>  
<h3>Guardar datos en la base</h3>  
<form name="form" method="post"  
    action="guardar.php" >  
  <p>Nombre:<br>  
    <input type="text" name="nombre">  
  </p>  
  <p>Apellido:<br>  
    <input type="text" name"apellido">  
  </p>  
  <p>DNI:<br>  
    <input type="text\" name="dni">  
  </p>  
  <p>  
    <input type="submit" name="Submit" value="Enviar">  
  </p>  
</form>  
</body>  
</html>
Por las dudas te dejo una pic de mi db, capaz que el problema viene de ahí:S
Ver imágen
__________________
Actualizate hoy(Blog) De vuelta actualizado!
  #10 (permalink)  
Antiguo 09/03/2008, 14:58
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: Problemas al insertar datos en db

todo esta bien, pero como se llama la tabla donde tienes el

id
nombre
apellido
dni
segun el codigo se llama

usuarios

es a si?
la tabla de la BD se llama usuarios?
  #11 (permalink)  
Antiguo 09/03/2008, 15:00
 
Fecha de Ingreso: febrero-2007
Ubicación: Uruguay
Mensajes: 172
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: Problemas al insertar datos en db

Si se llama usuarios.

Base de datos: ejemplo
Tabla: usuarios
__________________
Actualizate hoy(Blog) De vuelta actualizado!
  #12 (permalink)  
Antiguo 09/03/2008, 15:23
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: Problemas al insertar datos en db

no se que pasa, a mi me funciona bien,

camabia esta ,linea del is asi:

if (isset($_POST["submit"])) {

cambiala a


if (isset($_POST["form"])) {
  #13 (permalink)  
Antiguo 09/03/2008, 15:26
 
Fecha de Ingreso: febrero-2007
Ubicación: Uruguay
Mensajes: 172
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: Problemas al insertar datos en db

Tampoco:( no se que pasará.
Me rindo :(, muchas gracias por tu ayuda jaronu y disculpas por la molestia
__________________
Actualizate hoy(Blog) De vuelta actualizado!
  #14 (permalink)  
Antiguo 09/03/2008, 15:26
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: Problemas al insertar datos en db

y prueba el codigo ahora asi para confirmar que te llegan las variables mediante post




Código PHP:
<?php 
include "conexion.php"
// verificamos si se han enviado ya las variables necesarias. los campos del form agregas los que quieras 
if (isset($_POST["submit"])) { 
    
$nombre $_POST["nombre"]; 
    
$apellido $_POST["apellido"]; 
    
$dni $_POST["dni"]; 


echo 
$nombre;
echo 
"<br>";
echo 
$apellido;
echo 
"<br>";
echo 
$dni;
echo 
"<br>";

    
// Hay campos en blanco 
    
if($nombre==NULL|$apellido==NULL|$dni==NULL) { 
        echo 
"un campo está vacio."
         


}else{ 
                
$query 'INSERT INTO usuarios (nombre, apellido, dni) 
                VALUES (\''
.$nombre.'\',\''.$apellido.'\',\''.$dni.'\')'
                
mysql_query($query) or die(mysql_error()); 
                echo 
'Usuario agregado!<br/>'
                 
                 
             
                 
                 
                                 
                } 
                } 
         
         
        
?>  
<html>   
        <head><title>Guardar datos en la base</title></head>   
        <body>   
<h3>Guardar datos en la base</h3>   
<form name="form" method="post"   
    action="guardar.php" >   
  <p>Nombre:<br>   
    <input type="text" name="nombre">   
  </p>   
  <p>Apellido:<br>   
    <input type="text" name"apellido">   
  </p>   
  <p>DNI:<br>   
    <input type="text\" name="dni">   
  </p>   
  <p>   
    <input type="submit" name="Submit" value="Enviar">   
  </p>   
</form>   
</body>   
</html>

al poner esto:

echo $nombre;
echo "<br>";
echo $apellido;
echo "<br>";
echo $dni;
echo "<br>";

te debe imprimis en pantalla sus valores, a si que rellena el form dale a enviar y mira que imprime en pantalla
  #15 (permalink)  
Antiguo 09/03/2008, 15:28
 
Fecha de Ingreso: febrero-2007
Ubicación: Uruguay
Mensajes: 172
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: Problemas al insertar datos en db

Con este último código cuando le doy a enviar, lo único que hace es dejar nuevamente los campos en blanco:S
__________________
Actualizate hoy(Blog) De vuelta actualizado!
  #16 (permalink)  
Antiguo 09/03/2008, 15:32
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: Problemas al insertar datos en db

pues creo que no envias las variables mediante POST y no lo entiendo

Trabajas en local o tienes server de pago?

el problema puede venir de las configuraciones.

un saludo, y no te disculpes por que no es molestia ayudar.
  #17 (permalink)  
Antiguo 09/03/2008, 15:34
 
Fecha de Ingreso: febrero-2007
Ubicación: Uruguay
Mensajes: 172
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: Problemas al insertar datos en db

Estoy trabajando en local host.
Instale usando foxserv
__________________
Actualizate hoy(Blog) De vuelta actualizado!
  #18 (permalink)  
Antiguo 09/03/2008, 15:34
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: Problemas al insertar datos en db

aqui en esta linea en el form tienes:


action="guardar.php"

y se ha de poner el mismo nobre del archivo, como lo guardas, es asi?

el archivo que usas de deberia llamar guardar.php como indicas en la etiqueta html del form
  #19 (permalink)  
Antiguo 09/03/2008, 15:39
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: Problemas al insertar datos en db

Pues no te puedo ayudar mucho en las configuraciones , yo uso un server de pago para evitarme esos problemas.

debe ser algo de la configuracion

prueba con otros servers como apache, he leido mucho de el y dicen que funciona

un saludo, el codigo esta bien, o eso creo.
  #20 (permalink)  
Antiguo 09/03/2008, 15:41
 
Fecha de Ingreso: febrero-2007
Ubicación: Uruguay
Mensajes: 172
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: Problemas al insertar datos en db

Bueno voy a probar entonces;)
Respecto a lo del nombre de archivo es guardar.php como indica el form.

Muchas gracias por todo!
__________________
Actualizate hoy(Blog) De vuelta actualizado!
  #21 (permalink)  
Antiguo 09/03/2008, 16:24
 
Fecha de Ingreso: febrero-2007
Ubicación: Uruguay
Mensajes: 172
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: Problemas al insertar datos en db

Bueno, logré encontrar una solución, ya me inserta en la base datos. Lo que hice fue separar el archivo.
Cree un guardar.html que solo cargue el form:
Código PHP:
<html>  
        <
head><title>Guardar datos en la base</title></head>  
        <
body>  
<
h3>Guardar datos en la base</h3>  
<
form name="form" method="post"  
    
action="guardar.php" >  
  <
p>Nombre:<br>  
    <
input type="text" name="nombre">  
  </
p>  
  <
p>Apellido:<br>  
    <
input type="text" name"apellido">  
  </
p>  
  <
p>DNI:<br>  
    <
input type="text" name="dni">  
  </
p>  
  <
p>  
    <
input type="submit" name="Submit" value="Enviar">  
  </
p>  
</
form>  
</
body>  
</
html
Luego en el guardar.php dejé:
Código PHP:
<?php 
//conexion
include "conexion.php"

$nombre=$_POST[nombre];
$apellido=$_POST[apellido];
$dni=$_POST[dni];

//ejecuto
mysql_query("insert into usuarios (nombre,apellido,dni) values ('$nombre','$apellido','$dni')");
?> 
<h1><div align="center">Registro ingresado correctamente</div></h1>
<div align="center"><a href="ver.php">Visualizar contenido de la base de datos</a></div>
Lo único que no me carga y no se porque,xD es el apellido , pero algo es algo, luego veré si puedo ponerle ifs porque así esta ultra básico.
__________________
Actualizate hoy(Blog) De vuelta actualizado!
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 10:56.