2012-07-11 83 views
2

我是PHP新手,在網上查看了最後一個小時後,我無法找到我的代碼出了什麼問題,所以我來找你。我試圖有一個地方來更新從我收集的數據。我得到這個錯誤。未定義的索引:第12行中的/ Users/mm1/Desktop/php/backend form/edit_ac.php中的id。以下是我目前爲止的內容。是否有人可以幫助..更新mysql的ID

<?php require("database.php"); ?> 
<?php require("functions.php"); ?> 

<?php 
ini_set('display_errors', 'On'); 
error_reporting(E_ALL | E_STRICT); 

// Connect to server and select database. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 


$id= mysql_prep($_GET['id']); 
$last= mysql_prep($_POST['last']); 
$first= mysql_prep($_POST['first']); 


// update data in mysql database 
$sql="UPDATE $tbl_name SET first='{$first}', last='{$last}' WHERE id='{$id}'"; 
$result=mysql_query($sql); 

// if successfully updated. 
if($result){ 
echo "Successful"; 
echo "<BR>"; 
echo "<a href='edit_info.php'>View result</a>"; 
} 
else { 
echo "ERROR"; 
} 
?> 

這裏是形式(我知道這一切是不完整的,我只是試圖得到它的第一個工作。)

<?php require("database.php"); ?> 


<?php // Connect to server and select database. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

// get value of id that sent from address bar 
$id=$_GET['id']; 

// Retrieve data from database 
$sql="SELECT * FROM $tbl_name WHERE id='$id'"; 
$result=mysql_query($sql); 
$rows=mysql_fetch_array($result); 
?> 


<form name="form1" method="post" action="edit_ac.php"> 
<table width="700" border="0" cellpadding="5"> 
<tr> 
<td colspan="2" class="center"><h3>PARTICIPANT IDENTIFICATION</h3></td> 
</tr> 
    <tr> 
    <td width="218">First</td> 
    <td width="456"><input name="first" type="text" maxlength="50" id="first" value="<? echo $rows['first']; ?>" /></td> 
    </tr> 
    <tr> 
    <td width="218">Last</td> 
    <td width="456"><input name="last" type="text" maxlength="50" id="last" value="<? echo $rows['last']; ?>" /></td> 
    </tr> 
    <tr> 
    <td width="218">Middles</td> 
    <td width="456"><input name="middle" type="text" maxlength="50" id="middle" value="<? echo $rows['middle']; ?>"/></td> 
    </tr> 
    <tr> 
    <td>Address</td> 
    <td><input name="address" type="text" maxlength="50" id="address" value="<? echo $rows['address']; ?>"/></td> 
    </tr> 
    <tr> 
    <td>City</td> 
    <td><input name="city" type="text" maxlength="50" id="city" value="<? echo $rows['city']; ?>"/></td> 
    </tr> 
    <tr> 
    <td>State</td> 
    <td><input name="state" type="text" maxlength="15" id="state" value="<? echo $rows['state']; ?>"/></td> 
    </tr> 
    <tr> 
    <td>Zip</td> 
    <td><input name="zip" type="text" maxlength="15" id="zip" value="<? echo $rows['zip']; ?>" /></td> 
    </tr> 
    <tr> 
    <td>Home Phone</td> 
    <td><input name="home_phone" type="text" id="home_phone" value="<? echo $rows['home_phone']; ?>" /></td> 
    </tr> 
    <tr> 
    <td>Daytime Phone</td> 
    <td><input name="daytime_phone" type="text" id="daytime_phone" value="<? echo $rows['daytime_phone']; ?>" /></td> 
    </tr> 
    <tr> 
    <td>Email Address</td> 
    <td><input name="email_address" type="text" id="email_address" value="<? echo $rows['email_address']; ?>" /></td> 
    </tr> 
    <tr> 
    <td>Birthday</td> 
    <td><input name="month" type="text" id="month" size="3" maxlength="2" value=""/>/<input name="day" type="text" id="day" size="3" maxlength="2" value=""/>/<input name="year" type="text" id="year" size="5" maxlength="4" value=""/></td> 
    </tr> 
    <tr> 
    <td>Social Security Number</td> 
    <td><input name="ss_1" type="text" id="ss_1" size="5" maxlength="3" value=""/> - <input name="ss_2" type="text" id="ss_2" size="5" maxlength="2" value=""/> - <input name="ss_3" type="text" id="ss_3" size="5" maxlength="4" value="" /></td> 
    </tr> 
    <tr> 
    <td colspan="2" class="center"><h3>PHOTO IDENTIFICATION </h3></td> 
    </tr> 
    <tr> 
    <td>Type of ID</td> 
    <td> 
     <input type="text" name="type_of_id" id="type_of_id" value=""/></td> 
    </tr> 
    <tr> 
    <td>ID Number</td> 
    <td> 
     <input type="text" name="id_number" id="id_number" value="" /></td> 
    </tr> 
    <tr> 
    <td>Issuing Jurisdiction</td> 
    <td><input type="text" name="issuing_state" id="issuing_state" value=""/></td> 
    </tr> 
    <tr> 
    <td>Expiration Date</td> 
    <td><input type="text" name="expiration_date" id="expiration_date" value=""/></td> 
    </tr> 
    <tr> 
    <td>Issue Date</td> 
    <td><input type="text" name="issue_date" id="issue_date" value="" /></td> 
    </tr> 
    <tr> 
    <td colspan="2" class="center"><h3>ESTABLISHING YOUR ACCOUNT</h3></td> 
    </tr> 
    <tr> 
    <td colspan="2" class="center">Designate Account Type</td> 
    </tr> 
    <tr> 
    <td> 
    Acount Type 
    </td> 
    <td> 
     <label> 
     <input type="radio" name="traditional" value="1" id="traditional" /> 
     Traditional</label> 
     <br /> 
     <label> 
     <input type="radio" name="roth" value="1" id="roth" /> 
     Roth</label> 
     <br /> 
     <label> 
     <input type="radio" name="sep" value="1" id="sep" /> 
     SEP</label> 
     <br /> 
     <label> 
     <input type="radio" name="simple" value="1" id="simple" /> 
     SIMPLE</label> 
     <br /></td> 
    </tr> 
    <tr> 
    <td colspan="2" class="center">Fund Your Account</td> 
    </tr> 
    <tr> 
    <td colspan="2"><input name="rollover" type="radio" value="1" id="rollover" />I will rollover cash from an existing IRA or qualified retirement plan 
    </td> 
    </tr> 
    <tr> 
    <td>Prior Custodian Plan Name</td> 
    <td><input name="prior_plan_name" type="text" maxlength="50" id="prior_plan_name" value=""/></td> 
    </tr> 
    <tr> 
    <td>Expected Rollover Amount</td> 
    <td><input name="rollover_amount" type="text" maxlength="50" id="rollover_amount" value=""/></td> 
    </tr> 
    <tr> 
    <td colspan="2"><input name="transfer" type="radio" value="1" id="transfer" /> I will transfer assets from another IRA and have attached a TRANSFER AUTHORIZATION form </td> 
    </tr> 
    <tr> 
    <td colspan="2"><input name="contribution" type="radio" value="1" id="contribution"/> I have attached a contribution check as follows</td> 
    </tr> 
    <tr> 
    <td>IRA Cash Contribution for the Year</td> 
    <td><input name="cash_contributions_1" type="text" id="cash_contributions_1" value=""/></td> 
    </tr> 
    <tr> 
    <td>in the amount of</td> 
    <td><input name="amount_1" type="text" id="amount_1" value=""/></td> 
    </tr> 
    <tr> 
    <td>IRA Cash Contribution for the Year</td> 
    <td><input name="cash_contributions_2" type="text" id="cash_contributions_2" value="" /></td> 
    </tr> 
    <tr> 
    <td>in the amount of</td> 
    <td><input name="amount_2" type="text" id="amount_2" value="" /></td> 
    </tr> 
    <tr> 
    <td>Employer OR Employee (circle one) SEP/SIMPLE Contribution for the Year</td> 
    <td><input name="employer_contributions" type="text" id="employer_contributions" value="" /></td> 
    </tr> 
    <tr> 
    <td>in the amount of</td> 
    <td><input name="amount_3" type="text" id="amount_3" value="" /></td> 
    </tr> 
    <tr> 
    <td></td> 
    <td style="text-align:right"><input type="submit" name="Submit" value="Submit"></td> 
    </tr> 
</table> 
</form> 

</table> 
<?php 
// close connection 
mysql_close(); 
?> 
+1

你確定你通過$ _GET而不是$ _POST傳遞ID嗎? – Gntem 2012-07-11 17:57:59

+0

我已經嘗試了兩種方法.. – 2012-07-11 18:00:13

+0

點對點12. – DrinkJavaCodeJava 2012-07-11 18:01:00

回答

1

將id添加到表單中作爲隱藏字段。

<input type="hidden" name="id" value="<?php print $rows['id'] ?>"> 
+0

這樣做!!!!!!謝謝!!!! – 2012-07-11 18:19:34

+0

很高興提供幫助。我可以看到你是一個新成員,所以我會提到習慣上接受解決你的問題的答案。這就像答案一邊的小複選標記。具有較高的接受率有助於您獲得未來的答案,併爲參與該網站的答覆者提供一份代表獎金。 – colonelclick 2012-07-12 16:39:28

0

只是一個未定義的指數意味着某個數組的索引不存在。所以在這種情況下$_GET沒有索引id

也許你應該檢查變量是否設置在任何東西之前。

if(!empty($_GET['id']) && !empty($_POST['last']) && !empty($_POST['first'])){ 
    // other code 
} 

您也可以使用了錯誤的超全局變量,像GeoPhoenix說,你確定這不是你要找的$_POST['id']

+0

我將其更改爲$ _POST ..仍然無法正常工作。 – 2012-07-11 18:06:05

+0

定義:「仍然不工作」也許你傳遞錯誤的字段名稱。 – 2012-07-11 18:09:19

+0

顯示您的獲取和帖子的html頁面。 – DrinkJavaCodeJava 2012-07-11 18:09:35

0

如果不包括通話,因爲你原來的錯誤在第幾行報告一路你得到錯誤頁面的參數:

ini_set('display_errors', 'On'); 
error_reporting(E_ALL | E_STRICT); 

通常PHP(和PHP因此教程)假設一個較低的設置,PHP將在數組中拋出警告或忽略索引錯誤。因此,當您點擊:

$id= mysql_prep($_GET['id']); 
$last= mysql_prep($_POST['last']); 
$first= mysql_prep($_POST['first']); 

它引發錯誤,但您的引用可能會認爲它安靜地失敗。

您的表單似乎在id_number中提供了ID編號,而不僅僅是id。所以切換到$id=mysql_prep($_GET['id_number']);可能會得到更有效的結果。

由於您是PHP新手,我強烈建議您將PHP庫從舊的mysql庫改爲mysqliPDO。人們所建議的變化可能會讓你得到你期望的結果,但不能修復這個腳本所具有的多個SQL Injection vulnerabilities

0

我沒有在您的窗體中看到任何名稱爲「id」的東西。

如果您使用$ _get ['id'],您必須有一個鏈接或提交按鈕,轉移到一個像這樣的網址。

<a href="phpfile.php?id=PUT_VALUE_HERE> 

注意url在問號後面有變量名稱id,並且你告訴變量在=後面是什麼。

否則,如果你不打算把你的變量放在一個url中。您使用$ _POST ['id']。 爲了使$ _POST ['id']正常工作,您需要在窗體中將name屬性設置爲id的輸入。例如

<input name="id" type="text"> 

我沒有在名稱屬性設置爲「id」的窗體中看到任何內容。

+0

謝謝,就是這樣。 – 2012-07-11 18:30:29