2012-09-22 35 views
2

我有一個搜索引擎,它顯示來自數據庫的結果,並使用揭示模式,當用戶點擊「Click Me For More聯繫人信息「,但是不管目前是哪個鏈接被點擊任何結果,相同的聯繫人信息都被回顯,這是來自第一個結果的信息。PHP回聲 - 回聲結果在彈出div只回顯數據庫中的第一個結果

可能有人指出我朝着正確的方向展示瞭如何使其成爲當用戶單擊「Click Me查看更多聯繫人信息」時,彈出框中顯示正確的聯繫信息以獲得該結果?

謝謝你的任何幫助,非常感謝!

echo "<div id='myModal' class='reveal-modal'>"; 
echo "<h1>Modal Title</h1>"; 
echo "<p>Contact:" . $row['contact'] . "</p>"; 
echo "<a class='close-reveal-modal'>&#215;</a>"; 
echo "</div>"; 

echo "<a href='#' data-reveal-id='myModal'>Click Me For More Contact Info</a>"; 

編輯:搜索結果中顯示效果細膩,它只是當結果echo'ed到彈出DIV,這是我的代碼的其餘部分:

include('config.inc'); 



    // Check and set username 
$username = (isset($_SESSION['username']) ? $_SESSION['username'] : 'guest'); 

// Check and set category 
$category = (!empty($_GET['category']) ? $_GET['category'] : null); 

// Check and set search 
if(!empty($_GET['search'])){ 
$search = $_GET['search']; 
}else{ 
$search = null; 
} 

// Check that $_GET['price'] is ASC if not set to DESC 
// as static values its ok to directly put in the query 
if(isset($_GET['price']) && $_GET['price'] == 'ASC'){ 
$price = 'ASC'; 
}else{ 
$price = 'DESC'; 
} 

if ($search !== null){ 

$sql = "SELECT * FROM people WHERE MATCH (lname,fname) AGAINST (:search IN BOOLEAN MODE)"; 

$q = $conn->prepare($sql) or die("failed!"); 
// Bind the params to the placeholders 
$q->bindParam(':search', $search, PDO::PARAM_STR); 
$q->execute(); 
} 

if ($search !== null && $category !== null){ 

$sql = "SELECT * FROM people WHERE MATCH (lname,fname) AGAINST (:search IN BOOLEAN MODE) AND category = :category"; 

$q = $conn->prepare($sql) or die("failed!"); 
// Bind the params to the placeholders 
$q->bindParam(':search', $search, PDO::PARAM_STR); 
$q->bindParam(':category', $category, PDO::PARAM_STR); 
$q->execute(); 
} 

if ($category !== null && $search !== null && isset($price)){ 

$sql = "SELECT * 
     FROM  people 
     WHERE MATCH (lname,fname) AGAINST (:search IN BOOLEAN MODE) 
     AND  category = :category 
     ORDER BY price ".$price; 

$q = $conn->prepare($sql); 
// Bind the params to the placeholders 
$q->bindParam(':search', $search, PDO::PARAM_STR); 
$q->bindParam(':category', $category, PDO::PARAM_STR); 
$q->execute(); 
} 

if ($category == null && $search !== null && isset($price)){ 

$sql = "SELECT * 
     FROM  people 
     WHERE MATCH (lname,fname) AGAINST (:search IN BOOLEAN MODE) 

     ORDER BY price ".$price; 

$q = $conn->prepare($sql); 
// Bind the params to the placeholders 
$q->bindParam(':search', $search, PDO::PARAM_STR); 
$q->execute(); 
} 

if ($q){ 

//declaring counter 
    $count=0; 
    while($r = $q->fetch(PDO::FETCH_ASSOC)){ 
    $row = $r; 

    $fname = $row['fname']; 
    $lname = $row['lname']; 
    $firstname = $row['firstname']; 
    $surname = $row['surname']; 

//counter equals 
$count++; 

//insert an image every 5 rows 
    if($count==5){ 
    $count=0; 
    echo "<table width='50%' style='border-bottom:1px solid #000000;'"; 
echo "<tr>"; 
echo "<td>"; 
echo "<div id='page-wrap'>"; 
echo "<div class='discounted-item freeshipping'>"; 

echo "<a href='images/box1.png' rel='lightbox'><img src='images/box1.png' width='20%' height='98%' /></a>"; 


echo "<div class='reasonbar'><div class='prod-title' style='width: 70%;'>AN AD CAN GO HERE</div><div class='reason' style='width: 29%;'><b>Ad Company</b></div></div>"; 

echo "<div class='reasonbar'><div class='prod-title1' style='width: 70%;'>Description about the advert from a company</div><div class='reason1' style='width: 29%;'>Category: Advert</div></div>"; 

echo "<div class='reasonbar'><div class='prod-title2' style='width: 70%;'>HELLO, User</div><div class='reason2' style='width: 29%;'></div></div>"; 


echo "</td>"; 
echo "</tr>"; 
echo "</td>"; 
echo "</tr>"; 
echo "</table>"; 
} 




echo "<table width='50%' style='border-bottom:1px solid #000000;'"; 
echo "<tr>"; 
echo "<td>"; 
echo "<div id='page-wrap'>"; 
echo "<div class='discounted-item freeshipping'>"; 

echo "<a href='./img/users/" . $row['category'] . "/" . $row['username'] . "/" . $row['filename'] . "' rel='lightbox'><img src=\"./img/users/" . $row['category'] . "/" . $row['username'] . "/" . $row['filename'] . "\" alt=\"\" width='15%' height='80%' /></a>"; 


echo "<div class='reasonbar'><div class='prod-title' style='width: 70%;'>" .$row['fname'] . "</div><div class='reason' style='width: 29%;'><b>". $row['firstname'] . " " . $row['surname'] ."</b></div></div>"; 

echo "<div class='reasonbar'><div class='prod-title1' style='width: 70%;'>" . $row['lname'] . "</div><div class='reason1' style='width: 29%;'>Category:<br /> ". $row['category'] . "</div></div>"; 

echo "<div class='reasonbar'><div class='prod-title2' style='width: 70%;'>Contact:" . $row['contact'] . "</div><div class='reason2' style='width: 29%;'>Price: &pound;". $row['price'] . "</div></div>"; 



echo "</td>"; 
echo "</tr>"; 
echo "</td>"; 
echo "</tr>"; 
echo "</table>"; 

echo "<div id='myModal' class='reveal-modal'>"; 
echo "<h1>Modal Title</h1>"; 
echo "<p>Contact:" . $row['contact'] . "</p>"; 
echo "<a class='close-reveal-modal'>&#215;</a>"; 
echo "</div>"; 

echo "<a href='#' data-reveal-id='myModal'>Click Me For A Modal</a>"; 


} 


} 

else 
echo "No results found for \"<b>$search</b>\""; 
+0

請發送您的數據庫查詢。 – Mahn

+0

你如何填充其他結果? – mrmryb

+0

從你的代碼看起來你在while循環中創建了多個彈出框,當點擊一個鏈接時你如何調用它們。你有辦法識別單獨的彈出框嗎?你確定你不是總是打開第一個彈出框而不是對應於鏈接的彈出框。 – mrmryb

回答

2

從你給的鏈接:

Just give your modal div the class "reveal-modal"and a unique ID (we'll use the ID to launch this modal)By putting the "data-reveal-id" attribute on the anchor, when clicked the plugin matches the value of the "data-reveal-id" attribute (in this case "myModal") with an HTML element with that ID

現在你似乎在給每個模態使用相同的ID,所以所有的模態鏈接都將以第一個模態爲目標。

echo "<div id='myModal".$count."' class='reveal-modal'>"; 
echo "<h1>Modal Title</h1>"; 
echo "<p>Contact:" . $row['contact'] . "</p>"; 
echo "<a class='close-reveal-modal'>&#215;</a>"; 
echo "</div>"; 

echo "<a href='#' data-reveal-id='myModal".$count."'>Click Me For A Modal</a>"; 
+1

謝謝你的幫助,非常感謝,我現在將測試這個! - 這是現在工作!再次,謝謝你! – neeko

+1

感謝您接受我的回答,很高興我能提供幫助。祝好運與其餘。 – mrmryb

0

當您檢索數據從數據庫中,確保您使用while($row=$req->fetch())來檢索所有數據。然後您必須選擇與您的需求相對應的正確行。請注意,$row是包含所有行的數組。因此:$row[0]['contact']將包含從第一行,$row[1]['contact']從第二等的接觸......

+0

提供的揭示div腳本位混亂,你不需要做一個while循環,如果你使用fetchAll()哪是你用$ row [0] ['contact']'暗示的東西? – mrmryb