Foros del Web » Programando para Internet » PHP »

Visualizar registro en un formulario y actualizar

Estas en el tema de Visualizar registro en un formulario y actualizar en el foro de PHP en Foros del Web. Buenas. Soy nuevo en el mundillo y tengo un pequeño problema. Estoy haciendo un pequeño panel de control para una web que me permite crear, ...
  #1 (permalink)  
Antiguo 02/02/2008, 21:02
 
Fecha de Ingreso: enero-2007
Mensajes: 40
Antigüedad: 17 años, 2 meses
Puntos: 0
Visualizar registro en un formulario y actualizar

Buenas. Soy nuevo en el mundillo y tengo un pequeño problema. Estoy haciendo un pequeño panel de control para una web que me permite crear, editar y eliminar noticias. Lo tengo prácticamente acabado pero se me ha cruzado la última cosa que es editar una noticia ya entrada.

Lo que intento es cargar la información de la noticia ya entrada en un formulario

Código:
$conn = mysql_connect("localhost","xxx","xxx"); 
mysql_select_db("rkwfirjq_exiliumweb"); 
$id=$_GET['id'];
$noticias = mysql_query("select * from tbl_news WHERE news_id = $id", $conn); 
while($noticia = mysql_fetch_array($noticias)) {
	?>
	<form action="index.php?menu=noticias&accion=editar&confirmar=si&id=<? echo $id ?>" method="post">
		<table width="640" border="0">
		  <tr>
			<td colspan="2" class="titulo"><div align="center">EDITAR NOTICIA</div></td>
		  </tr>
		  <tr>
			<td width="175" class="texto"><div align="right">Tipo:</div></td>
			<td width="455">
				<select name="news_tipo" style="font-size:10px">
					<option value="." selected>.</option>
					<option value="noticia" selected>Noticia</option>
					<option value="clanbase">ClanBase</option>
					<option value="competiciones">Competiciones</option>
				</select>
			</td>
		  </tr>
		  <tr>
			<td width="175" class="texto"><div align="right">Fecha:</div></td>
			<td width="455"><input type="text" name="news_fecha" style="font-size:10px" value="<? echo $noticia["fecha"] ?>"></td>
		  </tr>
		  <tr>
			<td width="175" class="texto"><div align="right">T&iacute;tulo:</div></td>
			<td width="455"><input type="text" name="news_titulo" style="font-size:10px" size="50" value="<? echo $noticia["titulo"] ?>"></td>
		  </tr>
		  <tr>
			<td width="175" valign="top" class="texto"><div align="right">Texto:</div></td>
			<td width="455">
			<script type="text/javascript">
			 HTMLArea.loadPlugin("CharacterMap");
			 
			 HTMLArea.onload = function() {
				var editor = new HTMLArea("editor");
				editor.registerPlugin(CharacterMap);
				editor.generate();
				}
			  HTMLArea.init();
			</script>
			<textarea id="editor" name="news_texto" cols="70" rows="20"><? echo $noticia["texto"] ?></textarea>
			</td>
		  </tr>
		  <tr>
			<td colspan="2" valign="top" class="texto"><div align="center">
			  <input type="submit" name="Submit" value="Guardar" style="font-size:10px">
			</div></td>
		  </tr>
		</table>
	</form>
	<?
}
mysql_close($conn);
Y guardarla de nuevo en la BD:

Código:
$id=$_GET['id'];
$tipo=$_POST['news_tipo'];
$fecha=$_POST['news_fecha'];
$titulo=$_POST['news_titulo'];
$texto=$_POST['news_texto'];
$conn = mysql_connect("localhost","xxx","xxx"); // crea conexion
mysql_select_db("rkwfirjq_exiliumweb"); // conecta BD
mysql_query("update tbl_news SET tipo=$tipo, fecha=$fecha, titulo=$titulo, texto=$texto WHERE news_id = $id",$conn); // consulta
mysql_close($conn);	// cierra BD
Se muestra en el formulario pero al modificarla y darle a guardar... no me lo hace

Alguien me puede hechar un cable?

Gracias
  #2 (permalink)  
Antiguo 02/02/2008, 22:16
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Visualizar registro en un formulario y actualizar

Cita:
Iniciado por kareto Ver Mensaje
Se muestra en el formulario pero al modificarla y darle a guardar... no me lo hace
Ya no hace qué? No actualiza? No te muestra datos en el formulario?

Seguro que es lo primero. Prueba encerrando entre comillas simples los nuevos valores al hacer el update:

Código PHP:
mysql_query("update tbl_news SET tipo='$tipo', fecha='$fecha', titulo='$titulo', texto='$texto' WHERE news_id = $id",$conn) or die(mysql_error()); 
//Supongo que $id es de tipo numérico, sino debe ir también entre comillas 
mysql_error() te mostrará el error que existe, si es que existe, en tu consulta.

Un saludo,
  #3 (permalink)  
Antiguo 02/02/2008, 22:34
 
Fecha de Ingreso: enero-2007
Mensajes: 40
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Visualizar registro en un formulario y actualizar

Lo que me pasa es eso, no me actualiza los datos.

Acabo de probar lo de las comillas simples y sige sin actualizar los datos.

He hecho un echo de las variables que utilizo en la consulta y contienen la información correcta.

:(
  #4 (permalink)  
Antiguo 03/02/2008, 08:13
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Visualizar registro en un formulario y actualizar

Utilizaste el mysql_error() para ver si hay errores en la ejecución de tu consulta?

Además, podrías usar mysql_affected_rows() para ver el número de filas modificadas pro tu consulta, en este caso debería ser 1. Si devuelve 0, hay problemas seleccionando la fila a modificar.

Un saludo,
  #5 (permalink)  
Antiguo 03/02/2008, 11:52
 
Fecha de Ingreso: enero-2007
Mensajes: 40
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Visualizar registro en un formulario y actualizar

Ok okram. Como digo mas arriba, soy nuevo en esto y me ayudariais mucho si me dijerais como y donde utilizo esas funciones para poder averiguar donde esta el problema
  #6 (permalink)  
Antiguo 03/02/2008, 11:59
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Visualizar registro en un formulario y actualizar

Cita:
Iniciado por okram Ver Mensaje
Código PHP:
mysql_query("update tbl_news SET tipo='$tipo', fecha='$fecha', titulo='$titulo', texto='$texto' WHERE news_id = $id",$conn) or die(mysql_error()); 
//Supongo que $id es de tipo numérico, sino debe ir también entre comillas 
mysql_affected_rows() devuelve el número de filas afectadas/devueltas por la consulta. Úsalo después de mysql_query():

Código PHP:
echo mysql_affected_rows(); 
Un saludo,
  #7 (permalink)  
Antiguo 03/02/2008, 12:15
 
Fecha de Ingreso: enero-2007
Mensajes: 40
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Visualizar registro en un formulario y actualizar

echo mysql_affected_rows(); --> me devuelve 0

Código PHP:
$id=$_GET['id'];
$tipo=$_POST['news_tipo'];
$fecha=$_POST['news_fecha'];
$titulo=$_POST['news_titulo'];
$texto=$_POST['news_texto'];
$conn mysql_connect("localhost","xxx","xxx"); // crea conexion
mysql_select_db("rkwfirjq_exiliumweb"); // conecta BD
mysql_query("update tbl_news SET tipo='$tipo', fecha='$fecha', titulo='$titulo', texto='$texto' WHERE news_id=$id",$conn) or die(mysql_error()); // consulta
echo mysql_affected_rows(); 
mysql_close($conn);    // cierra BD 
Tambien he hecho un echo de todas las variables y tienen la información correcta
  #8 (permalink)  
Antiguo 03/02/2008, 14:50
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Visualizar registro en un formulario y actualizar

Lo único que se me ocurre es que en tu tabla tbl_news no se encuentran registros que coincidan con $id. Prueba esto:

Código PHP:
if($sql mysql_query("SELECT news_id FROM tbl_news WHERE news_id = $id")) {
    
$num mysql_num_rows($sql);
    if(
$num 0) {
         
mysql_query("update tbl_news SET tipo='$tipo', fecha='$fecha', titulo='$titulo', texto='$texto' WHERE news_id=$id",$conn) or die(mysql_error());
         echo 
"Se modificaron ".mysql_affected_rows()." filas";
    } else {
         echo 
"No hay coincidencias";
    }
} else {
    echo 
'Error en la consulta: '.mysql_error();

Así sabremos si hay o no registros en base de datos que coincidan con los criterios que especificamos.

Un saludo,
  #9 (permalink)  
Antiguo 03/02/2008, 15:06
 
Fecha de Ingreso: enero-2007
Mensajes: 40
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Visualizar registro en un formulario y actualizar

Esto es muy raro. Acabo de probar tu codigo y el resultado es: se modificaron 0 filas

O_o no lo entiendo
  #10 (permalink)  
Antiguo 03/02/2008, 15:09
 
Fecha de Ingreso: enero-2007
Mensajes: 40
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Visualizar registro en un formulario y actualizar

Otra cosa que veo que comentabas. He estado haciendo echo de todas las variables y tienen la info correcta. Estoy intentando modificar el registro con id=3 y la variable $id contiene el numero 3 o sea que deberia de actualizar.

Última edición por kareto; 03/02/2008 a las 19:39
  #11 (permalink)  
Antiguo 03/02/2008, 20:00
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Visualizar registro en un formulario y actualizar

Haber, esto se está saliendo de control

Hazlo así:

Código PHP:
$query "update tbl_news SET tipo='$tipo', fecha='$fecha', titulo='$titulo', texto='$texto' WHERE news_id = $id";
 
echo 
$query;
 
mysql_query($query,$conn) or die(mysql_error()); 
Verifica que la query que imprime sea la correcta

Un saludo,
  #12 (permalink)  
Antiguo 03/02/2008, 21:06
 
Fecha de Ingreso: febrero-2008
Mensajes: 17
Antigüedad: 16 años, 2 meses
Puntos: 1
Re: Visualizar registro en un formulario y actualizar

Es casi seguro que tu error esté en la sintaxis de la consulta UPDATE. Lo mejor que puedes hacer para que te funcione es meterte en el gestor de MySQL que tengas (normalmente PHPMyAdmin) y hacer ahí las pruebas (en la interfaz tiene una pestaña que pone SQL y ahí puedes escribir código SQL). Una vez sepas con certeza que la consulta está bien estructurada métela en el PHP e, imagino, que rulará. Sino ya hablariamos de otros problemas.

Alomejor tu usuario de la base de datos tiene permisos para insertar pero no para actualizar campos. Aunque esta última opción es muy poco común.

Suerte!
  #13 (permalink)  
Antiguo 04/02/2008, 13:27
 
Fecha de Ingreso: enero-2007
Mensajes: 40
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Visualizar registro en un formulario y actualizar

Esto es alucinante. En el curro lo volvi a probar y funcionó. Deberia estar el servidor loco de tanta prueba.

Con el codigo:
Código PHP:
if($sql mysql_query("SELECT news_id FROM tbl_news WHERE news_id = $id")) {
    
$num mysql_num_rows($sql);
    if(
$num 0) {
         
mysql_query("update tbl_news SET tipo='$tipo', fecha='$fecha', titulo='$titulo', texto='$texto' WHERE news_id=$id",$conn) or die(mysql_error());
         echo 
"Se modificaron ".mysql_affected_rows()." filas";
    } else {
         echo 
"No hay coincidencias";
    }
} else {
    echo 
'Error en la consulta: '.mysql_error();

me ha funcionado. O sea que deberia tenerlo bien del principio pero al servidor no le daba la p... gana de funcionar.

Gracias a todos por vuestra ayuda.

Me guardo este codigo de okram porque esta cool.

Hasta otra!!!
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 18:54.