2013-11-23 38 views
0

我對PHP很新,需要一些幫助!使用HTML和PHP訪問輸入值

我正在使用一個文本框來顯示錶中的一個值,然後我希望能夠對它進行編輯並用於更新語句。

這個文本框目前根據$ studentId是什麼進行填充,這工作正常。

$conn = connection(); 

    $sql = "SELECT * FROM students WHERE studentId=$studentId"; 

    foreach ($conn->query($sql) as $row) { 
    ?> 
     <form> 
     Student Name: <input name="name" type="text" method="post" value="<?php echo(htmlspecialchars($row['name'])); ?>" /> 
     <br> 
     <input name="submitStudentUpdate" type="submit" value="Update" /> 
    </form> 
    <?php 
    } 

connection();正從另一個頁面提供。

這是此行中我需要的

Student Name: <input name="name" type="text" method="post" value="<?php echo(htmlspecialchars($row['name'])); ?>" /> 

的價值,我想從這個表格檢索值,並張貼到另一個網頁在更新語句中使用,但我怎麼得到它?

我想,這就是:

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

    echo $_POST['name']; 

} 

所以目前,文本框獲取與

[鮑勃]填充

而且我希望能夠改變它,例如

[鮑比]

點擊提交按鈕並檢索此值。

我正在使用PDO。

希望這是有道理的,任何幫助非常感謝。謝謝。

+0

爲什麼輸入有'method ='post''? FORM標籤具有該屬性,而不是輸入。 – JAL

+0

我意識到這是我的錯誤。謝謝@JAL :-) – Chris

回答

1

你沒有在你的形式定義的方法,因此它默認爲獲得

所以,你應該能夠通過$_GET['name']

讓你的價值,我希望我正確理解你。

<?PHP 
    if(isset($_GET['name'])) { 

     $sql = "UPDATE students SET name = '".mysql_real_escape_string($_GET['name'])."' WHERE studentID = '".(int)$_GET['studentId']."' LIMIT 1"; 

     // or with pdo prepared statements (more secure) 
     $stmt = $conn->prepare("UPDATE students SET name = ? WHERE studentID = ? LIMIT 1"); 
     $stmt->execute(array($_GET['name'], $_GET['studentId'])); 

    }   
$conn = connection(); 

     $sql = "SELECT * FROM students WHERE studentId=$studentId"; 

     foreach ($conn->query($sql) as $row) { 
     ?> 
      <form> 
      Student Name: <input name="name" type="text" method="post" value="<?php echo(htmlspecialchars($row['name'])); ?>" /> 
      <br> 
      <input type="hidden" name="id" value="<?php echo $studentId; ?>"> 
      <input name="submitStudentUpdate" type="submit" value="Update" /> 
     </form> 
     <?php 
     } 
    ?> 
+1

我知道這只是一個簡單的例子,但由於這是一個基本問題,我猜程序員並不擅長PHP,所以我認爲如果我們鼓勵轉義,這會更好。 ''UPDATE students SET name ='「.mysql_real_escape_string($ _ GET ['name'])。''WHERE studentID ='」。(int)$ _GET ['studentId']。「'LIMIT 1」;' –

+1

好點。加入回答 –

+0

哦,親愛的,你是對的!業餘的錯誤!謝謝。 – Chris

0
$conn = connection(); 

$sql = "SELECT * FROM students WHERE studentId=$studentId"; 

if(isset($_GET['studentId'])) 
{ 
    "UPDATE FROM students SET name = '".$_POST['name']."' WHERE studentId=".$_POST['studentId']; 
} 

foreach ($conn->query($sql) as $row) { 
?> 
    <form action="?studentId=<?php echo $row['studentId']; ?>" method="post"> 
    Student Name: <input name="name" type="text" method="post" value="<?php echo(htmlspecialchars($row['name'])); ?>" /> 
    <br> 
    <input name="submitStudentUpdate" type="submit" value="Update" /> 
</form> 
<?php 
}