2017-09-02 104 views
0

我使用php創建了一個搜索,這樣當用戶登錄後,他們可以搜索其他用戶並將其添加爲朋友。當用戶單擊添加爲朋友按鈕時,我想將搜索結果中登錄的用戶的用戶名和用戶的用戶名發佈到名爲friend_request的數據庫表中。在php中發佈搜索結果

這裏是我的代碼

<?php 
 
if(isset($_POST['search'])) { 
 
    $search = $_POST['search']; 
 
    $search = preg_replace("#[^0-9a-z]i#","", $search); 
 
    
 
$search = "%$search%"; 
 

 
if ($stmt = $db->prepare("SELECT username, name, location, gender, date_of_birth, url FROM Users WHERE name LIKE ?")){ 
 
    $stmt->bind_param("s", $search); 
 
    $stmt->execute(); 
 
    $stmt->bind_result($username, $name, $location, $gender, $date_of_birth, $picture); 
 
    $stmt->store_result(); 
 
    $count = $stmt->num_rows; 
 

 
    if ($count == 0) { 
 
     $output = "There was no search results!"; 
 
    } else { 
 
    
 

 
     while ($stmt->fetch()) { 
 

 
       
 
      $output .='<form action="#" method="post"><div class="row"><div class="col-sm-3">'.$name.'<br>'.$location.'<br>'.$gender.'<br>'.$date_of_birth.'</div>'; 
 

 
      $output2 = '<div class="col-sm-3"><img src="upload/'.$picture.'"width="180" height="144" /></div>'; 
 

 
      $output3 = '<input type="submit" name="addfriend" value="Submit" /></div></form>'; 
 
      
 

 
     } 
 
    } 
 
} 
 
} 
 

 

 
    if(isset($_POST['addfriend'])) { 
 
    
 

 
    $user_from = $_SESSION['username']; 
 
    $user_to = $_POST['username']; 
 

 

 
if ($stmt = $db->prepare("INSERT INTO `friends_request`(`user_to`, `user_from`) VALUES (?,?)")){ 
 
    $stmt->bind_param("ss", $user_to, $user_from); 
 
    $stmt->execute(); 
 

 

 
} 
 
} 
 

 
?>

當我運行我的代碼,我得到以下信息

注意:未定義指數:用戶名/應用程序/ MAMP/htdocs目錄第51行的/student_connect/header.php

+0

你是否開始在任何地方開會?做'session_start();'開始會話。 –

+0

我在我的代碼的開頭有它,但我沒有複製 – Rebekah

+0

[PHP:「注意:未定義的變量」,「注意:未定義的索引」和「注意:未定義的偏移量」](https:/ /stackoverflow.com/questions/4261133/php-notice-undefined-variable-notice-undefined-index-and-notice-undef) –

回答

0

很簡單。 它說$ _SESSION ['username'];尚未設置,因此請查找您希望設置的代碼行。我想這可能是一些其他的文件(也許到一個登錄表單填寫後執行..?)

+0

它實際上是這條線,它不喜歡$ user_to = $ _POST ['username']; – Rebekah

+0

對不起!不過,根據你輸入的代碼,$ _POST ['username']可能在下面。這意味着用戶提交到頁面的表單可能沒有「用戶名」字段,因此您必須在te表單內編寫它。如果我的代碼正確(不確定),你需要在$ output3的開頭:'',otherwhise submitting add friends will pass那$的用戶名到頁面 –

+0

我不想輸入用戶名 – Rebekah

0

你需要開始代碼調試.....

嘗試增加後「這一行$ user_from = $ _SESSION ['username'];「

if(!$user_from) 
{ 
    echo "<pre>"; 
    var_dump($_SESSION); 
    echo "<pre>"; 
} 

運行你的代碼,結果貼在這裏 - 然後我們就可以開始確定哪些信息是在會議期間舉行。

這是你不得不做的事情,當代碼沒有做到預期的時候,檢查你的變量,看看有什麼缺少之前,前往堆棧。我們在這裏提供幫助,但需要所有可能的信息。

+0

剛剛看到您的評論re $ _POST ['username'] .. change var_dump($ _ SESSION);在我對var_dump($ _ POST)的回答中; – Nick

+0

這是它顯示數組(1){[「addfriend」] =>字符串(6)「提交」} – Rebekah

+0

然後你沒有在你的表單中定義你的POST變量的用戶名。您需要查看定義將信息發送到此提交腳本的表單的HTML。 – Nick