Foros del Web » Programando para Internet » PHP »

Problema con codigo php

Estas en el tema de Problema con codigo php en el foro de PHP en Foros del Web. hola, bueno antes que nada les explicare lo que necesito, primero necesito modificar un registro de una base de datos, para esto necesito que el ...
  #1 (permalink)  
Antiguo 21/04/2004, 21:14
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Exclamación Problema con codigo php

hola, bueno antes que nada les explicare lo que necesito, primero necesito modificar un registro de una base de datos, para esto necesito que el usurio "se identifique" por medio de un nick y un password, si existen se lleva acabo la modificacion, si no existe no se cambia nada y se manda un error, ya eh creado el scrip y funciona a la perfeccion, el unico problema es que solo modifica el primer registro de la tabla, del segundo en adelante me indica que el nick y el password no existen y no cambia nada, ahora lo que necesito ayuda es si alguien me puede decir donde esta el error, aqui les dejo el codigo, de antemano, gracias.

Código PHP:
<?php
include("conectar.php");
$link=Conectarse(); :-
$nick
=$_POST["nick"];
$password=$_POST["password"];
$nombre=$_POST["nombre"];
$gustos=$_POST["gustos"];
$avatar=$_POST["avatar"];
$otros=$_POST["informacion"];
$pagina=$_POST["pagina"];
$query mysql_query("SELECT * FROM usuarios"$link);

//definimos un array
$array mysql_fetch_array($query);

//realizamos un array de los campos que contienen el usuario y la contraseña
$arrayusuario = ($array["nick"]); 
$arraypassword = ($array["password"]);
//verificamos si existen y si son correctos con los de la base de datos
if ($_POST["nick"]=="$arrayusuario" && $_POST["password"]=="$arraypassword"){
//si son correrctos ejecutamos la sentencia UPDATE
mysql_query("UPDATE usuarios SET nombre='$nombre',gustos='$gustos',avatar='$avatar',otros='$otros',pagina='$pagina'",$link);
header("location:index.php");
}
else
{
//si no existe mandamos un error
echo"error al crear el perfil, verifica los datos que escribiste,  Nick <b>",$nick,"</b> password <b>",$password,"</b>."

mysql_close($link);
?>
Atte. Nemutagk
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #2 (permalink)  
Antiguo 21/04/2004, 22:53
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 3 meses
Puntos: 13
probaste esto?

mysql_query("UPDATE usuarios SET nombre='$nombre',gustos='$gustos',avatar='$avatar'
,otros='$otros',pagina='$pagina' WHERE nombre='$nombre' ",$link);

pero pensandolo bien eso no sirve jajaja... bueno en algo sí...

en la conicional WHERE debes especificar un campo que identifique a ese determinado usuario y que nunca cambie para que el query sepa en que registro debe hacer dichos cambios. no s e por ejemplo cada usuario cuando se registro le diste un numero identificativo... ¿quizá podrias usar el ID d ecada usuario?(¿tienes un campo id cierto?)
__________________
El conocimiento es libre: Movimiento por la Devolución

Última edición por frijolerou; 21/04/2004 a las 22:57
  #3 (permalink)  
Antiguo 22/04/2004, 16:40
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Si, cada usuario tiene un ID unico, sin embargo con o sin la condicion where aun asi me manda el mismo error el cual es que me dice que el nick y el password son erroneos
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #4 (permalink)  
Antiguo 23/04/2004, 07:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
EL condicional para el UPDATE (SQL) "WHERE" te hace falta .. sino vas a actualizar todos esos registros. Usa el nick, o alguno de tus campos que sea único (supongo que tu "ID" o como llames a tu campo autoincremental y único de tu tabla de usuarios).

El consulta SQL que haces ..para obtener el registro y luego comparar su usuario/contraseña .. podrías hacerlo desde SQL:

Código PHP:
$query=mysql_query("SELECT * FROM usuarios WHERE nick='".mysql_escape_string($_POST['nick'])."' AND password='".mysql_escape_string($_POST['password'])."'"$link);

// se cuentan el nº de resultados .. si es 1 (se supone que trabajas con cuentas de usuarios únicas ..) se obtiene tu record-set y haces tu UPDATE "condiconal"
if (mysql_num_rows($query) == 1){
$array=mysql_fetch_array($query);

mysql_query("UPDATE usuarios SET  nombre='".$array['nombre']."', ... etc WHERE id_usuario='".$array['id_usuario']."'",$link);

// Si vas a cerrar la BD .. mejor hazlo inmediatamente despues de que ya no necesites de tu BD ...  (que de todas formas ya libera PHP al terminar el script o al usar el mysql_close()

mysql_close($link);

header("location:index.php");
// Redireccionas y terminas la ejecución del script en este punto.
exit;

} else {
echo 
"Usuario no existe o password incorrecto";

por cierto .. se supone que con esto estás o vas a actualizar un registro de tu usuario . no a "crearlo" ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 11:42.