Foros del Web » Programando para Internet » PHP »

[Pedido] Actualizar datos de una Base de datos.

Estas en el tema de [Pedido] Actualizar datos de una Base de datos. en el foro de PHP en Foros del Web. Hola! estoy utilizando un código que lo encontre en un taller de php, pero hasta ahora da muchos errores y el creador no responde los ...
  #1 (permalink)  
Antiguo 26/12/2008, 11:47
Avatar de airos  
Fecha de Ingreso: mayo-2008
Mensajes: 68
Antigüedad: 16 años
Puntos: 3
Pregunta [Pedido] Actualizar datos de una Base de datos.

Hola! estoy utilizando un código que lo encontre en un taller de php, pero hasta ahora da muchos errores y el creador no responde los mensajes xD

El mismo es para editar/actualizar la información insertada previamente en una base de datos.

En fin, yo estoy empleando el código original y sale así:
Código PHP:
<?
// datos de configuracion
$ip "localhost";
$usuario "user";
$password "pass";
$db_name "nombre_DB";
// conectamos con la db
$conn mysql_pconnect($ip,$usuario,$password) or die(mysql_error());
// seleccionamos la base de datos
$huboerror mysql_select_db($db_name,$conn) or die(mysql_error());


// si se envia el formulario de edicion
if ( !empty($_POST['submit']) ) {
$query "UPDATE noticias set titulo = '{$_POST['titulo']}', set cuerpo = '{$_POST['cuerpo']}', set estado = '{$_POST['estado']}' WHERE idNoticia = {$_POST['idNoticia']} LIMIT 1";
$response mysql_query($query$conn);
}

// si tenemos id de noticia
if ( !empty($_GET['idNoticia']) ) {
// traemos la noticia
$query "SELECT idNoticia,titulo,cuerpo,estado FROM noticias WHERE idNoticia = {$_GET['idNoticia']} limit 1";

$noticia mysql_fetch_assoc($response);
}

?>
<html>
<head>
<title>Formulario de Edición de Noticias</title>
</head>
<body>
<h1>Agregar Nueva Noticia</h1>
<form action="editar-noticias.php" method="post">
<label for="titulo">Titulo</label><br />
<input id="titulo" name="titulo" value="<? echo $noticia['titulo']; ?> " type="text" /><br /><br />
<label for="cuerpo">Cuerpo</label><br />
<textarea id="cuerpo" name="cuerpo" rows="5" cols="50"><? echo $noticia['cuerpo']; ?></textarea><br /><br />
<label for="estado">Estado</label>
<select id="estado" name="estado">
<option value="publicado" <? if ( $noticia['estado'] == 'publicado' ) echo 'selected="selected"'?>>Publicado</option>
<option value="borrado" <? if ( $noticia['estado'] == 'borrado' ) echo 'selected="selected"'?>>Borrado</option>
</select><br /><br />
<button type="submit" name="submit" value="1">Editar Noticia</button>
<input name="idNoticia" value="<? echo $noticia['idNoticia']; ?>" type="hidden" />
</form>
</body>
Lo que hice fue quitar las comillas de los siguientes datos:
"SELECT idNoticia,titulo,cuerpo,estado FROM noticias WHERE idNoticia"

"UPDATE noticias set titulo"


Según tengo entendido va sin las comillas. Al probarlo me dice lo siguiente:

"Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in D:\AppServ\www\cursophp\editar-noticias.php on line 24"

No entendi el error, en teoría si escribo: www.misitio.com/editar-noticias.php?idNoticias=2 me tiene que tomar la noticia... para que la pueda editar, pero nada :s

muestra el error y abajo el formulario en blanco, alguna idea?
**Aquí les dejo la web del autor:

w w w.elwebmaster.com/editorial/taller-de-php-actualizar-y-borrar-registros-2

(no quiero hacer spam, pero es por si se puede aclarar mi duda).

Gracias.
  #2 (permalink)  
Antiguo 26/12/2008, 11:53
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: [Pedido] Actualizar datos de una Base de datos.

Hola:

Miré por encima el código, y veo que repites la palabra set, pero solo debes ponerlo al principio de los campos que quieres cambiar...

set titulo = '{$_POST['titulo']}', cuerpo = '{$_POST['cuerpo']}', estado = '...'

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 26/12/2008, 12:03
Avatar de airos  
Fecha de Ingreso: mayo-2008
Mensajes: 68
Antigüedad: 16 años
Puntos: 3
Pregunta Respuesta: [Pedido] Actualizar datos de una Base de datos.

Hola, gracias por responder.!

Hice el cambio de los SET, pero.. sigue saliendo lo mismo, me tira el error:

"Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in D:\AppServ\www\cursophp\editar-noticias.php on line 24"

Que puede ser?
  #4 (permalink)  
Antiguo 26/12/2008, 12:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: [Pedido] Actualizar datos de una Base de datos.

Imprime el valor de mysql_error() Así puedes ver el error que te dice la BDD.

Saludos.
  #5 (permalink)  
Antiguo 26/12/2008, 12:25
Avatar de airos  
Fecha de Ingreso: mayo-2008
Mensajes: 68
Antigüedad: 16 años
Puntos: 3
Respuesta: [Pedido] Actualizar datos de una Base de datos.

Hice lo siguiente, agregue el "mysql_error()" en la siguiente linea:

Código PHP:
$response mysql_query($query$conn) or die(mysql_error()); 
Pero me sigue mostrando el mismo error :s

"Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in D:\AppServ\www\cursophp\editar-noticias.php on line 24"
  #6 (permalink)  
Antiguo 26/12/2008, 12:56
 
Fecha de Ingreso: diciembre-2008
Mensajes: 70
Antigüedad: 15 años, 4 meses
Puntos: 4
Respuesta: [Pedido] Actualizar datos de una Base de datos.

Hola, para empezar trata de conectarte a la bd por medio de "mysql_connect" y no de "mysql_pconnect", no es necesario que tengas la variable $hubo_error, no te sirve de nada en tu script, en vez de usar "empty" usa "isset" de la siguiente manera
Código PHP:
if(isset($_POST['submit'])){ 
Esto hace exactamente lo mismo, solamente que es menos proceso que tiene que realizar el servidor.

Ahora si el problema principal, te muestra eso porque el query que estas recuperando con $result te esta haciendo el mismo query del update y eso no te va a hacer ningun array asociativo, para esto quedaria mas o menos asi:
Código PHP:
// si tenemos id de noticia 
if (isset($_GET['idNoticia'])){ 
// Seteamos el get en una variable para que se le facilite al server
$id_noticia $_GET['idNoticia'];
// traemos la noticia 
$query "SELECT idNoticia,titulo,cuerpo,estado FROM noticias WHERE idNoticia = '$id_noticia' limit 1"
//Hacemos el query a la base de datos con esta cadena
$respuesta mysql_query($query$conn);
$noticia mysql_fetch_assoc($respuesta); 

Ahora si, te deberia funcionar perfecto.

Saludos.
  #7 (permalink)  
Antiguo 26/12/2008, 17:27
Avatar de airos  
Fecha de Ingreso: mayo-2008
Mensajes: 68
Antigüedad: 16 años
Puntos: 3
Respuesta: [Pedido] Actualizar datos de una Base de datos.

Gracias por tu respuesta!

hice los cambios, pero me sale exactamente el mismo error :s



el código quedo de la siguiente manera:
Código PHP:
<?
// datos de configuracion
$ip "localhost";
$usuario "user";
$password "pass";
$db_name "DB";
// conectamos con la db
$conn mysql_connect($ip,$usuario,$password) or die(mysql_error());

// si se envia el formulario de edicion
if (isset($_POST['submit']) ) {
$query "UPDATE noticias set titulo = '{$_POST['titulo']}', cuerpo = '{$_POST['cuerpo']}', estado = '{$_POST['estado']}' WHERE idNoticia = {$_POST['idNoticia']} LIMIT 1";
$respuesta mysql_query($query$conn);
}

// si tenemos id de noticia 
if (isset($_GET['idNoticia'])){ 
// Seteamos el get en una variable para que se le facilite al server
$id_noticia $_GET['idNoticia'];
// traemos la noticia 
$query "SELECT idNoticia,titulo,cuerpo,estado FROM noticias WHERE idNoticia = '$id_noticia' limit 1"
//Hacemos el query a la base de datos con esta cadena
$noticia mysql_fetch_assoc($respuesta); 
}  
?>
"Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in D:\AppServ\www\cursophp\editar-noticias.php on line 23"

sigue el mismo error :s
  #8 (permalink)  
Antiguo 26/12/2008, 17:38
Avatar de alemuro  
Fecha de Ingreso: diciembre-2008
Ubicación: Barcelona
Mensajes: 56
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: [Pedido] Actualizar datos de una Base de datos.

dile que te muestre el error.
Código PHP:
echo (mysql_error()); 
Ponlo en la última línia (antes de cerrar el script), hoy me ha ayudado bastante esto jeje

Última edición por alemuro; 26/12/2008 a las 17:47
  #9 (permalink)  
Antiguo 26/12/2008, 18:17
 
Fecha de Ingreso: diciembre-2008
Mensajes: 70
Antigüedad: 15 años, 4 meses
Puntos: 4
Respuesta: [Pedido] Actualizar datos de una Base de datos.

Cita:
Iniciado por airos Ver Mensaje
Gracias por tu respuesta!

hice los cambios, pero me sale exactamente el mismo error :s



el código quedo de la siguiente manera:
Código PHP:
<?
// datos de configuracion
$ip "localhost";
$usuario "user";
$password "pass";
$db_name "DB";
// conectamos con la db
$conn mysql_connect($ip,$usuario,$password) or die(mysql_error());

// si se envia el formulario de edicion
if (isset($_POST['submit']) ) {
$query "UPDATE noticias set titulo = '{$_POST['titulo']}', cuerpo = '{$_POST['cuerpo']}', estado = '{$_POST['estado']}' WHERE idNoticia = {$_POST['idNoticia']} LIMIT 1";
$respuesta mysql_query($query$conn);
}

// si tenemos id de noticia 
if (isset($_GET['idNoticia'])){ 
// Seteamos el get en una variable para que se le facilite al server
$id_noticia $_GET['idNoticia'];
// traemos la noticia 
$query "SELECT idNoticia,titulo,cuerpo,estado FROM noticias WHERE idNoticia = '$id_noticia' limit 1"
//Hacemos el query a la base de datos con esta cadena
$noticia mysql_fetch_assoc($respuesta); 
}  
?>
"Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in D:\AppServ\www\cursophp\editar-noticias.php on line 23"

sigue el mismo error :s
Te dio el mismo error porque sigue si tener el mysql_query que te deje, de todos modos para que veas como tiene que quedar te lo dejo, el MYSQL_QUERY se tiene que repetir!!!!!! . Y otra cosa, te falto seleccionar la base de datos, te mencione que quitaras la variable, es decir que no se la asignaras al mysql_select_db, mas no que quitaras todo el comando.

Código PHP:
 <?
// datos de configuracion
$ip "localhost";
$usuario "user";
$password "pass";
$db_name "DB";
// conectamos con la db
$conn mysql_connect($ip,$usuario,$password) or die(mysql_error());
//Seleccionamos la base de datos
mysql_select_db($db_name,$conn) or die(mysql_error());

// si se envia el formulario de edicion
if (isset($_POST['submit']) ) {
$query "UPDATE noticias set titulo = '{$_POST['titulo']}', cuerpo = '{$_POST['cuerpo']}', estado = '{$_POST['estado']}' WHERE idNoticia = {$_POST['idNoticia']} LIMIT 1";
$response mysql_query($query$conn); 
}

// si tenemos id de noticia 
if (isset($_GET['idNoticia'])){ 
// Seteamos el get en una variable para que se le facilite al server
$id_noticia $_GET['idNoticia'];
// traemos la noticia 
$query "SELECT idNoticia,titulo,cuerpo,estado FROM noticias WHERE idNoticia = '$id_noticia' limit 1"
//Hacemos el query a la base de datos con esta cadena
$respuesta mysql_query($query$conn);
$noticia mysql_fetch_assoc($respuesta); 
}  
?>
Que estes bien :)
  #10 (permalink)  
Antiguo 26/12/2008, 18:37
Avatar de airos  
Fecha de Ingreso: mayo-2008
Mensajes: 68
Antigüedad: 16 años
Puntos: 3
Respuesta: [Pedido] Actualizar datos de una Base de datos.

Gracias por el código je, lo mal interprete...

lo cambie, pero el error persevera :s

"Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in D:\AppServ\www\cursophp\editar-noticias.php on line 26"
  #11 (permalink)  
Antiguo 26/12/2008, 20:28
 
Fecha de Ingreso: diciembre-2008
Mensajes: 70
Antigüedad: 15 años, 4 meses
Puntos: 4
Respuesta: [Pedido] Actualizar datos de una Base de datos.

Tienes activado el mysql_fetch_assoc() en tus propiedades de php?
De cualquier manera trata cambiando el mysql_fetch_assoc(); por mysql_fetch_array(); igualmente te va a dar un array asociativo asi que lo puedes usar de la misma manera.
  #12 (permalink)  
Antiguo 26/12/2008, 20:44
Avatar de airos  
Fecha de Ingreso: mayo-2008
Mensajes: 68
Antigüedad: 16 años
Puntos: 3
Respuesta: [Pedido] Actualizar datos de una Base de datos.

probe en cambiarlo, pero sigue igual, en vez de tirarme el error "mysql_fetch_assoc();" me tira "mysql_fetch_array();" osea es lo mismo :s

Gracias por responder, pero no cambio nada :s

Alguna idea??
  #13 (permalink)  
Antiguo 26/12/2008, 22:55
 
Fecha de Ingreso: diciembre-2008
Mensajes: 70
Antigüedad: 15 años, 4 meses
Puntos: 4
Respuesta: [Pedido] Actualizar datos de una Base de datos.

Pues todo tu codigo esta bien, seria cosa que cheques tu servidor

Suerte y saludos
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:01.