Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Problema al insertar con jquery y php

Estas en el tema de Problema al insertar con jquery y php en el foro de Jquery en Foros del Web. Buenos días, en primer lugar decir que estoy aprendiendo el manejo de javascript y jquery. Tengo un problema a la hora de insertar un registro ...
  #1 (permalink)  
Antiguo 14/09/2014, 02:55
Avatar de kede6  
Fecha de Ingreso: julio-2013
Ubicación: Canet d'en Berenguer
Mensajes: 18
Antigüedad: 10 años, 8 meses
Puntos: 0
Problema al insertar con jquery y php

Buenos días,
en primer lugar decir que estoy aprendiendo el manejo de javascript y jquery. Tengo un problema a la hora de insertar un registro en una tabla mysql, pero esxplico bien los pasos para que podáis ayudarme mejor:

1-esta es la página principal "noticias.php" que se carga en un div especifico al pulsar un boton:
Código:
<div id="seccion_titulo">Noticias</div>
<div class="listado_titulo">Listado de Noticias</div>
<div class="listado_noticias">
	<div class="listado completo">
		<table class="tabla_noticias">
		<tr>
			<td style="width:50px">Id</td>
			<td style="width:200px">Titulo</td>
			<td style="width:200px">Pie noticia</td>
			<td style="width:150px">Pie foto</td>
			<td style="width:80px">Fecha</td>
			<td style="width:80px">Hora</td>
			<td style="width:80px">Autor</td>
			<td style="width:80px"></td>
		</tr>
		<?php
			header('Content-Type: text/html; charset=ISO-8859-1');
			require_once "conexion.php";
			$query="SELECT * FROM noticias order by id_noticia DESC";
			$result=$con->query($query);
			while($row=mysqli_fetch_array($result)){
				$id_noticia=$row['id_noticia'];
				$titulo=$row['titulo'];
				$pie_noticia=$row['pie_noticia'];
				$descripcion=$row['descripcion'];
				$pie_foto=$row['pie_foto'];
				$fecha=$row['fecha'];
				$hora=$row['hora'];
				$autor=$row['autor'];
				setlocale(LC_ALL,"es_ES@euro","es_ES","esp");
				$fecha_final = strftime("%d/%m/%Y", strtotime("$fecha"));
			?>
			<tr>
				<td><?php echo $id_noticia;?></td>
				<td><?php echo $titulo;?></td>
				<td><?php echo $pie_noticia;?></td>
				<td><?php echo $pie_foto;?></td>
				<td><?php echo $fecha_final;?></td>
				<td><?php echo $hora;?></td>
				<td><?php echo $autor;?></td>
				<td><a class="Editar" onclick="editar_noticia('<?php echo $id_noticia;?>')">Editar</a></td>
			</tr>
		<?php };?>
		</table>
	</div>
</div>
<div class="botones_acciones">
	<a onclick="nueva_noticia()"><input type="button" value="Nueva Noticia" style="width:190px"></a>
</div>
<div class="noticia_seleccionada">
</div>
2-Al pulsar en Nueva Noticia, se ejecuta este código javascript:

Código:
function nueva_noticia(){
	$(".noticia_seleccionada").load("Nueva_noticia.php");
}
3-se carga el contenido de "Nueva_noticia.php" en el div correspondiente. Su código es este:
Código:
<form method="post" id="nueva_noticia" action="Accion_noticias.php">
	<div class="columna">
		<div class="texto">T&iacutetulo:</div>
		<div class="texto">Pie de Noticia:</div>
		<div class="texto">Descripci&oacuten:</div>
	</div>
	<div class="columna2">
		<div class="text"><input type="text" name="titulo" style="width:300px" value=""></div>
		<div class="text"><input type="text" name="pie_noticia" style="width:300px" value=""></div>
		<div class="areatext"><textarea name="descripcion" style="width:300px;height:170px"></textarea></div>
	</div>
	<div class="columna">
		<div class="texto">Autor:</div>
		<div class="texto">Pie de Foto:</div>
		<div class="texto">Foto:</div>
	</div>
	<div class="columna2">
		<div class="text"><input type="text" name="autor" style="width:150px" value=""></div>
		<div class="text"><input type="text" name="pie_foto" style="width:300px" value=""></div>
		<div class="imagen"><div class="foto"></div><input type="file" name="foto" value="Editar foto" /></div>
	</div>
	<div class="botones_noticia">
		<br><br><input type="submit" name="insertar" id="insertar" value="Guardar Noticia" style="width:190px">
		<input type="button" value="Cancelar Cambios" style="width:190px">
		<input type="button" value="Reset" style="width:190px"><hr>
		<input type="button" value="Publicar Facebook" style="width:190px">
		<input type="button" value="Publicar Twitter" style="width:190px">
	</div>
</form>
4-Se introducen los datos y al pulsar guardar noticia se ejecuta "Accion_noticias.php", cuyo codigo es este:
Código:
if (isset($_POST['insertar'])){
$titulo    		= $_POST['titulo'];
$pie_noticia    = $_POST['pie_noticia'];
$descripcion    = $_POST['descripcion'];
$autor     		= $_POST['autor'];
$pie_foto     	= $_POST['pie_foto'];
$fecha          = date("Y/m/d");
$hora			= date("H:i:s");
require_once 'conexion.php';	
$query = "INSERT INTO noticias (titulo, pie_noticia, descripcion, pie_foto, autor, fecha, hora)
	VALUES('$titulo','$pie_noticia','$descripcion','$pie_foto','$autor', '$fecha', '$hora')";

	mysqli_query($con,$query);

		echo "<script>
	alert('La noticia ha sido introducida con éxito.');
	window.location.href='index.html'
	</script>";
}
PROBLEMA: todo me carga bien, incluso me sale el mensaje de guardado con éxito, pero realmente no me introduce nada en la BD. Alguien podría decirme u orientarme sobre qué estoy haciendo mal??
Muchas gracias por anticipado y un saludo
  #2 (permalink)  
Antiguo 14/09/2014, 09:31
 
Fecha de Ingreso: abril-2014
Mensajes: 37
Antigüedad: 9 años, 11 meses
Puntos: 2
Respuesta: Problema al insertar con jquery y php

Se me ocurre que sea un problema en el formulario, no veo donde haces el manejo del archivo de la foto, debes declarar tu formulario con el atributo de enctype="multipart/form-data", y luego hacer el manejo de ese archivo, moviendolo a un directorio, al menos eso tengo entendido.

Documentate un poco mas en el uso de archivos en php, en este foro hay mucho material. Si sigues con el problema, anexa tu script de la base de datos y te ayudo.
  #3 (permalink)  
Antiguo 14/09/2014, 10:02
Avatar de kede6  
Fecha de Ingreso: julio-2013
Ubicación: Canet d'en Berenguer
Mensajes: 18
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Problema al insertar con jquery y php

Buenas Rober,
gracias por contestar. Pues el archivo de la foto lo he dejado para cuando me haga la introducción a la BD...he deshabilitado la parte de la imagen y sigue sin funcionar la inserción. Estoy revisando el código del formulario pero sigo sin dar con el problema...Gracias por los consejos, lo hare sin duda
  #4 (permalink)  
Antiguo 14/09/2014, 10:16
 
Fecha de Ingreso: abril-2014
Mensajes: 37
Antigüedad: 9 años, 11 meses
Puntos: 2
Respuesta: Problema al insertar con jquery y php

Pero el campo en la base de datos es de qué tipo? si es de tipo string, entonces si debe haber algun problema, pásame el script de la base de datos a ver si puedo ayudarte.

Otra cosa es que en el archivo Accion_noticias.php veo que incluyes el archivo conexion.php, no sé cual sea la estructura del mismo, pero veo que en la anterior inclusión rabajaste la variable $con cómo un objeto, y ahora lo usas como atributo, no sé el por qué, pero intenta usarlo como antes.

Código PHP:
Ver original
  1. $con->query("INSERT INTO noticias (titulo, pie_noticia, descripcion, pie_foto, autor, fecha, hora)
  2.     VALUES('$titulo','$pie_noticia','$descripcion','$pie_foto','$autor', '$fecha', '$hora')";

Pero me gustaría ver tu DB para guiarme mejor.
  #5 (permalink)  
Antiguo 14/09/2014, 11:00
Avatar de kede6  
Fecha de Ingreso: julio-2013
Ubicación: Canet d'en Berenguer
Mensajes: 18
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Problema al insertar con jquery y php

Esta es la estructura de la tabla:

`id_noticia` int(11) NOT NULL PRIMARY KEY AUTOINCREMENT,
`titulo` varchar(52) COLLATE utf8_spanish_ci NOT NULL,
`pie_titulo` varchar(100) COLLATE utf8_spanish_ci NOT NULL,
`descripcion` varchar(5000) COLLATE utf8_spanish_ci NOT NULL,
`pie_foto` varchar(70) COLLATE utf8_spanish_ci NOT NULL,
`Autor` varchar(50) COLLATE utf8_spanish_ci NOT NULL,
`fecha` date NOT NULL,
`hora` time NOT NULL

$con es la variable de la conexión:

$con = mysqli_connect ("server", "user", "pass", "BD");
  #6 (permalink)  
Antiguo 14/09/2014, 12:52
 
Fecha de Ingreso: abril-2014
Mensajes: 37
Antigüedad: 9 años, 11 meses
Puntos: 2
Respuesta: Problema al insertar con jquery y php

Tienes problemas referenciando los campos de la BD, recuerda que estos son sensibles a mayusculas , eso en el caso de Autor, no es igual que autor.

Por otro lado, no existe un campo pie_noticia, en su lugar tienes pie_titulo.

Así que el código quedaría tal que así.

Archivo "noticias.php"
Código PHP:
Ver original
  1. <?php
  2.     $con=mysqli_connect("localhost", "root", "123456", "test");//lo use en el mio. tu hazlo como bien te convenga.
  3.     $query="SELECT * FROM noticias order by id_noticia DESC";
  4.     $result=$con->query($query);//Igual aquí.
  5.     while($row=mysqli_fetch_array($result)){
  6.         $id_noticia=$row['id_noticia'];
  7.         $titulo=$row['titulo'];
  8.         $pie_noticia=$row['pie_titulo'];
  9.         $descripcion=$row['descripcion'];
  10.         $pie_foto=$row['pie_foto'];
  11.         $fecha=$row['fecha'];
  12.         $hora=$row['hora'];
  13.         $autor=$row['Autor'];
  14.         setlocale(LC_ALL,"es_ES@euro","es_ES","esp");
  15.         $fecha_final = strftime("%d/%m/%Y", strtotime("$fecha"));
  16.     ?>
  17.     <tr>
  18.         <td><?php echo $id_noticia;?></td>
  19.         <td><?php echo $titulo;?></td>
  20.         <td><?php echo $pie_noticia;?></td>
  21.         <td><?php echo $pie_foto;?></td>
  22.         <td><?php echo $fecha_final;?></td>
  23.         <td><?php echo $hora;?></td>
  24.         <td><?php echo $autor;?></td>
  25.         <td><a href="#" class="Editar" onclick="editar_noticia('<?php echo $id_noticia;?>')">Editar</a></td>
  26.     </tr>
  27. <?php }?>

Archivo "Accion_noticias.php"

Código PHP:
Ver original
  1. <?php
  2. if (isset($_POST['insertar'])){
  3. $titulo         = $_POST['titulo'];
  4. $pie_noticia    = $_POST['pie_noticia'];
  5. $descripcion    = $_POST['descripcion'];
  6. $autor          = $_POST['autor'];
  7. $pie_foto       = $_POST['pie_foto'];
  8. $fecha          = date("Y/m/d");
  9. $hora           = date("H:i:s");
  10. $con=mysqli_connect("localhost", "root", "123456", "test");
  11. $query = "INSERT INTO noticias (titulo, pie_titulo, descripcion, pie_foto, Autor, fecha, hora)
  12.     VALUES('$titulo','$pie_noticia','$descripcion','$pie_foto','$autor', '$fecha', '$hora')";
  13.  
  14.     $con->query($query);
  15.         echo "<script>
  16.     alert('La noticia ha sido introducida con éxito.');
  17.     window.location.href='index.html'
  18.     </script>";
  19. }
  20. ?>

Espero haberte ayudado, cualquier cosa, avisa. no te olvides de marcar como solucionado si ese es el caso.
  #7 (permalink)  
Antiguo 14/09/2014, 14:40
Avatar de kede6  
Fecha de Ingreso: julio-2013
Ubicación: Canet d'en Berenguer
Mensajes: 18
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Problema al insertar con jquery y php

Buenas de nuevo Rober, no me había dado cuenta de ese detalle, tienes razón...simplemente he modificado los nombres de la BD a los que tengo en los códigos...ahora esta todo igual en minúsculas y con pie_noticia en la BD...No me funcionaba pero tras probar un poco he descubierto que el error estaba en la sintaxis del insert. De esta forma me funciona perfecto:

INSERT INTO noticias ( titulo, pie_noticia, descripcion, pie_foto, autor, fecha, hora) VALUES ('$titulo', '$pie_noticia', '$descripcion', '$pie_foto', '$autor', '$fecha', '$hora')

Muchas gracias por el cable. Un saludo

Etiquetas: php
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 04:57.