2016-01-01 5 views
0

Моя проблема заключается в том, что я хочу показать детали профиля пользователя, который у меня есть в моей базе данных. По какой-то причине он продолжает давать мне ошибки «Неопределенная переменная: строка».

This is an image of the problem

Кроме того, я могу показать Имя пользователя и UserID, используя этот код. (HTML CODE)
Так что я не совсем уверен, чего нет, или если я сделал что-то не так.
Надеюсь, что вы могли мне помочь.
СПАСИБО заранее :)


PHP код - DB СОЕДИНЕНИЕ & SQL QUERY

<?php 
$id = session_id(); 
if ($id == "") { 
    session_start(); 
} 
if (!isset($_SESSION['username'])) { 
    header("Location: login.php"); 
} //redirects to the login page if the user is not logged in 

if($_POST){  
    try { 
     $host = '127.0.0.1'; 
     $dbname = 'webdev_2014376'; 
     $user = 'root'; 
     $pass = ''; 
     # MySQL with PDO_MYSQL 
     $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); 
    } catch(PDOException $e) {echo 'Error';} 

    /////////////////////////////////////////////////////////////////////////////// 

    $sqlQuery = "SELECT * FROM users WHERE UserID = :UserID LIMIT 1";    
    $statement = $DBH->prepare($sqlQuery);  
    $status = $statement->execute(); 

    if (!$status) { 
     die("Could not retrieve user"); 
    }$row = $sqlQuery->fetch(PDO::FETCH_ASSOC); 

    if(isset($row)){ 
     $_SESSION['id'] = $row['UserID']; 
     $_SESSION['username'] = $row['Username']; 
     $_SESSION['firstname'] = $row['FirstName']; 
     $_SESSION['lastname'] = $row['LastName'];   
     $_SESSION['email'] = $row['Email'];   
     $_SESSION['birthday'] = $row['Birthday'];  
     $_SESSION['phonenumber'] = $row['PhoneNumber']; 
    }  
} 

?> 


HTML КОД

<body> 
     <div class="container container_12"> 
      <div class="header grid_12"> 
       <div class="headerTitle grid_6 alpha"> 
        <h1>Facebook Again!</h1> 
       </div> 

       <?php 
       if (isset($_SESSION['username'])) { 
        echo '<div class="headerNav grid_6 omega">'; 
        echo '<ul>'; 
        echo '<li class="grid_1 alpha"><a href="index.php">Home</a></li>'; 
        echo '<li class="grid_2 push_1"><a href="profile.php?UserID='.($_SESSION['id']).'">'. ($_SESSION['username']) . '</a></li>'; 
        //echo '<li class="grid_2 push_1"><a href="profile.php?UserID=11">' . ($_SESSION['Username']) . '</a></li>'; 
        echo '<li class="grid_2 omega push_1"><a href="logout.php"><span class="glyphicon glyphicon-log-in"></span> Logout</a></li>'; 
        echo '</ul>'; 
        echo '</div>'; 
       } 
       else { 
        echo '<div class="headerNav grid_6 omega">'; 
        echo '<ul>'; 
        echo '<li class="grid_2 alpha"><a href="login.php">Login</a></li>'; 
        echo '<li class="grid_2 omega"><a href="register.php">Register</a></li>'; 
        echo '</ul>'; 
        echo '</div>'; 
       } 
       ?> 

      </div> 
      <div class="profile grid_12"> 
       <div class="profPic grid_3 suffix_1 alpha"> 
        <img src="images/profile/RTZ.jpg" style="width: 300px; height: 300px;">    
       </div> 
       <div class="profText prefix_1 grid_7 omega"> 
        <?php 

         echo "<h1>Profile of " . $_SESSION['username'] . "</h1>"; 

          echo '<tr>'; 
          echo '<td class="vedHeaders">First Name: </td>' . '<td class="vedOutput">' . $_SESSION['firstname'] . '</td><br/>'; 
          echo '</tr>'; 
          echo '<tr>'; 
          echo '<td class="vedHeaders">Last Name: </td>' . '<td class="vedOutput">' . $row['LastName'] . '</td><br/>'; 
          echo '</tr>'; 
          echo '<tr>'; 
          echo '<td class="vedHeaders">Email: </td>' . '<td class="vedOutput">' . $row['Email'] . '</td><br/>'; 
          echo '</tr>'; 
          echo '<tr>'; 
          echo '<td class="vedHeaders">Birthday: </td>' . '<td class="vedOutput">' . $row['Birthday'] . '</td><br/>'; 
          echo '</tr>'; 
          echo '<tr>'; 
          echo '<td class="vedHeaders">Phone Number: </td>' . '<td class="vedOutput">' . $row['PhoneNumber'] . '</td><br/>'; 
          echo '</tr>'; 
        ?> 
       </div> 
      </div> 

    </body> 
+0

вопрос теперь, была сессия начался на всех страницах, используя сеансы? ваша вторая часть кода не означает, что это так. –

+0

привет, весь код вместе на одной странице. и на всех разных страницах у меня начались сеансы :) –

+0

http://php.net/manual/en/pdo.error-handling.php --- http://php.net/manual/en/function .error-reporting.php - хорошие инструменты для проверки ошибок. Также просмотрите свой источник HTML и используйте 'var_dump()'. –

ответ

2

В коде HTML вы используете $row['LastName'], когда он должен быть $_SESSION['lastname'] (и то же самое для других переменных). $row устанавливается только при обработке данных POST, и вы выполняете SQL-запрос, он не устанавливается, когда страница открывается без отправки формы.

+0

Кстати, спасибо за редактирование вопроса, я новичок здесь. но я уже пробовал то, что вы предложили, и это не работает для меня. :/ –

+0

Переменная сеанса называется 'lastname', а не' LastName'. Вы должны использовать одни и те же переменные сеанса, когда вы показываете, как при его назначении. – Barmar

+0

Вам также не нужен вызов '$ statement-> bindParam()' перед '$ statement-> execute()', поэтому для ': UserID' нет значения. Это ошибка копирования или ошибка в реальном скрипте? – Barmar

0

Используйте $ _SESSION вместо $ row и будьте осторожны с индексами, как и в массиве $ _SESSION, у вас есть строчные буквы: $ _SESSION ['lastname'] $ _SESSION ['email'] и т. Д. - ключи массива - это случай чувствительны.

-2

$_SESSION вместо $row.

+2

Хотел бы я сказать это 10 минут назад. Да, да. – Barmar

+0

* "использовать $ _SESSION вместо $ row" * - где именно? Предоставление объяснений принесет пользу всем, включая «что» (-ы). –

0

Я думаю, проблема в том, что вы ищете isset($row). Причина, по которой строка всегда будет установлена ​​после сообщения, но если есть база данных, вы получите строку ELSE, вы получите false.

, а затем вы пытаетесь получить доступ к «ложному», как массив.

0

Я думаю, что проблема здесь вам нужно, чтобы начать сеанс, прежде чем проверить, что идентификатор сеанса устанавливается, попробуйте начать сеанс затем проверки на переменные сессии после того, как:

session_start(); 

if (!isset($_SESSION['username'])) { 
    header("Location: login.php"); 
} 
+0

Также я не вижу, где вы связываете параметр UserID в своем запросе. http://php.net/manual/en/pdostatement.bindparam.php – Daniel

Смежные вопросы