Foros del Web » Programando para Internet » PHP »

Mostrar perfil de usuario y luego modificar en la tabla

Estas en el tema de Mostrar perfil de usuario y luego modificar en la tabla en el foro de PHP en Foros del Web. Les cuento: No llevo mucho programando en PHP pero algo de conocimiento tengo en C, C++, entre otros lenguajes de programación. Estaba creando la sección ...
  #1 (permalink)  
Antiguo 21/12/2010, 19:17
 
Fecha de Ingreso: diciembre-2010
Ubicación: Iquique
Mensajes: 50
Antigüedad: 13 años, 4 meses
Puntos: 5
Mostrar perfil de usuario y luego modificar en la tabla

Les cuento:
No llevo mucho programando en PHP pero algo de conocimiento tengo en C, C++, entre otros lenguajes de programación.

Estaba creando la sección donde el usuario puede editar su perfil a su gusto, resulta que hise la consulta a mysql, comparando el campo id (en la base de datos es de auto incremento), y me arroja un error.

Buscando aqui en el foro encontre algunos tipos de soluciones a problemas de otros usuarios y hasta el momento voy aqui:

Cita:
<?php
{
$id = $_SESSION['id'];
$sql="select id usr pass email from tabla where id=$id";
$result=mysql_query($sql);
$buscado = mysql_fetch_array ($result);
?>

<label class="grey" for="username">Usuario:</label>
<input class="field" type="text" name="username" id="username" value="<?php echo $buscado['usr']?>" size="23"/>
<?php
}
?>
Pero me aparece el siguiente error:
Cita:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/lodegcco/public_html/miperfil.php on line 357
Segun lo que estube leyendo se supone que la funcion mysql_fetch_array() me iba a recoger todos los datos que yo solicite a la tabla en la base de datos, para poder mostrar al usuario un panel donde el pueda editar a su gusto su perfil (obviamente no el nombre de usuario, solamente lo puse como prueba).

Espero haberme dado a entender y se les agradeceria si me pueden prestar un poco de ayuda.
  #2 (permalink)  
Antiguo 21/12/2010, 19:27
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Mostrar perfil de usuario y luego modificar en la tabla

tu error es de mysql, cuando haces una consulta select debes separar los campos por comas eje
Código MySQL:
Ver original
  1. select campo1,campo2 ......,
a demas es bueno que en la fase de desarrollo depures tus consultas ej
Código PHP:
Ver original
  1. mysql_query(/*tu consulta*/) or die (mysql_error());

saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 21/12/2010, 19:47
 
Fecha de Ingreso: diciembre-2010
Ubicación: Iquique
Mensajes: 50
Antigüedad: 13 años, 4 meses
Puntos: 5
Respuesta: Mostrar perfil de usuario y luego modificar en la tabla

Muchas gracias, disculpa por hacerte otra consulta antes que lo cierren, para poder updatear los campos del perfil de usuario como seria el update ?
  #4 (permalink)  
Antiguo 21/12/2010, 19:49
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Mostrar perfil de usuario y luego modificar en la tabla

en este vinculo te aseguro que encontraras las informacion de como trabajar los updates esa pagina tambien te ayuda con el SQL basico, dale un vistaso saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 21/12/2010, 20:56
 
Fecha de Ingreso: diciembre-2010
Ubicación: Iquique
Mensajes: 50
Antigüedad: 13 años, 4 meses
Puntos: 5
Respuesta: Mostrar perfil de usuario y luego modificar en la tabla

Se agradece, avisare al final si logre solucionar mi problema por completo :D
  #6 (permalink)  
Antiguo 21/12/2010, 21:22
 
Fecha de Ingreso: diciembre-2010
Ubicación: Iquique
Mensajes: 50
Antigüedad: 13 años, 4 meses
Puntos: 5
Respuesta: Mostrar perfil de usuario y luego modificar en la tabla

Bueno siguiendo con el tema de updatear los campos del perfil hasta el momento voy asi:

Cita:
<body>
<?php
if(isset($_REQUEST['actualizar']))
{
$id = $_SESSION['id'];
$email= $_POST['email'];
mysql_query ("update lod_miembros email = $email where id=$id")
or die ("Fallo en la consulta");
mysql_close ($conexion);
}
else
{
?>
Luego sigue el resto del codigo, de la web...

Cita:
<?php
{
if($_SESSION['id'])
{
$id = $_SESSION['id'];
$sql="select id,usr,pass,email,steam_global,centra_guid from lod_miembros where id=$id";
$result=mysql_query($sql);
$buscado = mysql_fetch_array ($result);
}
?>

<?php
if($_SESSION['id'])
{
?>
<form class="borde">
<p><label class="grey" for="username">Usuario:</label>
<input class="field" type="text" name="username" id="username" value="<?php echo $buscado['usr']?>" size="23" disabled="disabled"/></p>
<p><br><label class="grey" for="password">Contrase&#241a Actual:</label>
<input class="field" type="password" name="password" id="password" value="" size="23" /></p>
<p><br><label class="grey" for="password_uno">Nueva Contrase&#241a:</label>
<input class="field" type="password" name="password_uno" id="password_uno" value="" size="23" /></p>
<p><br><label class="grey" for="password_dos">Confirmar Contrase&#241a:</label>
<input class="field" type="password" name="password_dos"" id="password_dos"" value="" size="23" /></p>
<p><br><label class="grey" for="email">Email:</label>
<input class="field" type="text" name="email" id="email" value="<?php echo $buscado['email']?>" size="23" /></p>
<p><br><label class="grey" for="steam">Steam Global:</label>
<input class="field" type="text" name="steam" id="steam" value="<?php echo $buscado['steam_global']?>" size="23" disabled="disabled"/></p>
<p><br><label class="grey" for="centra">Centra Guid:</label>
<input class="field" type="centra" name="centra" id="centra" value="<?php echo $buscado['centra_guid']?>" size="50" disabled="disabled"/></p>
<center><input type="submit" value="Actualizar" name="actualizar"/></center>
</form>
<?php
Que estos serian los campos que se pueden actualizar hasta el momento estoy actualizando solo el campo email y comprobando segun el id de usuario que la tengo almacena en el inicio de sesión.

Lamentablemente me da un fallo en la consulta.
Alguna idea del porque
  #7 (permalink)  
Antiguo 21/12/2010, 21:40
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Mostrar perfil de usuario y luego modificar en la tabla

si depuras la consulta como te indique con el mysql_error() el te dara la razon, en este caso te lo indicare, si te fijas en el vinculo que te deje mostraba esta sentencia para actualizar
Cita:
UPDATE "nombre_tabla"
SET "columna_1" = [nuevo valor]
WHERE {condición}
tu sentencia es la siguiente
Código PHP:
Ver original
  1. mysql_query ("update lod_miembros email = $email where id=$id")
  2. or die ("Fallo en la consulta");
en tu consulta hace falta algo que es parte de la sentencia y es el SET, si te fijas en la estructura del UPDATE en la cita que te coloque te falto eso cierto?? pues acomodalo y veras que no te dara ningun error saludos y te vuelvo a invitar a leer el link que te deje, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #8 (permalink)  
Antiguo 21/12/2010, 22:21
 
Fecha de Ingreso: diciembre-2010
Ubicación: Iquique
Mensajes: 50
Antigüedad: 13 años, 4 meses
Puntos: 5
Respuesta: Mostrar perfil de usuario y luego modificar en la tabla

Disculpa por no hacer caso a la primera, no habia captado la idea del mysql_error();

Edito nuevamente con lo ultimo que estube trabajando, el codigo quedo asi:

//Update de la información captada por los campos que se muestran mas abajo, ahoro solo estoy haciendolo con el email
Código PHP:
<?php 
    
if(isset($_REQUEST['actualizar']))
    {
        
$id $_SESSION['id'];
        
$email$_POST['email'];      
        
mysql_query (
            
"UPDATE lod_miembros
             SET email = $email 
             WHERE id=$id"
)
        or die (
mysql_error());
    }
    else 
    {
?>
Sale el siguiente error:
Cita:
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 '@live.com WHERE id=25' at line 2

El resto del codigo donde captamos los datos a actualizar esta de la siguiente manera:
Código PHP:
<?php
    
if($_SESSION['id'])
    {
    
?>
    <form class="borde" ACTION="miperfil.php" METHOD="POST">
            <p><label class="grey" for="username">Usuario:</label>
            <input class="field" type="text" name="username" id="username" value="<?php echo $buscado['usr']?>" size="23" disabled="disabled"/></p>
            <p><br><label class="grey" for="password">Contraseña Actual:</label>
            <input class="field" type="password" name="password" id="password" value="" size="23" /></p>
            <p><br><label class="grey" for="password_uno">Nueva Contraseña:</label>
            <input class="field" type="password" name="password_uno" id="password_uno" value="" size="23" /></p>
            <p><br><label class="grey" for="password_dos">Confirmar Contraseña:</label>
            <input class="field" type="password" name="password_dos"" id="password_dos"" value="" size="23" /></p>            
            <p><br><label class="grey" for="email">Email:</label>
            <input class="field" type="text" name="email" id="email" value="<?php echo $buscado['email']?>" size="23" /></p>
            <p><br><label class="grey" for="steam">Steam Global:</label>
            <input class="field" type="text" name="steam" id="steam" value="<?php echo $buscado['steam_global']?>" size="23" disabled="disabled"/></p>
            <p><br><label class="grey" for="centra">Centra Guid:</label>
            <input class="field" type="centra" name="centra" id="centra" value="<?php echo $buscado['centra_guid']?>" size="50" disabled="disabled"/></p>
            <center><input type="submit" value="Actualizar" name="actualizar"/></center>
    </form>
He tratado de solucionar el error pero no puedo.
Edito nuevamente:
Cree otro columna en la base de datos, con el nombre real del usuario. Luego intente modificar solamente el campo nombre (Ejemplo: Juan) no me arrojo ningun error pero la base de datos NO fue modificada.
Posterior intente poner el nombre completo (Ejemplo: Juan Miranda) y nuevamente me encontre frente a un error (El nombre que puse en esta ocacion fue "asdf asdasd" :
Cita:
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 'asdasd WHERE id=25' at line 2

Última edición por Gospe1; 22/12/2010 a las 09:12
  #9 (permalink)  
Antiguo 22/12/2010, 10:29
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Mostrar perfil de usuario y luego modificar en la tabla

pues amigo como te dije antes tienes que buscar un poquito mas de informacion sobre las consultas, los string se trabajan con comillas simples por lo que
Cita:
UPDATE lod_miembros
SET email = $email
WHERE id=$id"
el email es una cadena deberia de ser
Código MySQL:
Ver original
  1. UPDATE lod_miembros
  2.              SET email = '$email'
  3.              WHERE id=$id"
yo normalmente a los campos los trrabajo colocandoles las comillas, pero sin embargo en los campos int no son necesarias, prueba y como te dije antes invetiga un poquito, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #10 (permalink)  
Antiguo 22/12/2010, 10:51
 
Fecha de Ingreso: diciembre-2010
Ubicación: Iquique
Mensajes: 50
Antigüedad: 13 años, 4 meses
Puntos: 5
Respuesta: Mostrar perfil de usuario y luego modificar en la tabla

Disculpa, y si estube investigando pero a lo mejor no busque correctamente.

Etiquetas: modificar, perfil, tablas, usuarios
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 13:20.