Foros del Web » Programando para Internet » PHP »

¿Dónde está el fallo?

Estas en el tema de ¿Dónde está el fallo? en el foro de PHP en Foros del Web. Podéis indicarme dónde tengo el fallo. Quiero que al pinchar sobre el icono cambiar noticia se realicen las modificaciones que se introduzcan en el formulario ...
  #1 (permalink)  
Antiguo 27/12/2005, 05:02
 
Fecha de Ingreso: enero-2005
Mensajes: 2
Antigüedad: 12 años, 10 meses
Puntos: 0
¿Dónde está el fallo?

Podéis indicarme dónde tengo el fallo.
Quiero que al pinchar sobre el icono cambiar noticia se realicen las modificaciones que se introduzcan en el formulario que enlaza.
Se que en la sintaxis puede faltar where IDNOTICIA... pero si lo pongo no se realiza ningún cambio. Y tal como está siempre modifica la noticia con el valor IDNOTICIA 0.

Aquí la sintaxis donde está el formulario del listado de noticias:
Código PHP:
<html> 
<head> 
<title>Tema 16</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<style type="text/css"> 
<!-- 
.Estilo1 {font-family: "Century Gothic"} 
--> 
</style> 
</head> 

<body> 
<?php 
$conn 
mysql_connect('localHost','',''); 
mysql_select_db('practica'); 
$consulta "Select * from noticias"
$result mysql_db_query('practica',$consulta ); 
echo 
mysql_error(); 
?> 
<h1 align="center" class="Estilo1">Lista de NOTICIAS</h1> 
<div align="center"></div> 
<table width="959" border="5" bordercolor="#0000CC" bgcolor="#00FF00"> 
<tr bordercolor="#000000"> 
<td width="75"><div align="center"><span class="Estilo1"></span></div></td> 
<td width="79"><div align="center"><span class="Estilo1"></span></div></td> 
<td width="58"><div align="center" class="Estilo1"> 
<div align="center">Código</div> 
</div></td> 
<td width="102"><div align="center" class="Estilo1"> 
<div align="center">Fecha</div> 
</div></td> 
<td width="189"><div align="center" class="Estilo1"> 
<div align="center">Título</div> 
</div></td> 
<td width="408"><div align="center" class="Estilo1"> 
<div align="center">Descripción</div> 
</div></td> 
</tr> 

<?php 
while($row mysql_fetch_array($result)) 

?> 
<tr bordercolor="#000000"> 
<td><div align="center" class="Estilo1"> 
<div align="center"><a href="MODIFICARNOTICIAS.php?codigo=<?= $row['IDNOTICIA']?>"><img src="MODIFICAR3.jpg" border="0"></a></div> 
</div></td> 
<td><div align="center" class="Estilo1"> 
<div align="center"><a href="BORRARNOTICIA.php?codigo=<?= $row['IDNOTICIA']?>"><img src="BORRAR3.jpg" border="0"></a></div> 
</div></td> 
<td><div align="center" class="Estilo1"> 
<div align="center"> 
<?= $row['IDNOTICIA'?> 
</div> 
</div></td> 
<td><div align="center" class="Estilo1"> 
<div align="center"> 
<?= $row['FECHA'?> 
</div> 
</div></td> 
<td><div align="center" class="Estilo1"> 
<div align="center"> 
<?= $row['TITULO'?> 
</div> 
</div></td> 
<td><div align="center" class="Estilo1"> 
<div align="center"> 
<?= $row['DESCRIPCION'?> 
</div> 
</div></td> 
</tr> 
<?php 

?> 
</table> 
<div align="center"></div> 
<div align="center"><br> 
<br> 
<span class="Estilo1">Pinche sobre el icono de insertar si quiere insertar más noticias </span> 
</div> 
<h4 align="center"><a href="INSERTARNOTICIAS.php"><img src="INSERTAR2.jpg"></a></h4> 
</body> 
</html>
Aquí el formulario que enlaza e introduzco las modificaciones:
Código PHP:
<html> 
<head> 
<title>Tema 16</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<?php 
$conn 
mysql_connect('localHost','',''); 
mysql_select_db('practica'); 
$consulta "Select * from noticias where IDNOTICIA = '".$_GET['codigo']."' "
$result mysql_db_query('practica',$consulta ); 
echo 
mysql_error(); 
?> 
<style type="text/css"> 
<!-- 
.Estilo1 { 
font-family: "Century Gothic"; 
font-weight: bold; 

.Estilo2 {font-family: "Century Gothic"} 
--> 
</style> 
</head> 

<body> 
<h1 align="center" class="Estilo2">Modificar Noticias</h1> 
<?php 
$row 
mysql_fetch_array($result
?> 
<form action="REALIZARMODIFICACION.php" method="post"> 
<table width="959" border="1" bordercolor="#000000" bgcolor="#9900FF"> 
<tr> 
<td width="279"><div align="center"><span class="Estilo1">Código</span></div></td> 
<td width="664"><div align="center"> 
<input name="codigo" type="hidden" value="<?= $row['Código']?>"> 
</div></td> 
</tr> 
<tr> 
<td><div align="center"><span class="Estilo1">Fecha</span></div></td> 
<td><div align="center"> 
<input name="fecha" type="text" size="30" value="<?= $row['Fecha']?>"> 
</div></td> 
</tr> 
<tr> 
<td><div align="center"><span class="Estilo1">Título</span></div></td> 
<td><div align="center"> 
<input name="titulo" type="text" size="30" value="<?= $row['Título']?>"> 
</div></td> 
</tr> 
<tr> 
<td><div align="center"><span class="Estilo1">Descripción</span></div></td> 
<td><div align="center"> 
<input name="descripcion" type="text" size="30" value="<?= $row['Descripción']?>"> 
</div></td> 
</tr> 
<tr> 
<td><div align="center"></div></td> 
<td> 
<div align="center"> 
<input name="Aceptar" type="submit" value="Aceptar"> 
&nbsp;&nbsp; 
<input name="Reset" type="reset" value="Borrar Campos"> 
</div></td> 
</tr> 
</table> 
</form> 
<div align="center"><span class="Estilo1">Pinche sobre el icono de insertar si quiere insertar más noticias </span> 
</div> 
</div> 
<h4 align="center"><a href="INSERTARNOTICIAS.php"><img src="INSERTAR2.jpg"></a></h4> 
<div align="center"><span class="Estilo1">Pinche sobre el icono de lista si quiere volver al listado de noticias </span> 
</div> 
<h4 align="center"><a href="LISTADONOTICIAS.php"><img src="LISTARNOTICIA.jpg" width="102" height="41"></a></h4> 

</body> 
</html>
Aquí el formulario de realizar la modificación:
Código PHP:
<html> 
<head> 
<title>Tema 16</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<style type="text/css"> 
<!-- 
.Estilo1 {font-family: "Century Gothic"} 
--> 
</style> 
</head> 
<?php 
$conn 
mysql_connect('localHost','',''); 
mysql_select_db('practica'); 
$consulta "UPDATE noticias SET IDNOTICIA= '".$_POST['codigo']. "',"
"FECHA='".$_POST['fecha']."',"
"TITULO='".$_POST['titulo']."', "
"DESCRIPCION='".$_POST['descripcion']."' "
printf($consulta); 
mysql_db_query('practica',$consulta ); 
echo 
mysql_error(); 
?> 
<body> 
<h2 align="center" class="Estilo1">Los datos de la NOTICIA MODIFICADA en la base de datos son los siguientes:</h2> 
<table width="962" border="1" bordercolor="#CC00FF" bgcolor="#CC9900"> 
<tr> 
<td width="247"><div align="center">IDNOTICIA</div></td> 
<td width="699"><div align="center"> 
<?=$_POST['codigo']?> 
</div></td> 
</tr> 
<tr> 
<td><div align="center">FECHA</div></td> 
<td><div align="center"> 
<?=$_POST['fecha']?> 
</div></td> 
</tr> 
<tr> 
<td><div align="center">TITULO</div></td> 
<td><div align="center"> 
<?=$_POST['titulo']?> 
</div></td> 
</tr> 
<tr> 
<td><div align="center">DESCRIPCION</div></td> 
<td><div align="center"> 
<?=$_POST['descripcion']?> 
</div></td> 
</tr> 
</table> 
<br> 
<br> 
<div align="center"><span class="Estilo1">Pinche sobre el icono de lista si quiere volver al listado de noticias </span> 
</div> 
<h4 align="center"><a href="LISTADONOTICIAS.php"><img src="LISTARNOTICIA.jpg" width="102" height="41"></a></h4> 
</body> 
</html>
Y aquí la sintaxis del borrado de noticias:
Código PHP:
<html> 
<head> 
<title>Tema 16</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<?php 
$conn 
mysql_connect('localHost','',''); 
mysql_select_db('practica'); 
$consulta "delete from noticias where IDNOTICIA = '".$_GET['codigo']."' "
mysql_db_query('practica',$consulta ); 
echo 
mysql_error(); 
?> 
<style type="text/css"> 
<!-- 
.Estilo1 {font-family: "Century Gothic"} 
--> 
</style> 
</head> 
<body> 
<h1 align="center" class="Estilo1">Borrar Noticias</h1> 
<h2 align="center" class="Estilo1">Los datos de la noticia que se ha borrado son</h2> 
<table width="950" border="1" bordercolor="#FF0000" bgcolor="#CCFFCC"> 
<tr> 
<td width="244"><div align="center">Código</div></td> 
<td width="690"><div align="center"> 
<?=$_POST['codigo']?> 
</div></td> 
</tr> 
<tr> 
<td><div align="center">Fecha</div></td> 
<td><div align="center"> 
<?=$_POST['fecha']?> 
</div></td> 
</tr> 
<tr> 
<td><div align="center">Título</div></td> 
<td><div align="center"> 
<?=$_POST['titulo']?> 
</div></td> 
</tr> 
<tr> 
<td><div align="center">Descripción</div></td> 
<td><div align="center"> 
<?=$_POST['descripcion']?> 
</div></td> 
</tr> 
</table> 
<br> 
<br> 
<div align="center"><span class="Estilo1">Pinche sobre el icono de lista si quiere volver al listado de noticias </span> 
</div> 
<h4 align="center"><a href="LISTADONOTICIAS.php"><img src="LISTARNOTICIA.jpg" width="102" height="41"></a></h4></body> 
</html> 
<body>
Este último lo pongo porque no logro mostrar los datos de la noticia borrada
Perdón por lo extenso de la consulta.
Si no procede pido perdón.
Saludos.

Última edición por Cluster; 27/12/2005 a las 09:51
  #2 (permalink)  
Antiguo 27/12/2005, 06:29
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 12 años, 2 meses
Puntos: 18
A ver, con tanto código es difícil ver dónde está el problema. Un consejo para cuando tengas errores: intenta aislarlo lo máximo posible.

Ahora bien, tu problema. Creo que no implementas el formulario correctamente. Es decir, para hacer un 'submit' del formulario deberia porner un botón tipo submit y no un enlace como creo que haces.
  #3 (permalink)  
Antiguo 27/12/2005, 09:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
De tu script de listado de noticias .. saltas al de borrar noticia con un link:

Cita:
"><a href="BORRARNOTICIA.php?codigo=<?= $row['IDNOTICIA']?>"><img src="BORRAR3.jpg" border="0"></a></div>
</div></td>
donde le pasas el "idnoticia" a borrar. OK.

Pero, en borrarnoticia.php .. ahí intentas tomar unos valores de $_POST .. cuando NO están ya disponibles en $_POST, .. a lo sumo puedes hacer una consulta SQL de tipo:

Código PHP:
$consulta "Select * from noticias WHERE IDNOTICIA='".$_GET['codigo']."'"
Pero .. antes de borrar ese registro, es decir antes de:

Código PHP:
$consulta "delete from noticias where IDNOTICIA = '".$_GET['codigo']."' "
Ahora .. no sé que sentido tiene en el mismo script mostrar los datos que ya has borrado .. En tal caso sería ese el script de "confirmación" de borrado y de ahí saltar a tu actual "borrarnoticia.php" para efectivamente eliminar ese registro.

Por otro lado .. NOOOOOO uses mysql_db_query() .. usa las funciones mysql_select_db() y mysql_query() por separado. La función mlysql_db_query() puede que no funcione para siempre (está en proceso de ser eliminada de PHP).

Un saludo,
  #4 (permalink)  
Antiguo 27/12/2005, 17:07
 
Fecha de Ingreso: enero-2005
Mensajes: 2
Antigüedad: 12 años, 10 meses
Puntos: 0
¡Hola Cluster!
Antes de nada darte las gracias por contestar.
He probado a hacer lo que me recomiendas en el script de BORRARNOTICIA y no funciona es decir incluso he cambiado esto:

$consulta = "delete from noticias where IDNOTICIA = ' ".$_GET['codigo']." ' ";
por esto:

$consulta = "Select * from noticias WHERE IDNOTICIA=' ".$_GET['codigo']." ' ";
y no muestra lo que corresponde a la noticia con el IDNOTICIA seleccionada.Evidentemente no borra la noticia, pero no muestra tampoco nada.
Por lo tanto presumo que aquí está el error, pero no alcanzo a verlo.
Y supongo que la parte de la modificación, cuando le digo que modifique la noticia con un IDNOTICIA es más de lo mismo.
Alguna pista.
Sobre la otra recomendación la pondré en práctica, pero de momento y debido a mi escaso nivel, voy sobre lo que tengo escrito en el papel.
Saludos.
  #5 (permalink)  
Antiguo 28/12/2005, 05:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
$consulta = "Select * from noticias WHERE IDNOTICIA=' ".$_GET['codigo']." ' ";
y no muestra lo que corresponde a la noticia con el IDNOTICIA seleccionada.Evidentemente no borra la noticia, pero no muestra tampoco nada.
Pero .. que código completo has usado para "mostrar" ese registro? .. No se trata sólo de cambiar la consulta SQL -sólo- de como lo tenías ..

Yo sólo te dí la "orientación" de que si quieres en ese script que "borra" registros -antes- de borrarlo deseas mostrar los datos (campos) de ese registro que pretendes eliminar a modo de confirmación .. el proceso pasaría por una "selección" de ese registro bajo el parámetro que lo hace único y ya lo tienes (WHERE IDNOTICIA=' ".$_GET['codigo']." ' ";) de ahí usar las funciones clasicas de mysql_fetch_row() .. o mysql_result() ... mostrar esos resultados y como ya te comenté si todo esto está orientado a realizar una especie de "confirmación" (con posibilidad de anular el proceso de borrado) .. deberías tener otro script más por médio en todo este proceso.


Un saludo,
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 14:34.