Foros del Web » Programando para Internet » PHP »

No puedo grabar en mysql

Estas en el tema de No puedo grabar en mysql en el foro de PHP en Foros del Web. Hola! No se que estare haciendo mal que no me anda nada, estoy creando un tipo foro chiquito con 3 archivos, 1 create.php con las ...
  #1 (permalink)  
Antiguo 29/08/2003, 13:50
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 20 años, 8 meses
Puntos: 3
No puedo grabar en mysql

Hola!

No se que estare haciendo mal que no me anda nada, estoy creando un tipo foro chiquito con 3 archivos, 1 create.php con las instrucciones para crear la bd otro form.php donde tiene los formularios donde se dejan el mensaje, autor, etc y otro datos.php para mostrar estos mensajes, aca estan los codigos:

create.php

<?php
function Conectarse() {
if (!($link=mysql_connect("localhost","sender","zonaC APOlucas"))) {
die("Could not connect");
}
if (mysql_create_db ("Foro")) {
print("Database created successfully\n");
} else {
printf("Error creating database: %s\n", mysql_error ());
}

$sql="CREATE TABLE 'Foros' (
'id' INTO NOT NULL AUTO_INCREMENT,
'nombre' VARCHAR(60) NOT NULL,
'email' VARCHAR(60) NOT NULL,
'mensaje' TEXT NOT NULL,
INDEX ('id') )";
mysql_query($sql);
mysql_close;
}
?>

el archivo form.php

<?php
function Conectarse()
{
if (!($link=mysql_connect("localhost","user","pass")) )
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("Lucas",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}
if ($_POST[enviar]):
$link=Conectarse();
$sql = "INSERT INTO Lucas (nombre, email, mensaje)";
$sql.= "VALUES ('$nombre','$email','$mensaje', NOW(),NOW())";
$rs = mysql_query($sql, $con) or die("Error al grabar un mensaje: ".mysql_error);
mysql_query($sql,$link);
echo "Gracias por postear";
mysql_close($link); //cierra la conexion
else:
?>
<form method="POST" action="datos.php">
<div align="center">
<input type="text" name="nombre" value="Tu Nick">
<br>
<input type="text" name="email" value="Tu Email">
<br>
<textarea name="texto" cols="10" rows="5"></textarea>
<br>
<input type="submit" name="enviar" value="Enviar">
</div>
</form>
<?
endif;
?>

y el archivo datos.php para mostrar todo:

<?php
function Conectarse()
{
if (!($link=mysql_connect("localhost","user","pass")) )
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("Lucas",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}
$sql = "select * from Lucas";

$rs = mysql_query($sql,$link);

if ($rs):
while ($row = mysql_fetch_object($rs)):
echo $row->nombre;
echo $row->email;
echo $row->mensaje;
endwhile;
endif;
?>

a ver si alguien me ayuda...
  #2 (permalink)  
Antiguo 29/08/2003, 14:10
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Podrias indicar el error que te da.

Pero por lo que veo es en tu consulta SQL de INSERT. Le dices que inserte en 3 campos, pero le pasas 5 valores. Y por lo que veo en la definicion de la tabla, es que solo quieres meter tres campos.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 29/08/2003, 15:23
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 20 años, 8 meses
Puntos: 3
cuando ejecuto create.php no hace nada, sale la pagina en blanco pero no graba nada, ese es el drama, no me da error de ningun tipo.
  #4 (permalink)  
Antiguo 29/08/2003, 15:38
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Bien, otra cosa que me he dado cuenta. Fijate en el action de tu form. Apunta a datos.php que es el que muestra, no el que graba. El action debe apuntar a form.php, que es el que graba.

Ahora si te saldra el error del die().

saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 29/08/2003, 16:00
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 20 años, 8 meses
Puntos: 3
ok ahora tengo este error: Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in D:\FoxServ\www\probando.php on line 27
Error al grabar un mensaje: mysql_error

que tengo que cambiar? va queriendo...saludos!
  #6 (permalink)  
Antiguo 29/08/2003, 16:14
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Bueno, mira tu codigo. Mira el mensaje de error. Mira el manual mysql_query(). Despues de haberlo mirado te daras cuentaque hace referencia al segundo parametro. En tu mysql_query() tienes puesto $con. ¿De donde sale ese valor? Que yo vea de ningun sitio. Simplemente se te ha quedado del copypasteo. Tu lo que debes poner es $link, que es la variable que tu usas. Ademas, no es mysql_error, sino mysql_error(), con los parentesis para que sea una funcion. Sin ellos seria una constante.

Ahora te volvera a salir otro mensaje de error.

Suerte.

PD: tienes 2 mysql_query() seguidos. Quita el segundo.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 29/08/2003, 16:22
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 20 años, 8 meses
Puntos: 3
Gracias!, de a poco se va aprendiendo, bueno ahora tengo este error: Error al grabar un mensaje: You have an error in your SQL syntax near ')' at line 1 , no entiendo a que se refiere con line 1, ahi esta <html> jeje, asique no se de que habla.
  #8 (permalink)  
Antiguo 29/08/2003, 16:32
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
No es un mensaje de error de PHP, sino que es el mensaje de mysql_error(). No se refiere a la linea 1 del script, sino a la linea 1 de la sentecia SQL. Bien, no es el mensaje que esperaba. Para ver la sentencia exacta que intenta ejecutar, cambia:
Código PHP:
or die("Error al grabar un mensaje: ".mysql_error()); 
por
Código PHP:
or die("Error al grabar un mensaje: $sql .<br>MySQL dice: ".mysql_error()); 
Asi veras la consulta que realmente intentas ejecutar en MySQL. Que puede ser distinta a la que crees que esta ejecutando.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #9 (permalink)  
Antiguo 29/08/2003, 17:23
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 20 años, 8 meses
Puntos: 3
bueno, ahora me dice esto: Error al grabar un mensaje: INSERT INTO Lucas (nombre, email, mensaje)VALUES ('','','', NOW(),NOW(),) .
MySQL dice: You have an error in your SQL syntax near ')' at line 1

no se si te referias a ese error.
  #10 (permalink)  
Antiguo 29/08/2003, 18:06
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Pues no. Dice error de sintaxis cerca de ), pero como tiene 2 ), no se exactamtne a cual se refiere. Prueba dejando un esapcio en blanco antes de VALUE. Y si el mensaje que has puesto es textual, hay una coma que sobra detras del segundo NOW().

Otra cosa, si te fijas no ha tomado los valores de los campos del formulario o eran vacios, no se como lo has probado.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #11 (permalink)  
Antiguo 29/08/2003, 18:38
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 20 años, 8 meses
Puntos: 3
Bueno ahora obtengo ese error: Error al grabar un mensaje: INSERT INTO Lucas (nombre, email, mensaje) VALUES ('','','', NOW(),NOW()) .
MySQL dice: Table 'lucas.lucas' doesn't exist
  #12 (permalink)  
Antiguo 30/08/2003, 14:23
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Bien, fijate en tu script de creacion de la tabla. La tabla se llama 'Foros' y en tu SQL le estas diciendo que inserte en la tabla 'Lucas'. Cambia el

INSERT INTO Lucas

por

INSERT INTO Foros

Revisa en www.mysql.com la sintaxis del INSERT INTO
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 19:09.