Foros del Web » Programando para Internet » PHP »

problema con una tabla ke no actualiza correctamente

Estas en el tema de problema con una tabla ke no actualiza correctamente en el foro de PHP en Foros del Web. pues veran, tengo un sitema usuarios (con sesiones) en mi web y me pasaron un script ke edita los perfiles de los usuarios el problema ...
  #1 (permalink)  
Antiguo 10/05/2005, 14:51
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
problema con una tabla ke no actualiza correctamente

pues veran, tengo un sitema usuarios (con sesiones) en mi web y me pasaron un script ke edita los perfiles de los usuarios el problema es ke no me cambia las claves de estos, al contrario las deja en blanco a pesar ke me dice ke el perfil se edito con exito. El code es este

Código PHP:
<?   
include("config.php");

if (
$editar) {  // si viene del form de abajo edita el perfil
      
$query "UPDATE users SET email='$email' ,rollo='$rollo' WHERE nick='$_SESSION[usuario]'"mysql_query($query);
      echo 
"<b>Perfil Editado<br></b>";
}
if (empty(
$editar)) {  // si la variable editar esta vacia, osea k no tiene nada muestra el form

$query mysql_query("SELECT * FROM `users`  WHERE nick='$_SESSION[usuario]' ");  // hacemos un query para seleccionar los datos del usuario, y para que pueda cambiarlo
while($row=mysql_fetch_array($query))  
{

echo 
'<br>  
Pulsa enviar para actualizar los datos<br>  
<form method="post" action="editar.php">
Nick: <input type="text" name="nick" value="'
.$row["nick"].'" size="30" readonly><br>
email: <input type="text" name="email" value="'
.$row["email"].'"size="50"><br>
password: <input type="text" name"pass" value="'
.$row["pass"].'" size="30"><br>
Rollo: <textarea name="rollo" cols="30" rows="10">'
.$row["rollo"].'</textarea><br>
<input type="submit" name="editar" value="Enviar">
</form>'
;  


}
}

?>
yo solo cambie esta linea

Código PHP:
$query "UPDATE users SET email='$email' ,rollo='$rollo' WHERE nick='$_SESSION[usuario]'"mysql_query($query); 
por esta otra

Código PHP:
$query "UPDATE users SET email='$email' ,pass='$pass' ,rollo='$rollo' WHERE nick='$_SESSION[usuario]'"mysql_query($query); 
y no he tocado nada mas, no se ke es lo ke esta fallando, haber si alguno me echa una manito con ello :)
  #2 (permalink)  
Antiguo 10/05/2005, 17:21
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 8 meses
Puntos: 15
Prueba con esta linea:
$query = "UPDATE users SET email='$_POST["email"]' ,pass='$_POST["pass"]' ,rollo='$_POST["rollo"]' WHERE nick='$_SESSION[usuario]'"; mysql_query($query);

otro detalle verifica que la primera linea de tu php sea:
<?php
session_start();

Esto es para activar las sessiones ya que no se activan automaticas.
  #3 (permalink)  
Antiguo 10/05/2005, 17:34
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
ya lo hice asi y sigue sin funcionar :(
gracias por la ayuda
  #4 (permalink)  
Antiguo 10/05/2005, 23:26
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Lo de session_start() es correcto.. y veo creo que básicamente hay problemas con las variables globales: http://www.forosdelweb.com/showthrea...989#post238989

En la primera línea tienes esto:
Código PHP:
if ($editar
cuando debería ser esto:
Código PHP:
if (isset($_POST['editar'])) 
También estructuralmente esta mal planteado esto (además de lo de as variables globales) :
Código PHP:
if (empty($editar)) {  // si la variable editar esta vacia, osea k no tiene nada muestra el form 
... la cuestión es que si ya antes validaste que existiera una variable... no es correcto volver a preguntar por ella... en esta caso consultando su estado. Lo correcto sería preguntar "existe? ... sino ..." dicho en español ( ni tanto...), con dódigo es:
Código PHP:
if(variable) {
 .... 
bloque si existe
} else {
 .... 
bloque si no existe

... y pot último, las variables que son matricez... la correcta forma de aplicarlas en una cadena que tiene comillas es "romper" la cadena y concatenar con punto... bàsicamente lo que haces al mostrar tu formulario... Entoces, corrijiendo el código de dwaks quedaría así:
Código PHP:
$query "UPDATE users SET email='".$_POST['email']."', pass='".$_POST['pass']."', rollo='".$_POST['rollo']."' WHERE nick='".$_SESSION['usuario']."'";
mysql_query($query); 
Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 11/05/2005, 14:48
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
haber segun como te he entendido he corregido esas cosas y deje mi codigo de esta manera:

Código PHP:
<?   
session_start
();
include(
"config.php");

if (isset(
$_POST['editar'])) {  // si viene del form de abajo edita el perfil
      
$query "UPDATE users SET pass='".$_POST['pass']."', email='".$_POST['email']."', pais='".$_POST['pais']."', rollo='".$_POST['rollo']."' WHERE nick='".$_SESSION['usuario']."'";
      
mysql_query($query);
      echo 
"<b>Perfil Editado <a href=index.php>ir al inicio</a><br></b>";
}
if (empty(
$editar)) {  // si la variable editar esta vacia, osea k no tiene nada muestra el form

$query mysql_query("SELECT * FROM users WHERE nick='".$_SESSION[usuario]."'");  // hacemos un query para seleccionar los datos del usuario, y para que pueda cambiarlo
$row=mysql_fetch_array($query);  
echo 
'<br>  
Pulsa enviar para actualizar los datos<br>  
<form method="post" action="editar.php">
Nick: <input type="text" name="nick" value="'
.$row["nick"].'" size="30" readonly><br>
password: <input type="password" name"pass" value="'
.$row["pass"].'" size="30"><br>
email: <input type="text" name="email" value="'
.$row["email"].'" size="50"><br>
pais: <input type="text" name"pais" value="'
.$row["pais"].'" size="30"><br>
Rollo: <textarea name="rollo" cols="30" rows="10">'
.$row["rollo"].'</textarea><br>
<input type="submit" name="editar" value="Enviar">
</form>'
;  


}

?>
y me sigue sin modificar la clave y no me actualiza el nuevo campo "pais" ke le agregue a la tabla en la BD los demas datos (email y rollo) si los modifica, no entiendo pk los otros no, ke es lo ke esta mal en ese codigo ?

us saludo
  #6 (permalink)  
Antiguo 11/05/2005, 16:31
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Asegurate que el nombre de tu campo coincida con el que indicas en tu query.

Consejo:
SQL y PHP son cosas distíntas... separalas. Ve que tu parte PHP funcione correctamente, esto es, vé que --primero-- recivaz los valores correctamente (imprimelos) y que tu query quede como quieres (imprimela). Por parte de SQL, haz pruebas de tu query en phpMyAdmin... busca la query que te funcione y esa es la que deberá quedarte con PHP....

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #7 (permalink)  
Antiguo 11/05/2005, 16:44
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
lo he probado asi, pero lo ke no entiendo es pk me deja esos campos en blanco :s
  #8 (permalink)  
Antiguo 11/05/2005, 16:59
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
¿qué haz probado??...
Te aseguraste que recibas bien tus variables??; echo $_POST['campo_con_problemas']
Intentaste ocupar directamente la query con la que terminas?? echo $query; -> copias -> pegas en phpMyadmin ... ¿qué pasa?
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #9 (permalink)  
Antiguo 11/05/2005, 17:15
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
al momento de enviar los datos desde el formulario me dice ke fueron actualizados correctamente, y cuando voy al phpmyadmin esos dos campos (pass y pais) estan en blanco y los otros si kedan actualizados :s
  #10 (permalink)  
Antiguo 11/05/2005, 18:13
 
Fecha de Ingreso: enero-2004
Ubicación: Salto
Mensajes: 484
Antigüedad: 20 años, 3 meses
Puntos: 2
Cita:
¿qué haz probado??...
Te aseguraste que recibas bien tus variables??; echo $_POST['campo_con_problemas']
Intentaste ocupar directamente la query con la que terminas?? echo $query; -> copias -> pegas en phpMyadmin ... ¿qué pasa?
lo mismo digo, haz un echo a todas las variables q vienen del formulario. Prueba q el query funcione en phpmyadmin (no ir a ver si ingresó los datos), copia el SQL, pegalo en el SQL de phpmyadmin ejecútalo y fijate después si ingresó los datos, además agrégale un or die(mysql_error()) a los query q uses.
Saludos cuidate
__________________
Dios dira que esto no es justo, pero lo sera...
  #11 (permalink)  
Antiguo 12/05/2005, 12:57
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Por lo que dices... desde tu query están vacios los campos (hiciste lo que te sugerimos?; imprimir, copiar, pegar, probar).. osease que no los resives... cheka que el name de tu elemento del formulario sea exactamente el mismo que tienes en tu $_POST...

Hazlo funcionar por partes... Saludos!

Quizá (si sigues tenieando problemas) puedas actualizar tu script con los cambios que haz estado haciendo para poder verlo de nueva cuenta.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 08:51.