| |||
aver si algien me puede decir que tengo mal en estos codigos que son para cambier el nick de usuario pero no se que ai mal por que me cambia el nick de todos los usuarios de la base de datos y yo solo quiero que cambie el del usuario que lo utiliza: 1 pagina cambiardatos.php <? include('config.php'); if(!isset($_SESSION[usuario]) ) { echo 'si no inicias sesion no puedes cambiar los datos '; } else{ echo' <form method="post" action="editar.php"> <input type="text" name="nick" value="'.$_SESSION[usuario].'" readonly><br> <input type="submit" value="enviar" name="submit"> </form>'; } ?> 2 pagina editar.php <? include("config.php"); $query = mysql_query("SELECT * FROM `users` WHERE nick='$nick' "); while($row=mysql_fetch_array($query)) { echo '<br> Pulsa enviar para actualizar los datos<br> <form method="post" action="update.php"> Nuevo Nick: <input type="text" name="nick" value="'.$row["nick"].'" size="30"><br> email: <input type="text" name="email" value="'.$row["email"].'"size="50"><br> <input type="submit" name="submit" value="Enviar"> </form>'; } ?> 3 pagina update.php <? include('config.php'); $query = "UPDATE users SET nick='$nick', fecha='$fecha'"; mysql_query($query); echo "<b>Usuario Editado<br></b>"; ?> |
| ||||
te muestro una query que uso para actualizar una tabla: $query="UPDATE rubro SET imagen = '".$nombre."' WHERE Id=".$_POST['Id']; el tema es que debés tener en la tabla de usuarios un identificador único, en mi caso se llama Id pero puede ser cualquier otro, este te sirve para seleccionar el registro a actualizar, como no se la estructura de tus tablas no se cual será el identificador único de los registros pero ese es el que daría la condición en el caso del ejemplo le digo que cambie el campo imagen asignándole la variable nombre en el registro cuyo Id es igual a la variable Id. Espero haberte aclarado el punto, de todas maneras sigo a tu disposición. |
| |||
aver en el update.php e puesto lo que me dices y queda asi: <? include('config.php'); $query="UPDATE rubro SET imagen = '".$nombre."' WHERE Id=".$_POST['Id']; echo "<b>Usuario Editado<br></b>"; ?> pero no ace nada no me cambia nada de la base de datos y la base de datos si tengo id con valor unico por usuario |
| |||
Hola, El problema es que no le has dicho al script que actualiza. El formulario solo le manda los nuevos datos, pero no dice a quien. Por lo que veo, es para que el propio usuario modifique sus datos. En este caso, debes tener en la sesion algo que le identifique (el id, el nick, ...). Puedes usar ese valor para la condicion de la consulta (igual que en el select). Si es para que un usuario modifique los datos de otro usuario, en el formulario deberias añadir de alguna forma (un campo oculto, por ejemplo) un campo en el que pases un valor que identifique el registro a modificar (el id, por ejemplo). Saludos.
__________________ Josemi Aprendiz de mucho, maestro de poco. |
| |||
gracias por la ayuda ya esta solucionado el problema, ahora me sale otro problema que es que al crear la cuenta el usuario no puede poner el mismo nick que otro pero al cambiarse el nick si puede el codigo de editar.php es este: <? include("config.php"); $query = mysql_query("SELECT * FROM `users` WHERE nick='$nick' "); while($row=mysql_fetch_array($query)) { echo '<br> Pulsa enviar para actualizar los datos<br> <form method="post" action="update.php"> Nuevo Nick: <input type="text" name="nick" value="'.$row["nick"].'" size="30"><br> email: <input type="text" name="email" value="'.$row["email"].'"size="50" readonly><br> <input type="submit" name="submit" value="Enviar"> </form>'; } ?> que tendria que poner para si el nick ya esta en la base de datos le salga un mensage del tipo este nick ya esta en uso o algo parecido |
| |||
Bueno, tienes 2 opciones: 1.- Hacer el campo nick como 'unico' en la base de datos. En ese caso, al intentar un update con un valor que exista en otro registro la consulta producira un error. Asi que seria cuestion de mirar si mysql_query() devuelve false (error en MySQL) y comprobar el numero de error con mysql_errn() (www.php.net/mysql_errn) que corresponda con campo unico duplicado y en ese caso mostrar el mensaje. 2.- El metodo facil: realiza un select por ese nick antes del update. Si devuelve un registro es que ya existe y mandas el mensaje. Eso si, siempre y cuando el usuario no quiera cambiar su nick por su nick actual. Si, es un contrasentido, pero siempre habra algun lumbreras que en el campo nick para modificar ponga el valor actual. Saludos.
__________________ Josemi Aprendiz de mucho, maestro de poco. |