Foros del Web » Programando para Internet » PHP »

¿Error en el código? A ver si me podeis ayudar

Estas en el tema de ¿Error en el código? A ver si me podeis ayudar en el foro de PHP en Foros del Web. Muy buenas, tengo el siguiente código y no se k le pasa, pero no me va.... No se k es lo mal, es la primera ...
  #1 (permalink)  
Antiguo 22/06/2004, 08:28
Avatar de oskitar  
Fecha de Ingreso: junio-2002
Mensajes: 245
Antigüedad: 15 años, 5 meses
Puntos: 1
¿Error en el código? A ver si me podeis ayudar

Muy buenas, tengo el siguiente código y no se k le pasa, pero no me va....

No se k es lo mal, es la primera vez k intento un update y no me sale.

tengo dos archivos. El primero:

Código PHP:
<?
$link 
mysql_connect("localhost","empresaria","plazaadra2003");
mysql_select_db("almeriaempresaria_com"$link);
if(!
mysql_select_db) {echo "No se ha podido conectar a la bd";}
$sql"SELECT * FROM CLIENTE WHERE idcliente='".$_GET['idcliente']."'";
$resultmysql_query($sql$link);
if(
$row=mysql_fetch_array($result)){
echo 
"<form action='guardar.php' method='post'>\n";
echo 
"<table width=100% border=0><tr><td width=30% style='font-family:Verdana; font-size:10px'>Idcliente</td><td width=70%><input size=30 style='font-family:Verdana; font-size:10px' type=\"text\" name=\"idcliente\" value=\"".$row["idcliente"]."\"></td></tr>\n";
echo 
"<table width=100% border=0><tr><td width=30% style='font-family:Verdana; font-size:10px'>Nombre</td><td width=70%><input size=30 style='font-family:Verdana; font-size:10px' type=\"text\" name=\"nombre\" value=\"".$row["nombre"]."\"></td></tr>\n";
echo 
"<table width=100% border=0><tr><td width=30% style='font-family:Verdana; font-size:10px'>Dirección</td><td width=70%><input size=30 style='font-family:Verdana; font-size:10px' type=\"text\" name=\"direcc\" value=\"".$row["direccion"]."\"></td></tr>\n";
echo 
"<table width=100% border=0><tr><td width=30% style='font-family:Verdana; font-size:10px'>Ciudad</td><td width=70%><input size=30 style='font-family:Verdana; font-size:10px' type=\"text\" name=\"city\" value=\"".$row["ciudad"]."\"></td></tr>\n";
echo 
"<table width=100% border=0><tr><td width=30% style='font-family:Verdana; font-size:10px'>Código Postal</td><td width=70%><input size=30 style='font-family:Verdana; font-size:10px' type=\"text\" name=\"cp\" value=\"".$row["cp"]."\"></td></tr>\n";
echo 
"<table width=100% border=0><tr><td width=30% style='font-family:Verdana; font-size:10px'>Teléfono</td><td width=70%><input size=30 style='font-family:Verdana; font-size:10px' type=\"text\" name=\"telef\" value=\"".$row["telef"]."\"></td></tr>\n";
echo 
" <table width=100% border=0><tr><td width=100% style='font-family:Verdana; font-size:10px'><input type=\"submit\" value=\"Guardar\"></td></tr>\n";
echo 
"</table></form>";}
?>
Este archivo viene de otro del k sako el idcliente.

y ejecuta este:

Código PHP:
<?
$DOCUMENT_ROOT 
$HTTP_SERVER_VARS['DOCUMENT_ROOT'];
$idcliente $HTTP_POST_VARS['idcliente'];
$nombre $HTTP_POST_VARS['nombre'];
$direcc $HTTP_POST_VARS['direcc'];
$city $HTTP_POST_VARS['city'];
$cp $HTTP_POST_VARS['cp'];
$telef $HTTP_POST_VARS['telef'];
?>
<html>
<head>
<title>Resultado de la operaci&oacute;n</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<?
$link
=mysql_connect("localhost","empresaria","plazaadra2003");
mysql_select_db("almeriaempresaria_com",$link);
if(!
mysql_select_db){
echo 
"No se ha podido conectar a la bd";}
else{
$sql="UPDATE CLIENTE SET  nombre=$nombre, direccion=$direcc, ciudad=$city, cp=$cp, telef=$telef WHERE idcliente=$idcliente";
$result=mysql_db_query($sql,$link);
if(!
$result){
echo 
"<table><tr><td style='font-family:Verdana; font-size:10px'>No se ha podido realizar la operación.</td></tr></table>\n";
echo 
"<table><tr><td style='font-family:Verdana; font-size:10px'><a href=\"javascript:history.back()\"><img src=\"atras.gif\" border=\"0\"></a></td></tr>\n";
echo 
"</table>";}
else{
echo 
"<head><META http-equiv=\"refresh\" content =\"5; URL=clientes.php\"></head>\n";
echo 
"<table><tr><td style='font-family:Verdana; font-size:10px'>Operación realizada.</td></tr>\n";
echo 
"</table>";}}
?>
<body>
</body>
</html>
No se k pasa k siempre me devuelte el texto k le puse a !$result...

a ver si podeis ayudarme

saludos
  #2 (permalink)  
Antiguo 22/06/2004, 09:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Algunos consejos:

1) Todo ese HTML en el script del "UPADATE" está de más .. Fijate que es PHP el que realiza el proceso integro. Si hay mensajes de error/exito que mostrar. Si los haces ahí mismo en el flujo del proceso del "UPDATE" .. si recargas la página en ese tiempo que muestras esos mensajes vas a ocasionar que se ejecute nuevamente tu "UPDATE" (podría ser peor si fuera un INSERT .. ahí duplicarías registros por ejemplo ..)

La solución a ese problema se solventan mostrando los mensajes de error/exito en otra página (al menos: una recarga/redireccionamiento al mismo script). Para eso, le pasarías como parámetro una simple variable en el URL a redireccionar con el mensaje o código a mostrar (mejor "código") tipo:
Código PHP:
<?
// Ojo .. nada de HTML por encima . no es necesario es un proceso PHP integro!.
tu mysql_query() ....
if (
todo OK){
$codigo="ok";
} else {
$codigo="error"
}
// redireccionar automáticamente a mensajes.php con codigo como parámetro
header ("Location: mensajes.php?codigo=$codigo");
?>
En mensaje.php .. bajo $codigo ($_GET['codigo'] o $HTTP_GET_VARS['codigo']) tendrás tu "error" u "ok" según corresponda y . .en consecuencia muestras el error (con tu página HTML si quieres con ese "meta" para redireccionar a X tiempo hacia el destino definitivo).

2) Usar al menos comillas en las menciones a variables .. sino, si tienes un espacio en "$nombre" ej.: jose luis, "luis" será tomado como sentencia SQL .. con su consiguiente error. (esto puede ser el error que esté probocando tu problema) ...

[PHP]$sql="UPDATE CLIENTE SET nombre='$nombre', direccion='$direcc', ciudad='$city', cp='$cp', telef='$telef' WHERE idcliente='$idcliente'";
$result=mysql_db_query($sql,$link); [/quote]

3) para ver algunos errores de SQL más concretos .. puedes usar:

Código PHP:
$result=mysql_db_query($sql,$link) or die (mysql_error()); 
Un saludo,
  #3 (permalink)  
Antiguo 22/06/2004, 15:19
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Vete a tu php.ini y activa todos los mensajes de error con error_reporting E_ALL.

Y no es lo mismo mysql_db_query() (www.php.net/mysql_db_query), que es la que usas, que mysql_query() (www.php.net/mysql_query), que es la que realmente querias usar (por los parametros que pones).

Y revisa mysql_select_db() (www.php.net/mysql_select_db), no lo estas usando del todo bien.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 22/06/2004, 18:22
Avatar de oskitar  
Fecha de Ingreso: junio-2002
Mensajes: 245
Antigüedad: 15 años, 5 meses
Puntos: 1
joder, tios, cojonudo

muchas gracias....................

he cambiado el mysql_db_query y he puesto las ' ' en cada variable y me ha salido. Ahora me pongo con lo k tu dices, cluster, creo entender k la consulta en un sitio y luego en otro archivo php, la muestra de las respuestas.... bien pensado,tio
;)

esto tiene migas

saludos y gracias mil
  #5 (permalink)  
Antiguo 22/06/2004, 18:40
Avatar de oskitar  
Fecha de Ingreso: junio-2002
Mensajes: 245
Antigüedad: 15 años, 5 meses
Puntos: 1
Perfecto, cluster, eres un crack

Me salió de puta madre

saludos and thanks
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:28.