Page 1 of 1

profile editing errors

Posted: Sat Jun 30, 2012 8:49 pm
by Thunderbob
sorry guys for asking for so much in one day.
So thanks to an awesome individual within this forum I was able to fix one of the most annoying
errors. The profile page set-up is looking good.
I can change the uid at the end of the url and I am linked to a different profile page.
Now I want the user who is logged in to be able to edit their information.

I'm testing out the code from the online video and no luck.
The form shows up nice and fine but once I hit submit ...nothing changes.
Also the form only shows the info for the user who's id = 1


Here is the profile editing page
<?php
 include('init.inc.php');
if (isset($_POST['email'], $_POST['location'], $_POST['about'], $_POST['gender'], $_POST['username'])){
$errors = array();

if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)=== false)
 {
$errors[] = 'The email address you entered is not valid or is already taken.';
}



if(empty($errors)) 
{ set_profile_info($_POST['email'], $_POST['location'], 
$_POST['about'], $_POST['gender'], $_POST['username']);
}
$user_info = array( 
         'email'  => htmlentities($_POST['email']),
         'about'  => htmlentities($_POST['about']),
         'gender' => htmlentities($_POST['gender']),
         'location' => htmlentities($_POST['location']),
         'username' => htmlentities($_POST['username'])
);
}
else{
$user_info = fetch_user_info($_SESSION['uid']);}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" concent=text/html; charset=utf-8" />
<style type="text/css">

form { margin:10px 0px 0px 0px; }
form div { float:left; clear:both; margin: 0px 0px 4px 0px;}
label { float:left; width: 100px; }
input[type="text"], textarea { float:left; width:400px;}
input[type="submit"] { margin:10px 0px 0px 100px;}
</style>

<title>Edit Your Profile</title>
</head>
<body>
<div>
<?php

if (isset($errors) === false) {

    echo 'Click update to edit your profile.';
}else if (empty($errors)){
echo 'Your profile has been updated.';
}else{  echo '<ul><li>' , implode('</li><li>', $errors), '</li></ul>';
 }




?>
</div>


<form action="" method="post">


<div>
<label for="username"> Username: </label>
<input type="text" name="username" id="username" value="<?php echo $user_info['username']; ?>" />
</div>

<div>
<label for="email"> Email: </label>
<input type="text" name="email" id="email" value="<?php echo $user_info['email']; ?>" />
</div>

<div>
<label for="gender"> Gender: </label>
<input type="text" name="gender" id="gender" value="<?php echo $user_info['gender']; ?>" />
</div>



<div>
<label for="location"> Location: </label>
<input type="text" name="location" id="location" value="<?php echo $user_info['location']; ?>" />
</div>

<div>
<label for="about"> About Me: </label>
<textarea name="about" id="about " rows="14" cols="50"> <?php echo $user_info['about']; ?>  </textarea>
</div>

<div>
<input type="submit" value="Update" />
</div>
</form>



</body>
</html>
here is the backend file
<?php
function fetch_users(){
        $result = mysql_query("SELECT `id_user` AS `id`, `username` AS `username` FROM `fgusers3` ");
               $users = array();
               while (($row = mysql_fetch_assoc($result)) !== false){
                $users[] = $row;
        }echo mysql_error();
               return $users;
}
function fetch_user_info($uid){
$uid = (int)$uid;
$sql = "SELECT
                               `username` AS `username`,
                               `user_about` AS `about`,
                               `user_location` AS `location`,
                               `user_gender` AS `gender`
                       FROM `fgusers3`
                       WHERE `id_user`= '{$uid}'" ;
$result = mysql_query($sql);
return mysql_fetch_assoc($result);
   }

// updates the current users profile information.
function set_profile_info($email, $location, $about, $gender, $username){
   $email     =  mysql_real_escape_string(htmlentities($email));
   $about     =  mysql_real_escape_string(htmlentities($about));
   $location  =  mysql_real_escape_string(htmlentities($location));
   $gender     = mysql_real_escape_string(htmlentities($gender));
   $username     =  mysql_real_escape_string(htmlentities($username));

    $sql = "UPDATE fgusers3 SET 
                  `user_email` = `{$email}`,
                  `user_about` = `{$about}`,
                  `user_location` = `{$location}`,
                  `gender` = `{$gender}`,
                  `username` = `{$username}`
                   {$_SESSION['uid']}";

   mysql_query($sql);
}
?>

I wanted to take the tutorial a step further by allowing users to change their username and gender haha.

Re: profile editing errors

Posted: Sat Jun 30, 2012 9:21 pm
by Temor
well, this sql statement needs a WHERE clause.
 $sql = "UPDATE fgusers3 SET
                 `user_email` = `{$email}`,
                 `user_about` = `{$about}`,
                 `user_location` = `{$location}`,
                 `gender` = `{$gender}`,
                 `username` = `{$username}`
                  WHERE
                 `user_id` =  {$_SESSION['uid']}";
this will only change the information for the logged in user.

Re: profile editing errors

Posted: Sun Jul 01, 2012 1:28 am
by Thunderbob
it didn't change anything.
Can I close down this topic and come back to it?

I think this is an issue with the session scripting that I am using.

Re: profile editing errors

Posted: Sun Jul 01, 2012 3:15 am
by Temor
What's wrong with the sessions?