Autor Tema: PHP e INSERT INTO VALUES mysql con datos recuperados de formulario  (Leído 11872 veces)

URKA84

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 90
    • Ver Perfil
Hola otra vez.
He creado un formulario con espacios para introducir los datos "pueblos" y "fiesta", y a parte un archivo script.php para que coja los datos del formulario y los introduzca en la base de datos.

Ahora bien, no me sale ningún mensaje de error, pero tampoco consigo que se introduzcan los datos. Antes se introducían los datos, pero sin querer borré el archivo, ahora lo he vuelto a escribir pero no me funciona.

Código del formulario:
Código: [Seleccionar]
<form id="form1" name="form1" method="get" action="script.php">
<p>Pueblo:
  <input type="text" name="pueblo" value="">
  Fiesta: <input type="text" name="fiesta" value="">       
  </p>
<p>Fecha inicio (día/mes/año):
  <input type="text" name="fecha_inicio" value="">
  </p>
<p>Fecha fin (día/mes/año):   
          <input type="text" name="fecha_fin" value="">       
  </p>
<p>
  <input type="submit"/>
  </p>       
    </form>

Código de script.php:

Código: [Seleccionar]
<?php 

$pueblo$_GET['pueblo'];

$fiesta$_GET['fiesta'];

//$fecha_inicio= $_GET['fecha_inicio'];

//$fecha_fin= $_GET['fecha_fin'];


//$fecha_inicio = GET_FORMAT($fecha_inicio,'USA');


$link mysql_connect("mysql13.000webhost.com","a4047274_fiestas","urkaka12");

mysql_select_db("a4047274_fiestas"$link);

mysql_query("INSERT INTO valencia VALUES('$pueblo', '$fiesta')"$link);

mysql_close($link);



?>

Gracias.
« Última modificación: 13 de Septiembre 2014, 18:54 por Alex Rodríguez »

dongo

  • Intermedio
  • ***
  • Mensajes: 177
    • Ver Perfil
Re:PHP e INSERT mysql
« Respuesta #1 en: 11 de Agosto 2014, 10:32 »
Hola, buenos días, antes de nada, te recomiendo que jamás, jamás, pongas datos reales sobre tu bbdd(servidor user y pass), no se si son reales lo que has puesto pero parece que si, yo editaría el mensaje y los quitaría, no es necesario que des datos personales como estos.

Tras este consejo, bueno he repasado el código y parece estar todo correcto, así que puede ser o que esta fallando al hacer la conexión, o al hacer la inserción.

te recomendaría que compruebes esas dos sentencias, para ello te añado a tu código lo que debes poner para ver si alguno falla.

Código: [Seleccionar]
<?php 

$pueblo$_GET['pueblo'];

$fiesta$_GET['fiesta'];

//$fecha_inicio= $_GET['fecha_inicio'];

//$fecha_fin= $_GET['fecha_fin'];


//$fecha_inicio = GET_FORMAT($fecha_inicio,'USA');


$link mysql_connect("*******","*******","*******");
if(! 
$link )
{
  die(
'No es posible conectar: ' mysql_error());
}
else
{
    echo 
"conexion correcta";
}


mysql_select_db("a4047274_fiestas"$link);

$result=mysql_query("INSERT INTO valencia VALUES('$pueblo', '$fiesta')"$link);

if(! 
$result )
{
  die(
'No se pudieron insertar los datos: ' mysql_error());
}
else
{
     echo 
"datos insertados";
}
mysql_close($link);



?>


Si te fijas los dos if que he metido, el primero es para comprobar si la conexión a sido correcta, y el segundo para ver si se insertaron los datos, en caso de fallar alguna de esas dos sentencias, nos dirá a que es debido. Intentalo con ese script a ver si se puede averiguar que esta pasando.

Un saludo!

edito: he estado haciendo ping y nmap(3306) al servidor que has puesto y no se obtiene respuesta, como te digo no se si es la dirección real, pero comprueba que el host(mysql13.000webhost.com) este bien
« Última modificación: 11 de Agosto 2014, 13:34 por dongo »

URKA84

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 90
    • Ver Perfil
Re:PHP e INSERT mysql
« Respuesta #2 en: 11 de Agosto 2014, 22:03 »
Hola, he hecho lo que me has dicho.

PRIMERO:

He sustituido mi código por el tuyo, incluyendo los datos de conexión.

Bueno... me ha salido esto por pantalla: "conexion correctaNo se pudieron insertar los datos: Column count doesn't match value count at row 1"

Como no entiendo a qué se refiere la parte de "Column count doesn't match value count at row 1" probé a borrar las columnas "fecha_fin" y "fecha_inicio" de la base de datos, y funcionó.

Me apareció por pantalla que los datos fueron insertados correctamente.


SEGUNDO:

Por otro lado intenté insertar valores para fecha_fin y fecha_inicio, columnas que volví a insertar en la base de datos... pero no funcionó.

A ver si tú lo entiendes xD.

URKA84

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 90
    • Ver Perfil
Re:PHP e INSERT mysql
« Respuesta #3 en: 11 de Agosto 2014, 22:03 »
Ah, y gracias.

URKA84

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 90
    • Ver Perfil
Re:PHP e INSERT mysql
« Respuesta #4 en: 11 de Agosto 2014, 22:11 »
Hola otra vez.

Perdona las molestias.

Verás, se me había olvidado que, al insertar datos para fecha_fin y fecha_inicio debía modificar script.php para que cogiera los datos y los pasara a la base de datos.

Modifiqué el archivo script.php y ahora sí funciona...

Al parecer solamente faltaba introducir datos para TODAS las columnas de la tabla...

disculpad, os he hecho perder el tiempo, pero es que no domino aún sql.

Gracias.

dongo

  • Intermedio
  • ***
  • Mensajes: 177
    • Ver Perfil
Re:PHP e INSERT mysql
« Respuesta #5 en: 11 de Agosto 2014, 22:17 »
Podrías ponerme el código php con  las fechas incluidas. Asi lo reviso y veo que puede estar pasando.

Y ejk a ver, cuando tu vas a meter datos en una tabla, o los metes todos haciendo:

Código: [Seleccionar]
insert into valencia values('$pueblo','$fiesta','$fecha_ini', '$fecha_fin' )

o si solo vas a meter algunos, debes indicar cuales vas a meter por ejemplo:

Código: [Seleccionar]
insert into  valencia(pueblo, fiesta) VALUES('$pueblo', '$fiesta')

Si te fijas, en la segunda sentencia, como no estoy metiendo solo algunos valores, tengo que indicar después del nombre de la tabla los valores que estoy metiendo, mientras que en la primera como no le digo que campos estoy insertando, me obliga a que los inserte todos. Entonces esto es lo que te esta pasando a ti.

si quieres eso, pon nos el código php y le echamos el ojo ;)

Nota: Precisamente esto te andaba yo contando XDD, no te preocupes, para eso andamos por aqui, para aprender entre todos.
« Última modificación: 11 de Agosto 2014, 22:20 por dongo »

URKA84

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 90
    • Ver Perfil
Re:PHP e INSERT mysql
« Respuesta #6 en: 12 de Agosto 2014, 11:40 »
Verás, yo utilizo varios archivos: formulario.html (que recoge los datos insertados por el usuario), script.php (trata los datos y los inserta en la base de datos).

No tiene sentido que te suba todo el código de formulario.html (más que nada porque es un desastre), pero te paso la parte del formulario.

FORMULARIO.HTML:
Verás que te indica que los datos deben ser insertados con la forma día/mes/año. Mentira, porque aún no lo he terminado, tienes que ponerlo en el formato aaaa-mm-dd.

Código: [Seleccionar]
<form id="form1" name="form1" method="get" action="script.php">
<p>Pueblo:
  <input type="text" name="pueblo" value="">
  Fiesta: <input type="text" name="fiesta" value="">       
  </p>
<p>Fecha inicio (día/mes/año):
  <input type="text" name="fecha_inicio" value="">
  </p>
<p>Fecha fin (día/mes/año):   
          <input type="text" name="fecha_fin" value="">       
  </p>
<p>
  <input type="submit"/>
  </p>       
    </form>


SCRIPT.PHP:
Fíjate que he puesto la contraseña con '*', por empezar a acostumbrarme, pero ya la sabes.

Código: [Seleccionar]
<?php 

$pueblo$_GET['pueblo'];

$fiesta$_GET['fiesta'];

//$fecha_inicio= $_GET['fecha_inicio'];

//$fecha_fin= $_GET['fecha_fin'];


//$fecha_inicio = GET_FORMAT($fecha_inicio,'USA');


$link mysql_connect("mysql13.000webhost.com","a4047274_fiestas","******");

mysql_select_db("a4047274_fiestas"$link);

mysql_query("INSERT INTO valencia VALUES('$pueblo', '$fiesta')"$link);

mysql_close($link);

?>

dongo

  • Intermedio
  • ***
  • Mensajes: 177
    • Ver Perfil
Re:PHP e INSERT mysql
« Respuesta #7 en: 12 de Agosto 2014, 12:37 »
Me has vuelto a poner exactamente el mismo código de ayer...

Bueno intentare explicarte mediante ejemplos, imagina que tenemos una tabla que se llama valencia, imagina que esta tabla
tiene 4 columnas, nombre_fiesta, pueblo, fecha_inicio y fecha_fin.

ahora imagina que tenemos 4 variables php, las cuales cada una recoge un valor del formulario, llamémoslas:

$nombrePueblo
$nombreFiesta
$fechaInicio
$fechaFin

Pues bien si vas a meter todos los campos en la tabla, debes usar una sentencia tipo:

Código: [Seleccionar]
INSERT INTO valencia VALUES( '$nombrePueblo','$nombreFiesta','$fechaInicio','$fechaFin' );

Con esta sentencia de este tipo, nos obliga a rellenar todos los campos que tiene la tabla.

En cambio, imagina que solo quieres almacenar el pueblo y la fiesta y dejar la fecha para mas adelante,
entonces debes usar una sentencia de este tipo:

Código: [Seleccionar]
INSERT INTO valencia(pueblo,nombre_fiesta) VALUES( '$nombrePueblo','$nombreFiesta');

Fíjate en  que la segunda sentencia se especifica las columnas  que vamos a meter. Otro ejemplo, imagina  que ahora
solo vamos a meter el nombre de la fiesta, la fecha de inicio y la de fin, entonces tendríamos la siguiente sentencia:

Código: [Seleccionar]
INSERT INTO valencia(nombre_fiesta, fecha_inicio,fecha_fin) VALUES( '$nombreFiesta', '$fechaInicio','$fechaFin');

Siguiente cosa: formato de las fechas:

Para insertar fechas en mysql es recomendable usar la función STR_TO_DATE(cadena_fecha, cadena_formato) de mysql. El enlace a la documentación de la función es el siguiente:

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_str-to-date

por lo cual según lo que he visto tu tienes los 4 campos 2 de ellos son fechas y ademas dices que con un formato de aaaa-mm-dd, pues bien, suponiendo que seguimos con las variables anteriores, tu sentencia para meter en la tabla todos los campos podría ser una de estas dos:

Código: [Seleccionar]
INSERT INTO valencia(nombre_fiesta,pueblo, fecha_inicio,fecha_fin) VALUES( '$nombreFiesta',$nombre_pueblo,STR_TO_DATE('$fechaInicio','%Y-%m-%d'), STR_TO_DATE('$fechaFin','%Y-%m-%d'));

o

Código: [Seleccionar]
INSERT INTO valencia VALUES( '$nombreFiesta',$nombre_pueblo,STR_TO_DATE('$fechaInicio','%Y-%m-%d'), STR_TO_DATE('$fechaFin','%Y-%m-%d'));

la primera le indicamos el orden en que entraran los datos, y en la segunda los datos entraran en el mismo orden en que se crearon los campos en la tabla cuando la creaste.

La verdad que es un tema extenso y se podría hablar durante días de el, yo te recomendaría que siempre que vayas a insertar datos, lo hagas de la forma:

Código: [Seleccionar]
insert into nombre_tabla(lista_de_columnas) values(lista_de_valores)

De esta manera, nunca tendrás la necesidad de recordar el orden de las filas ya que lo impones tu mediante la lista de columnas le vas diciendo en que orden van a ir entrando los datos, intenta montarte el script.php de manera que insertes todos los datos(incluidas fechas), y ya si tienes algún problema nos cuentas. Como te digo, el código que me has pasado es exactamente el mismo de ayer y en teoría te debe funcionar, siempre y cuando quitaras las columnas fecha_inicio y fecha_fin de la tabla.

Bueno eso, intenta pelearte un rato para conseguir insertar todos los valores del formulario en la tabla, y ya si tienes algún problema nos cuentas.
« Última modificación: 12 de Agosto 2014, 12:40 por dongo »

URKA84

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 90
    • Ver Perfil
Re:PHP e INSERT mysql
« Respuesta #8 en: 12 de Agosto 2014, 21:18 »
Hola, te he puesto todo lo que hice.

No hay más código php que ese.

O quizás no te entiendo.

:D

De todas formas he entendido todo, y lo he puesto en marcha.

Ahora sólo me falta convertir los datos "string" en "DATE", eso me había faltado.

Gracias.

dongo

  • Intermedio
  • ***
  • Mensajes: 177
    • Ver Perfil
Re:PHP e INSERT mysql
« Respuesta #9 en: 12 de Agosto 2014, 21:25 »
Pues eso es lo que yo esperaba, que me mandaras el php con el intento de meter también las fechas en la bbdd, bueno inténtalo si tienes algún quebranto por aquí andamos.

URKA84

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 90
    • Ver Perfil
Re:PHP e INSERT mysql
« Respuesta #10 en: 15 de Agosto 2014, 11:36 »
Al final he cambiado el insert y ha funcionado.

Sinceramente no sé que he hecho mal. Supongo que tendré que mirar detenidamente el código para encontrar los errores.

Utilizaré el código que me habéis dado, pero vamos... si no sé que hice mal no voy a aprender xD. No os pido que sigáis ayudándome con esto porque ya habéis hecho bastante, y es un tostón.

De todas formas gracias, el php y el html son fáciles en apariencia... pero meto la pata más que con java.

Gracias.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".