Foros del Web » Programando para Internet » PHP »

Error al añadir datos desde formulario

Estas en el tema de Error al añadir datos desde formulario en el foro de PHP en Foros del Web. Estoy intentado comprender como funcionan los formualarios con php y mysql y trato de ejecutar un ejemplo, pero...¡ como no ! me da error. Tengo ...
  #1 (permalink)  
Antiguo 01/07/2003, 14:59
Avatar de amanda75  
Fecha de Ingreso: junio-2003
Ubicación: cerca, pero no mucho
Mensajes: 684
Antigüedad: 20 años, 10 meses
Puntos: 0
Error al añadir datos desde formulario

Estoy intentado comprender como funcionan los formualarios con php y mysql y trato de ejecutar un ejemplo, pero...¡ como no ! me da error.

Tengo una tabla en mysql llamada compis con tres campos

id (unsigned, int, auto_incremento, no null, primary key) nombre y telefono

Un formulario htm

Código PHP:

<HTML>
<
HEAD>
<
TITLE>Insertar.html</TITLE>
</
HEAD>
<
BODY>
<
div align="center">
<
h1>Insertar un registro</h1>
<
br>
<
FORM METHOD="POST" ACTION="insertar.php">
Nombre<br>
<
INPUT TYPE="TEXT" NAME="nombre"><br>
Teléfono<br>
<
INPUT TYPE="TEXT" NAME="telefono"><br>
<
INPUT TYPE="SUBMIT" value="Insertar">
</
FORM>
</
div>
</
BODY>
</
HTML
Un archivo insertar.php

Código PHP:

<HTML>
<HEAD>
<TITLE>Insertar.php</TITLE>
</HEAD>
<BODY>
<?
//Conexion con la base
mysql_connect("44.44.44.44","yo","contraseña");
//Ejecucion de la sentencia SQL
mysql_db_query("ejemplo","insert into compis (nombre,telefono) values ('$nombre','$telefono')");
?>
<h1><div align="center">Registro Insertado</div></h1>
<div align="center"><a href="lectura.php">Visualizar el contenido de la base</a></div>
</BODY>
</HTML>
Cuando ejecuto lectura.php

Código PHP:
<HTML>
<HEAD>
<TITLE>lectura.php</TITLE>
</HEAD>
<BODY>
<h1><div align="center">Lectura de la tabla</div></h1>
<br>
<br>
<?
//Conexion con la base
mysql_connect("44.44.44.44","yo","contraseña");

//Ejecutamos la sentencia SQL
$result=mysql_db_query("ejemplo","select * from compis");
?>
<table align="center">
<tr>
<th>Nombre</th>
<th>Teléfono</th>
</tr>
<?
//Mostramos los registros
while ($row=mysql_fetch_array($result))
{
echo 
'<tr><td>'.$row["nombre"].'</td>';
echo 
'<td>'.$row["telefono"].'</td></tr>';
}
mysql_free_result($result)
?>
</table>

<div align="center">
<a href="insertar.html">Añadir un nuevo registro</a><br>
<a href="actualizar1.php">Actualizar un registro existente</a><br>
<a href="borrar1.php">Borrar un registro</a><br>
</div>

</BODY>
</HTML>

Me dá este error

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/portal/a/lectura.php on line 23

que es (while ($row=mysql_fetch_array($result))

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/portal/a/lectura.php on line 28

que esmysql_free_result($result)

¿en dónde he metido la zampa otra vez?
  #2 (permalink)  
Antiguo 01/07/2003, 15:23
 
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona - España
Mensajes: 270
Antigüedad: 21 años, 5 meses
Puntos: 0
echo '<tr><td>'.$row["nombre"].'</td>';
echo '<td>'.$row["telefono"].'</td></tr>';

prueba de poner doble comilla en los <tr> y <td> y comilla simple en 'nombre' y 'telefono'
  #3 (permalink)  
Antiguo 01/07/2003, 15:46
Avatar de amanda75  
Fecha de Ingreso: junio-2003
Ubicación: cerca, pero no mucho
Mensajes: 684
Antigüedad: 20 años, 10 meses
Puntos: 0
No Cocker, no me ha funcionado.

He vuelto a la página de dónde he sacado el ejemplo y por lo que se ve habia un problema con las versiones de php, ha habido gente que tampoco ha conseguido hacer el ejemplo, lo han solucionado sustituyendo
Código PHP:
$result=mysql_db_query("ejemplo","select * from compis"); 

por

Código PHP:
mysql_select_db("ejemplo"); 
mysql_query("insert into compis (nombre,telefono) values ('$nombre','$telefono')"); 
pero yo lo he hecho y tampoco me va
  #4 (permalink)  
Antiguo 01/07/2003, 16:03
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Creo que lo que te pasa es que estas accesando a las variables de POST de manera directa, y es probable que tu servidor tenga el register_globals=off...

Te recomiendo agregar esto:

Código PHP:
<?
$nombre
=$_POST["nombre"];
$telefono=$_POST["telefono"];
//Conexion con la base
mysql_connect("44.44.44.44","yo","contraseña");
//Ejecucion de la sentencia SQL
mysql_db_query("ejemplo","insert into compis (nombre,telefono) values ('$nombre','$telefono')");
?>
__________________
Manoloweb
  #5 (permalink)  
Antiguo 01/07/2003, 16:09
 
Fecha de Ingreso: marzo-2003
Mensajes: 277
Antigüedad: 21 años, 1 mes
Puntos: 0
una pregunta tienes una base de datos llamada "ejemplo"????

otra posible soluccion para detectar donde esta el problema prueba hacer esto

cuando hagas una consulta a la base de datos pon esto al final

or die (mysql_error());
ejemplo


mysql_db_query("ejemplo","insert into compis (nombre,telefono) values ('$nombre','$telefono')") or die (mysql_error());

con esto cuando no funcione la sintaxis te va a decir por que es el error


salu2
  #6 (permalink)  
Antiguo 01/07/2003, 16:16
Avatar de amanda75  
Fecha de Ingreso: junio-2003
Ubicación: cerca, pero no mucho
Mensajes: 684
Antigüedad: 20 años, 10 meses
Puntos: 0
Me anoto el truco, kech, y era eso que la base de datos no se llama ejemplo

Pero ahora tengo otro problema, no me da error, pero no me escribe los registros en la base
  #7 (permalink)  
Antiguo 01/07/2003, 16:17
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
OK, mira mi post anterior. Eso puede ser.
__________________
Manoloweb
  #8 (permalink)  
Antiguo 01/07/2003, 16:27
Avatar de amanda75  
Fecha de Ingreso: junio-2003
Ubicación: cerca, pero no mucho
Mensajes: 684
Antigüedad: 20 años, 10 meses
Puntos: 0
En eso estaba Manolo, intentado lo que me dijiste, lo he hecho, pero siguen sin añadirse los registros.
  #9 (permalink)  
Antiguo 01/07/2003, 16:33
Avatar de amanda75  
Fecha de Ingreso: junio-2003
Ubicación: cerca, pero no mucho
Mensajes: 684
Antigüedad: 20 años, 10 meses
Puntos: 0
¿alguien seria tan amable de probar los ejemplos de este tutorial

http://www.desarrolloweb.com/articulos/322


y decirme si se le añaden los registros a su base de datos?
  #10 (permalink)  
Antiguo 01/07/2003, 18:33
Avatar de camargo  
Fecha de Ingreso: abril-2002
Ubicación: Kerétaro, Méjiko
Mensajes: 1.045
Antigüedad: 22 años
Puntos: 2
ok, modificare algo el codigo para que funcione a la perfeccion ;)

Insertar.html
Código:
<form method="post" action="insertar.php">
Nombre: <input type="text" name="nombre"><br>
Teléfono: <input type="text" name="telefono"><br>
<input type="submit" value="Insertar!">
</FORM>
Crearemos un file llamado conexio.php para evitar poner el codigo en cada file solo añadiendo un include()

Código PHP:
<?php

$conexio 
mysql_connect("localhost","user","pass");   
mysql_select_db ("nombreBD"$conexio) OR die ("No es posible conectarte a la BD");

?>
Despues el insertar.php:
Código PHP:
<?
include("conexio.php");

$nombre$_POST['nombre'];
$telefono$_POST['telefono'];
$sql mysql_query("INSERT INTO compis (nombre,telefono) VALUES ('$nombre','$telefono')");

echo 
"Datos insertados con exito<br>Nombre: $nombre<br>Telefono: $telefono";
?>
y x ultimo lectura.php:

Código PHP:

<?
include("conexio.php");

$sql=mysql_query("SELECT * FROM compis");
?>
<table align="center">
<tr>
<td>Nombre</td>
<td>Teléfono</td>
</tr>
<?
//Mostramos los registros
while($row=mysql_fetch_array($sql)){
echo 
"<tr><td>".$row[nombre]."</td>";
echo 
"<td>".$row[telefono]."</td></tr>";
}
mysql_free_result($sql);
?>
Asi debera funcionar a la perfeccion ;)

Salu2
__________________
http://www.chorcha.com
  #11 (permalink)  
Antiguo 02/07/2003, 12:17
Avatar de amanda75  
Fecha de Ingreso: junio-2003
Ubicación: cerca, pero no mucho
Mensajes: 684
Antigüedad: 20 años, 10 meses
Puntos: 0
Pongo aqui el enlace por si alguien tiene el mismo problema que sepa la solución y por qué puede estar dando tantos errores (desde España, claro)

http://www.forosdelweb.com/showthrea...074#post428074
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 16:21.