Foros del Web » Programando para Internet » PHP »

Problemas con Update

Estas en el tema de Problemas con Update en el foro de PHP en Foros del Web. estoy haciendo un modulo para modificar datos de una base de datos en MySql con PHP pero al tratar de modificar o actualizar un dato ...
  #1 (permalink)  
Antiguo 01/04/2005, 08:14
 
Fecha de Ingreso: febrero-2005
Mensajes: 40
Antigüedad: 12 años, 10 meses
Puntos: 0
Problemas con Update

estoy haciendo un modulo para modificar datos de una base de datos en MySql con PHP pero al tratar de modificar o actualizar un dato no lo hace, el codigo es el siguiente
alguien sabe si hay algo mal, a mi me tinca que el problema lo tengo en la linea que esta ennegresida

<form action="<?=$PHP_SELF?>" method="post" enctype="multipart/form-data" name="form1">
<?php
while($resultados = mysql_fetch_array($archivo_consulta))
{
echo"<tr><td><input name=\"id_producto\" type=\"text\" id=\"id_producto\" value=\"$resultados[id_producto]\" size=\"40\" maxlength=\"40\"></td></tr>";
echo"<tr><td><input name=\"nombre\" type=\"text\" id=\"nombre\" value=\"$resultados[nombre]\" size=\"40\" maxlength=\"40\"></td></tr>";


}
mysql_free_result($archivo_consulta);
?>
<p>
<input type="submit" name="boton" value="Enviar">
</p>
</form>
</table>
<?php
if($boton) {
$db_conexion= mysql_connect("$sql_host", "$sql_usuario", "$sql_pass") or die("No se pudo conectar a la Base de datos") or die(mysql_error());
mysql_select_db("$sql_db") or die(mysql_error());
$qry = "UPDATE 'archivos' SET nombre='$nombre' WHERE `id_producto` LIKE '$id'" or die("No se pudo realizar la consulta a la Base de datos");mysql_query($qry,$db_conexion);
}
?>
  #2 (permalink)  
Antiguo 01/04/2005, 08:24
 
Fecha de Ingreso: mayo-2004
Ubicación: Managua, Nicaragua
Mensajes: 281
Antigüedad: 13 años, 7 meses
Puntos: 0
"UPDATE 'archivos' el nombre de la tabla es sin comillas
__________________
Julio Hernández
  #3 (permalink)  
Antiguo 01/04/2005, 08:45
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 8 meses
Puntos: 17
y el campo (id_producto) lo mismo... sin comillas
  #4 (permalink)  
Antiguo 01/04/2005, 08:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Tanto el nombre de los campos como tablas puede ir entre: `id_producto` (no es lo mismo ` que ') .. De hecho es recomendable usar esa sintax para llamada a campos y nombres de tablas .. pues podría usarse alguna palabra reservada de Mysql ..

Un saludo,
  #5 (permalink)  
Antiguo 01/04/2005, 09:16
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 8 meses
Puntos: 17
ah... gracias por el dato, Cluster...
  #6 (permalink)  
Antiguo 01/04/2005, 09:44
 
Fecha de Ingreso: febrero-2005
Mensajes: 40
Antigüedad: 12 años, 10 meses
Puntos: 0
gracias por la ayuda pero sigue con el mismo comportamiento
la linea quedo asi

$qry = "UPDATE `archivos` SET `nombre`='$nombre' WHERE `id_producto` LIKE '$id'" or die("No se pudo realizar la consulta a la Base de datos");
  #7 (permalink)  
Antiguo 01/04/2005, 09:53
 
Fecha de Ingreso: mayo-2004
Ubicación: Managua, Nicaragua
Mensajes: 281
Antigüedad: 13 años, 7 meses
Puntos: 0
@mysql_query($sql)
__________________
Julio Hernández
  #8 (permalink)  
Antiguo 01/04/2005, 10:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Además de los problemas de sintax SQL . .tienes un lio con el uso del "or die()"..

Usar "or llamada a función" se debe usar en "funciones" que devuelven un "boolean" (un TRUE o FALSE) .. Esas funciones en tu caso son las de mysql_xxxx() .. todas (o casi todas) devuelven un "false" si no se ejecutaron correctamente .. por eso se usa "or" (si .. false ..) entonces ejecuta tal función .. Esa tal función es "die()" que lo que hace o dice hacer es "termina la ejecución del script aquí mismo y presenta un mensaje de error. A su vez .. la función "mysql_error()" nos dá el mensaje de error exacto que probocó Mysql .. (sino PHP sale con otro error que no es exactamente algo que sucedión en el motor de BD .. como por ejemplo un error de sinxtax SQL .. o de conexión).

Código PHP:
$qry "UPDATE `archivos` SET `nombre`='".mysql_escape_string($_POST['$nombre'])."' WHERE `id_producto` LIKE '".mysql_escape_string($_POST['id_producto'])."'";
mysql_query($qry,$db_conexion) or die(mysql_error()); 
Otros detalles:
* No es $id sino $id_producto (fijate en el nombre de ese campo en tu formulario)

* enctype="multipart/form-data"

si no usas un campo "file" .. está de más o no corresponde realmente ese cabecera .. lo que envias es "texto plano" no "binario + texto plano" como sucede cuando se usa un campo "file" de un formulario HTML.

* Usa los arrays superglobales:
$_POST, $_GET .. $_SERVER .. etc.. Por ejemplo; en lugar de $PHP_SELF usar: $_SERVER['PHP_SELF'] ..

* Usando mysql_escape_string() te aseguras algo más de seguridad .. evitarías en parte problemas de "SQL injection". (puedes usar google para buscar sobre ese tema)

Un saludo,

Última edición por Cluster; 01/04/2005 a las 10:16
  #9 (permalink)  
Antiguo 01/04/2005, 13:01
 
Fecha de Ingreso: febrero-2005
Mensajes: 40
Antigüedad: 12 años, 10 meses
Puntos: 0
gracias ya funciono
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 22:04.