Foros del Web » Programando para Internet » PHP »

Actualizacion

Estas en el tema de Actualizacion en el foro de PHP en Foros del Web. tengo el problema de que no me da error pero tampoco me actualiza el contenido de la BD Lo muestro con el siguiente codigo. Código ...
  #1 (permalink)  
Antiguo 28/05/2007, 19:37
Avatar de Carsan  
Fecha de Ingreso: abril-2007
Ubicación: Mexico
Mensajes: 109
Antigüedad: 17 años
Puntos: 0
Actualizacion

tengo el problema de que no me da error pero tampoco me actualiza el contenido de la BD
Lo muestro con el siguiente codigo.
Código PHP:
<?php
include ("config2.php");
$sql " SELECT * FROM equipos";
$result mysql_query($sql);
?>
<table  width="700" border="1" bordercolor="#999999">
<tr>
<td><strong>ID</strong></td>
<td><strong>Sub Categoria</strong></td>
<td><strong>Nombre</strong></td>
<td><strong>Marca</strong></td>
<td><strong>Modelo</strong></td>
<td><b>NºSerie</b></td>
<td><strong>Precio</strong></td>
<td><strong>Descripcion</strong></td>
<td><strong>Modificar</strong></td>
<td><strong>Eliminar</strong></td>
</tr>
<?php
while ($row mysql_fetch_array($result))

?>
<tr><td><input type="text" name="id" size="20" value="<?php echo $row['id']; ?>"/></td>
<td><input type="text" name="id" size="20" value="<?php echo $row['sub_categoria']; ?>"/></td> 
<td><input type="text" name="id" size="20" value="<?php echo $row['nombre']; ?>"/></td> 
<td><input type="text" name="id" size="20" value="<?php echo $row['marca'];?>"/></td>
<td><input type="text" name="id" size="20" value="<?php echo $row['modelo'];?>"/></td>
<td><input type="text" name="id" size="20" value="<?php echo $row['n_serie'];?>"/></td>
<td><input type="text" name="id" size="20" value="<?php echo $row['precio'];?>"/></td>
<td><input type="text" name="id" size="20" value="<?php echo $row['descripcion'];?>"/></td>

<td><a href="<?php echo "actualisa_datos.php?id=$row[id]"?>">Modificar</a>
<td><a href="<?php echo "borrar.php?id=$row[id]"?>">Eliminar</a></td>
</tr>
<?php
}
?>
</table>
Y lo cargo a la BD midificado con este otro donde el id es un autoincrement numerico.
Código PHP:
<?php
if(isset($_POST["id"]))
{
$sub_categoria $_POST["sub_categoria"]; 
        
$nombre $_POST["nombre"]; 
        
$marca $_POST["marca"]; 
        
$modelo $_POST["modelo"]; 
        
$n_serie $_POST["n_serie"]; 
        
$precio $_POST["precio"]; 
        
$descripcion $_POST["descripcion"];

include (
"config.php");

$sql 'UPDATE `equipos` SET `nombre` = \' $nombre\', `marca` = \'$marca\', `modelo` = \'$modelo\', `n_serie` = \'$n_serie\', `precio` = \'$precio\', `descripcion` = \'$descripcion.\' WHERE `id` = $id';

$result mysql_query($sql$link) or die ("Error en la consulta Query");

echo 
"REGISTRO ACTUALIZADO";

};

?>
Una aclaración: en la Tabla Equipos tambien tengo los campos name,type, size, foto, thumb. los cuales no necesitaria actualizar, no se si sera eso lo que está trabando a los demas datos?

Última edición por Carsan; 28/05/2007 a las 19:38 Razón: Agrego datos
  #2 (permalink)  
Antiguo 28/05/2007, 20:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Actualizacion

Tu problema es que estas poniendo tus campos en tu tabla, todos se llaman id, eso es un error ya que en donde los vayas a recibir se van a sobreescribir, luego tienes una etiqueta con un link a una pagina: actualisa_datos.php, que por cierto es actualiza, donde esperas recibir datos por POST. Nunca los vas a recibir porque no tienes un formulario.

Necesitas hacer algo asi:
Código PHP:
<?php
while ($row mysql_fetch_array($result))

?>
<form action="<?php echo "actualisa_datos.php?id=$row[id]"?>" method="post">
<tr><td><input type="text" name="id" size="20" value="<?php echo $row['id']; ?>"/></td>
<td><input type="text" name="sub_categoria" size="20" value="<?php echo $row['sub_categoria']; ?>"/></td> 
<td><input type="text" name="id" size="20" value="<?php echo $row['nombre']; ?>"/></td> 
<td><input type="text" name="marca" size="20" value="<?php echo $row['marca'];?>"/></td>
<td><input type="text" name="modelo" size="20" value="<?php echo $row['modelo'];?>"/></td>
<td><input type="text" name="n_serie" size="20" value="<?php echo $row['n_serie'];?>"/></td>
<td><input type="text" name="precio" size="20" value="<?php echo $row['precio'];?>"/></td>
<td><input type="text" name="descripcion" size="20" value="<?php echo $row['descripcion'];?>"/></td>

<td><input type="submit" name="modifica" value="Modificar" /></td>
<td><a href="<?php echo "borrar.php?id=$row[id]"?>">Eliminar</a></td>
</tr>
</form>
<?php
}
?>
  #3 (permalink)  
Antiguo 28/05/2007, 21:01
Avatar de Carsan  
Fecha de Ingreso: abril-2007
Ubicación: Mexico
Mensajes: 109
Antigüedad: 17 años
Puntos: 0
Re: Actualizacion

GRacias GATORV por tu atencion, tenias razon en que no tenia un FORM.
Lo que me pasa ahora es que me da error en el query.
Tienes idea de como puedo corregirlo???
  #4 (permalink)  
Antiguo 28/05/2007, 22:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Actualizacion

Prueba esto:
Código PHP:
$result mysql_query($sql$link) or die ("Error en la consulta Query: " mysql_error()); 
y dime que error te da.
  #5 (permalink)  
Antiguo 28/05/2007, 22:57
Avatar de Carsan  
Fecha de Ingreso: abril-2007
Ubicación: Mexico
Mensajes: 109
Antigüedad: 17 años
Puntos: 0
Re: Actualizacion

me da lo siguiente.

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\wamp\www\PHP\actualiza_datos.php on line 16
Error en la consulta Query:
  #6 (permalink)  
Antiguo 29/05/2007, 11:20
Avatar de Carsan  
Fecha de Ingreso: abril-2007
Ubicación: Mexico
Mensajes: 109
Antigüedad: 17 años
Puntos: 0
Re: Actualizacion

Una Ayuda por favor con este codigo.
  #7 (permalink)  
Antiguo 29/05/2007, 11:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Actualizacion

El problema es bastante claro, te esta diciendo que el parametro que le estas enviando a tu query ($link) no es un link valido a la base de datos, debes de pasarle el parametro correcto que apunta a tu base de datos correcta.

Saludos.
  #8 (permalink)  
Antiguo 29/05/2007, 13:40
Avatar de Carsan  
Fecha de Ingreso: abril-2007
Ubicación: Mexico
Mensajes: 109
Antigüedad: 17 años
Puntos: 0
Re: Actualizacion

Que descuidado soy, tenias razon no era la variable correcta. ya lo corregí pero ahora me muestra : Error en la consulta Query: Unknown column '$id' in 'where clause'. Y yo al codigo lo estoy poniendo asi:
Código PHP:
<?php
if(isset($_POST["modifica"]))
{
$id $_POST["id"]; 
$sub_categoria $_POST["sub_categoria"]; 
        
$nombre $_POST["nombre"]; 
        
$marca $_POST["marca"]; 
        
$modelo $_POST["modelo"]; 
        
$n_serie $_POST["n_serie"]; 
        
$precio $_POST["precio"]; 
        
$descripcion $_POST["descripcion"];

include (
"config.php");

$sql 'UPDATE `equipos` SET `sub_categorias` = \'$sub_categorias\', `nombre` = \'$nombre\', `marca` = \'$marca\', `modelo` = \'$modelo\', `n_serie` = \'$n_serie\', `precio` = \'$precio\', `descripcion` = \'$descripcion\' WHERE `id` = $id';

$result mysql_query($sql$conn) or die ("Error en la consulta Query: " mysql_error());  

echo 
"REGISTRO ACTUALIZADO";
};
?>
  #9 (permalink)  
Antiguo 29/05/2007, 14:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Actualizacion

Cuando usas comillas simples, las variables no se reemplazan ve el siguiente codigo:
Código PHP:
$nombre "Juan";
echo 
'Hola mi nombre es $nombre'// Imprime Hola mi nombre es $nombre
echo "Hola mi nombre es $nombre"// Imprime Hola mi nombre es Juan 
Si te fijas podras ver que tu consulta SQL esta mal hecha.
  #10 (permalink)  
Antiguo 29/05/2007, 18:50
Avatar de Carsan  
Fecha de Ingreso: abril-2007
Ubicación: Mexico
Mensajes: 109
Antigüedad: 17 años
Puntos: 0
Re: Actualizacion

al final tengo el codigo asi:
Código PHP:
<?php
if(isset($_POST["modifica"]))
{
$id $_POST["id"]; 
$sub_categoria $_POST["sub_categoria"]; 
        
$nombre $_POST["nombre"]; 
        
$marca $_POST["marca"]; 
        
$modelo $_POST["modelo"]; 
        
$n_serie $_POST["n_serie"]; 
        
$precio $_POST["precio"]; 
        
$descripcion $_POST["descripcion"];

include (
"config.php");

$sql "UPDATE equipos SET sub_categorias = \"$sub_categorias\", nombre = \"$nombre\", marca = \"$marca\", modelo = \"$modelo\", n_serie = \"$n_serie\", precio = \"$precio\", descripcion = \"$descripcion\" WHERE id = $id";

$result mysql_query($sql$conn) or die ("Error en la consulta Query: " mysql_error());  

echo 
"REGISTRO ACTUALIZADO";
};
?>
Hago la prueba de actualizar una fila donde tengo informacion de un Montacargas y me da el siguiente error:
Error en la consulta Query: Unknown column 'Montacargas' in 'where clause'

Probé poner el query como me lo das en otro post
Código PHP:
$result mysql_query($query) or die('Error, query failed: ' mysql_error() . ' Query: ' $query); 
y me sale esto:
Error, query failed: Unknown column 'Montacargas' in 'where clause' Query: UPDATE equipos SET sub_categorias = "", nombre = "", marca = "Crown", modelo = "RC 3000", n_serie = "1A274460", precio = "$ 82,000.00", descripcion = "Montacargas electrico" WHERE id = Montacargas.
Puedo ver que en WHERE id=, no sale el numero de ID sino el nombre.
  #11 (permalink)  
Antiguo 30/05/2007, 11:59
Avatar de Carsan  
Fecha de Ingreso: abril-2007
Ubicación: Mexico
Mensajes: 109
Antigüedad: 17 años
Puntos: 0
Re: Actualizacion

Hice una modificacion en el codigo desde donde solicito la actualizacion. ya que el problema estaba en que no se recibe la id, quise probar con esto.
Código PHP:
<?php
while ($row mysql_fetch_array($result))
$id=$row['id'];
?>
<form action="actualiza_datos.php?id=<?php $row["id"];?> "method="post">
<tr><td><input type="text" name="id" size="20" value="<?php echo $row['id']; ?>"/></td>
<td><input type="text" name="sub_categoria" size="20" value="<?php echo $row['sub_categoria']; ?>"/></td> 
<td><input type="text" name="id" size="20" value="<?php echo $row['nombre']; ?>"/></td> 
<td><input type="text" name="marca" size="20" value="<?php echo $row['marca'];?>"/></td>
<td><input type="text" name="modelo" size="20" value="<?php echo $row['modelo'];?>"/></td>
<td><input type="text" name="n_serie" size="20" value="<?php echo $row['n_serie'];?>"/></td>
<td><input type="text" name="precio" size="20" value="<?php echo $row['precio'];?>"/></td>
<td><input type="text" name="descripcion" size="20" value="<?php echo $row['descripcion'];?>"/></td>

<td><input type="submit" name="<?php $id;?>" value="Modificar" /></td>
<td><a href="<?php echo "borrar.php?id=$row[id]"?>">Eliminar</a></td>
</tr>
</form>
<?php
}
?>
O sea le puse como nombre del boton submit el valor de la ID. El Archivo que recibe este pedido está asi:
Código PHP:
<?php
if(isset($_GET["$id"]))
{
$sub_categoria $_POST["sub_categoria"]; 
        
$nombre $_POST["nombre"]; 
        
$marca $_POST["marca"];
        
$modelo $_POST["modelo"];
        
$n_serie $_POST["n_serie"]; 
        
$precio $_POST["precio"]; 
        
$descripcion $_POST["descripcion"];

include (
"config.php");

$sql "UPDATE equipos SET sub_categorias = \"$sub_categorias\", nombre = \"$nombre\", marca = \"$marca\", modelo = \"$modelo\", n_serie = \"$n_serie\", precio = \"$precio\", descripcion = \"$descripcion\" WHERE id = $id";

$result mysql_query($sql) or die('Error, query failed: ' mysql_error() . ' Query: ' $sql);  

echo 
"REGISTRO ACTUALIZADO";
};
?>
Probé tambien con if(isset($_POST["$id"])). Y sigue sin actualizarme nada, pero ya tampoco me da error. Creo que el problema sigue siendo que no recibe la ID.
  #12 (permalink)  
Antiguo 30/05/2007, 12:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Actualizacion

Tu problema es que:
Código PHP:
if(isset($_GET["$id"])) 
A la hora de ejecutarlo PHP reemplaza "$id" por la variable $id que no esta definida, lo que se traduce a:
Código PHP:
if(isset($_GET[])) 
Lo que debes de poner es el nombre del campo que estas recibiendo:
Código PHP:
if(isset($_GET["id"])) // o $_POST 
  #13 (permalink)  
Antiguo 30/05/2007, 12:49
Avatar de Carsan  
Fecha de Ingreso: abril-2007
Ubicación: Mexico
Mensajes: 109
Antigüedad: 17 años
Puntos: 0
Re: Actualizacion

La verdad que parece cosa de Mandinga che.

Me da:
Error, query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 Query: UPDATE equipos SET sub_categorias = "", nombre = "", marca = "Crown", modelo = "RC 3000", n_serie = "1A274460", precio = "$ 82,000.00", descripcion = "Montacargas electrico" WHERE id =
  #14 (permalink)  
Antiguo 30/05/2007, 14:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Actualizacion

Todavia no pasando el parametro, primero pruebas en esta parte si existe:
Código PHP:
if( isset( $_GET['id'] ) ) { 
Pero luego tratas de usar $id en tu SQL al final:
Código PHP:
$sql "... WHERE id=$id" 
Sin embargo en ninguna parte de tu codigo asignas $id, tienes que asignarla antes de tu SQL asi:
Código PHP:
$id $_GET['id']; 
  #15 (permalink)  
Antiguo 30/05/2007, 15:56
Avatar de Carsan  
Fecha de Ingreso: abril-2007
Ubicación: Mexico
Mensajes: 109
Antigüedad: 17 años
Puntos: 0
Re: Actualizacion

Muchas gracias GatorV por tu atencion y paciencia. despues de mucho probar y revisar, descubrí algunos errores en las variables donde las recogía como $_POST['sub_categoria'], en el query despues la ponia como sub_categorias; y asi con la variable nombre tambien en el form name= no decia nombre sino ID esos es por copiar y pegar y no revisar bien.
Finalmente la sobre la id que no llegaba probé con
<? $a=$_GET['id']; echo "$a"; ?> y si me imprimia el valor de id entonces el codigo final me queda:
Código PHP:
<?php
$a
=$_GET['id'];
$sub_categoria $_POST['sub_categoria']; 
        
$nombre $_POST['nombre']; 
        
$marca $_POST['marca'];
        
$modelo $_POST['modelo'];
        
$n_serie $_POST['n_serie']; 
        
$precio $_POST['precio']; 
        
$descripcion $_POST['descripcion'];
        
include(
"config.php");

$sql "UPDATE equipos SET sub_categoria = \"$sub_categoria\", nombre = \"$nombre\", marca = \"$marca\", modelo = \"$modelo\", n_serie = \"$n_serie\", precio = \"$precio\", descripcion = \"$descripcion\" WHERE id = '$a'";

$result mysql_query($sql) or die('Error, query failed: ' mysql_error() . ' Query: ' $sql);
echo 
"REGISTRO ACTUALIZADO";
?>
Y ya me funciona a la perfeccion. Muy agradecido y perdon por la molestia.
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:12.