2013-01-03 32 views
0

我有這樣的代碼從我的網站http://www3.londonmet.ac.uk:8008/~iia0014/userdetails.php輸入/回聲線標籤PHP表單字段

我想知道如何正確格式化的形式很好地給出名字在同一行中的字段我呼應數據庫行所以很清楚究竟是什麼。 例如,我想:

<input value="<?php echo "ID: " . $row["id"]; ?>"><br> 

我應該添加或刪除作出上述線路正常工作顯示:ID:一些ID在這裏?

但這將ID字與行ID本身連接起來,在表單內插入「ID:」,我希望它在外面很好。我可以在表格中添加一個表格,並給出一個名字......但這是唯一的方法嗎?我可以用簡單的方法做到嗎,所有這一切都可以讓我的代碼更清晰?另外,我是否可以以更簡單的方式合併刪除和更新按鈕,而不是單獨編寫函數,也許是同一行上的新函數?我正在尋找一個行數最少的更乾淨的代碼。

<?php session_start(); ?> 
<?php include "includes/connection.php"; ?> 

<?php 

$query = mysql_query("SELECT id, username, password, email, name, aim, admin, time,   phone, address 
FROM users 
WHERE username = '".$_SESSION['myusername']."' "); 


while($row = mysql_fetch_array($query)) 
{ 

?> 

<input value="<?php echo $row["id"]; ?>"><br> 
<input value="<?php echo $row["username"]; ?> "><br> 
<input value="<?php echo $row['password']; ?> "><br> 
<input value="<?php echo $row['email']; ?> "><br> 
<input value="<?php echo $row['name']; ?> "><br> 
<input value="<?php echo $row['aim']; ?> "><br> 
<input value="<?php echo $row['admin']; ?> "><br> 
<input value="<?php echo $row['time']; ?> "><br> 
<input value="<?php echo $row['phone']; ?> "><br> 
<input value="<?php echo $row['address']; ?> "><br> 

<?php 
} 
?> 
+1

如果你想看到的是被輸出什麼樣的結果從你的查詢中,做一個var_dump($ query);在原來的$查詢之後的行上。好的做法是將您的會話值(以及cookie')設置爲一個變量,因此$ myusername = $ _SESSION ['myusername'];這樣,你可以做一個更乾淨的查詢,而不必...用戶名='「。$ _ SESSION ['myusername']。」'而是,用戶名='$ myusername' –

+0

我有這個結果鏈接上面的網站。 – learnerNo1

+0

對不起,誤解了你。你的頭銜對我來說毫無意義。我想我現在明白了。編輯:你的頁面也沒有加載。 –

回答

0

你可以做幾件事情:

爲了您的初始查詢,

$myusername = $_SESSION['myusername']; 
$query = mysql_query("SELECT id, username, password, email, name, aim, admin, time,   phone, address FROM users WHERE username = '$myusername' "); 

這並不意味着對生產環境,但因爲你是學習它總是好的分開的事情,所以你可以更好地瞭解發生了什麼事情。

如果用戶編輯他們的信息(更新數據庫),您可以在其中創建一個帶有單個按鈕的表單,method = post和action = database.php?action = edit。而且裏面database.php中,

if(isset($_GET['action']) == 'edit') { 

// set all posted values to variables 
// run the update query... UPDATE ... WHERE username = '$myusername' 

} 

對於刪除,使另一種形式與另一種單一的按鈕,類似:行動= database.php中行動=刪除。並且在database.php中,

if(isset($_GET['action']) == 'delete') { 

// run the delete query... DELETE FROM $tbl WHERE username = '$myusername' 

} 
+0

我有這個刪除功能和更新,我想知道我是否可以在同一行,如更改表單輸入屬性?我更關心如何在同一行添加表單文本字段的標籤,我回顯行。任何想法?看到那裏,我試過了。我同意你的看法,我的標題非常混亂。 – learnerNo1

+0

你可以有一個複選框「刪除我的配置文件」,檢查它是否作爲檢查服務器端傳遞,如果它被選中刪除它。 –

0

您不必將所有內容放在同一行,少的行並不總是更好。
關於輸入字段,你的代碼應該是這樣的:

<label>ID</label> 
<input type="text" name="id" value="<?php echo $row['id']; ?>"> 

順便提一句,在PHP中,單引號是字符串,雙引號的字符串和變量(也許不是正確的技術定義) 。所以當你連接時,你應該這樣做: 'string '.$var;而不是"string ".$var
而當你迴應時,你應該使用逗號'連接'字符串和變量,所以你正在解析參數到echo函數而不是連接。這是更快的,因爲它直接輸出數據。不像連接,它首先連接字符串然後輸出它。所以它會是echo 'string ', $var
此外,當您使用雙引號時,使用{$var}作爲變量的速度更快。例如:

mysql_query("SELECT `name` FROM `table` WHERE `id`='{$_SESSION['id']}'"); 

注意,在MySQL的查詢,字段和表單引號(')之間重音符(`),和值之間的寫入。

現在回到您的代碼。如果所有的輸入字段將是同類型的,可以說type="text",那麼你可以這樣做:

while ($row = mysql_fetch_array($query)) { 
    foreach ($row as $key => $value) { 
     echo 
     "<div> 
      <label>{ucfirst($key)}</label> 
      <input type="text" name="{$key}" value="{$value}"> 
     </div>"; 
    } 
} 

ucfirst()

返回與海峽大寫的第一個字符的字符串,如果該字符是字母。

而對於更新和刪除按鈕就可以把兩個按鈕不同 name屬性:

<input type="submit" name="update" value="Update"> 
<input type="submit" name="delete" value="Delete"> 

,然後檢查isset()

if (isset($_POST['update'])) { 
    //update data 
} else if (isset($_POST['delete'])) { 
    //delete data 
} 

永遠記住消毒用戶輸入:

function sanitize($str) { 
    return mysql_real_escape_string(htmlspecialchars(trim(stripslashes($str)))); 
} 

而不是由一個消毒一個你可以:

$data = array_map('sanitize', $_POST);