2012-01-16 26 views
2

好吧,我是一名新手,非常友善,如果我的問題中有任何錯誤,請忽略我的想法。我只是創建一個小型網站,如個人資料信息。填寫個人資料頁面的最佳方法?

在用戶登錄時在他的電子郵件到網站,我們使用PHP腳本和MySQL的檢索數據,大多采用 printfecho

把該數據在頁面

奧凱看到這麼有2種方式possibilty到例如我的數據庫的表中的一個做

看起來像這樣

name  birthday aboutme gender dreams music movies blabla// 
    someperson xx  xx  xx  xx  xx xx 

第一種方法 demo.php

<html> 
<body> 
name: <?some php script to get user name?> 
<20 lines of html tags and data> 
birthday: <?some php script to get user name?> 
<20 lines of html tags and data> 
about user <?some php script to get user about?> 
<some more html data> 
<?some more php scripting?> 

在我們總是連接到數據庫和獲取數據和第一方法再經過20行的HTML代碼,然後再次我們連接到同一個表和數據庫並獲得下一個列值和斷開它然後再次連接到服務器等等。在這個過程中,我們正在連接和從服務器斷開連接

所以在第一種方法,我們總是連接和從服務器斷開連接,我只是認爲它可能會導致服務器上的嚴重開銷,因爲我們正在連接和每10代碼行。我的想法是真的還是有什麼不對?

第二種方法 demo.php

<?php 
retrieve all the data you need at a time here and then use 
echo "<html>" 
echo "<body>" 
echo "name: <?just php variable value that was retrieved?> 
echo "<20 lines of html tags and data>" 
echo "birthday: <?just php variable value that was retrieved?> 
?> 

在我們使用的是由服務器上運行PHP腳本只是在開始獲取數據,然後第二個方法只是附和它們與HTML標籤和數據被認爲它是如此unneccasary,因爲我們正在使服務器執行html標籤,在正常的瀏覽器顯然會做

我找到了兩種方式導致服務器上的嚴重開銷問題。任何人都可以解釋什麼是最好的辦法呢?有沒有其他方式的專業人士選擇,我不知道他們是如何通過它。

那麼有沒有辦法從數據庫中一次檢索數據,然後在html標籤之間回顯它?

單純的喜歡

<?get all the data from database here>? 
    <div> echo 'some php variable' 
    <span> echo 'some php variable' 

是否有這樣的方法嗎?請讓我知道該怎麼做it.Thanks

任何幫助,最好的辦法是極大的讚賞

回答

1

你是正確的認爲你不必使用PHP回聲聲明所有的HTML。 PHP在向下移動代碼時生成HTML。所以你可以聲明HTML之間的PHP調用。

例如:

<html> 
<body> 
<?php 
    $results = mysql_query(SELECT name,gender FROM table WHERE id='34'; 
    // Additional code to assign $results array to variables 
?> 
<div><?=$name;?></div> 
<div><?=$age;?></div> 
</body> 
</html> 

要注意的最重要的事情是,你可以通過你的文件多次調用PHP,它會繼續工作過過去的PHP調用。所有變量和函數都存儲在整個頁面中。

希望這會有所幫助。

1

如果所有的數據在同一個表,那麼你只需要一個單一的查詢。而且你應該切換進出php,而不是在php內部編寫html。它可能是這個樣子:

<?php 

$db = new PDO($dsn, $user, $password); 
$stmt = $db->prepare('SELECT * FROM user_profile WHERE user_id = ?'); 
$stmt->execute(array($user_id)); 
$profile = $stmt->fetch(PDO::FETCH_ASSOC); 
$stmt->close(); 

?> 
<html> 
<head> 
    <title> <?php echo $profile['username']; ?> Profile</title> 
</head> 
<body> 
    <div> 
    <div> 
    <div> 
     <?php foreach($profile as $attribute => $value): ?> 
     <div> 
      <span class="label"><?php echo $attribute ?></span> 
      <span class="profile_value"><?php echo $value; ?> </span> 
     </div> 
     <?php endforeach; ?> 
    </div> 
    </div> 
    </div> 
</body> 
</html> 
1

是的,我會得到所有的數據前面的,如果這是可能的(如果它不依賴於任何在腳本執行其他)。

如果我遵循你說的正確的話,那末你的僞代碼就會很接近。你似乎想是這樣的:

<? 
// here is where you get all the data from MySQL using PHP 
?> 
<!-- HTML now --> 
<div> 
<? 
//PHP starts again 
echo $something; 
//PHP ends 
?> 
<!-- HTML again --> 
</div> 

可以進出PHP的跳很多次,只要你願意,只要是最合適的。