新人做一個表單編輯功能的實現,遇到瓶頸求協助

來源:互聯網
上載者:User
Edit

以上是代碼,只能成功修改最後一行,原因是我用while讀取後Post選擇的總是最後一行,想了有段時間了想不出怎麼做
求指導,最好有代碼,js可以看懂一點,Jquery咱不會使,畢竟php和js還沒完全搞明白


回複討論(解決方案)

順帶一提,這個頁面的前一個頁面沒有傳任何值出來,沒有session。
這個頁面表單列印全是直接從資料庫調的

沒人嗎

你post的應該只有最後一個記錄

input 的name屬性名稱一樣,取最後一個

你post的應該只有最後一個記錄


這個我知道了,我想求個解決思路或者具體代碼來實現我的目的

你每個表單的name得不同,不然只能擷取到$_POST[‘objname’]和$_POST['objinfo']兩個post值

你每個表單的name得不同,不然只能擷取到$_POST[‘objname’]和$_POST['objinfo']兩個post值



中改成:




input 的name屬性名稱一樣,取最後一個


我是用id調的資料,問題在三個column的name都是一樣的,只有value不一樣,怎麼才能把他們分開分別調用


你每個表單的name得不同,不然只能擷取到$_POST[‘objname’]和$_POST['objinfo']兩個post值



中改成:





這個思路好!我試試


你每個表單的name得不同,不然只能擷取到$_POST[‘objname’]和$_POST['objinfo']兩個post值



中改成:





這麼一改怎麼用post提資料啊?
$objname=$_POST["objname"];怎麼寫

你還要能分條儲存啊?那分數組。





這樣,獲得三個數組。之後你想直接插還是整合成一個數組再插都行

你還要能分條儲存啊?那分數組。





這樣,獲得三個數組。之後你想直接插還是整合成一個數組再插都行


Edit

我按照你的思路改成這樣了
post獲得的是一整個表單,我讓他逐條更新寫入,但是為啥資料庫那邊沒改啊
post獲得的值打在這裡:Array ( [id] => Array ( [0] => 7 [1] => 8 [2] => 9 [3] => 10 ) [objname] => Array ( [0] => 123123 [1] => 321 [2] => 456 [3] => 654 ) [objinfo] => Array ( [0] => 132132 [1] => 321 [2] => 456 [3] => 654 ) )

你還要能分條儲存啊?那分數組。





這樣,獲得三個數組。之後你想直接插還是整合成一個數組再插都行


這個數組思路好,贊一個,這樣post取值的通過遍曆數組就可以區分不同的name:_POST['objname[0],學習了,我想法是通過js修改name值,有點蛋疼!


你還要能分條儲存啊?那分數組。





這樣,獲得三個數組。之後你想直接插還是整合成一個數組再插都行


Edit

我按照你的思路改成這樣了
post獲得的是一整個表單,我讓他逐條更新寫入,但是為啥資料庫那邊沒改啊
post獲得的值打在這裡:Array ( [id] => Array ( [0] => 7 [1] => 8 [2] => 9 [3] => 10 ) [objname] => Array ( [0] => 123123 [1] => 321 [2] => 456 [3] => 654 ) [objinfo] => Array ( [0] => 132132 [1] => 321 [2] => 456 [3] => 654 ) )



$_POST["objname[i]"];這個是不是有問題。



你還要能分條儲存啊?那分數組。





這樣,獲得三個數組。之後你想直接插還是整合成一個數組再插都行


Edit

我按照你的思路改成這樣了
post獲得的是一整個表單,我讓他逐條更新寫入,但是為啥資料庫那邊沒改啊
post獲得的值打在這裡:Array ( [id] => Array ( [0] => 7 [1] => 8 [2] => 9 [3] => 10 ) [objname] => Array ( [0] => 123123 [1] => 321 [2] => 456 [3] => 654 ) [objinfo] => Array ( [0] => 132132 [1] => 321 [2] => 456 [3] => 654 ) )



$_POST["objname[i]"];這個是不是有問題。


改成$i了還是不行,有引號方面的問題嗎?




你還要能分條儲存啊?那分數組。





這樣,獲得三個數組。之後你想直接插還是整合成一個數組再插都行


Edit

我按照你的思路改成這樣了
post獲得的是一整個表單,我讓他逐條更新寫入,但是為啥資料庫那邊沒改啊
post獲得的值打在這裡:Array ( [id] => Array ( [0] => 7 [1] => 8 [2] => 9 [3] => 10 ) [objname] => Array ( [0] => 123123 [1] => 321 [2] => 456 [3] => 654 ) [objinfo] => Array ( [0] => 132132 [1] => 321 [2] => 456 [3] => 654 ) )



$_POST["objname[i]"];這個是不是有問題。


改成$i了還是不行,有引號方面的問題嗎?


這樣想好像不是很好,現在不是可以獲得post過來的3個數組了嗎,你根據3個數組再組合下,分別插入資料庫,不要想著把$_POST[["objname[i]"]插入資料庫,而是把$data=array();$data=$_POST["objname"],然後在分別把3個新定義的數組插入資料庫。

if(!empty($_POST)){while($row=mysql_fetch_array($result)){$objname=$_POST["objname[]"];print_r($_POST["objname[]"]);print_r($objname);$objinfo=$_POST["objinfo[]"];$id = $_POST["id[]"];$strSql2="update table_test set objname='$objname',objinfo='$objinfo' where objid='$id'";$result2=mysql_query($strSql,$myconn);if(!$result2){    die(mysql_error());}}echo"修改成功!";}

想了一下,是不是不用$i也行,但是還是取不出post裡數組的資料(感覺是個基礎問題)
有勞大佬了


你還要能分條儲存啊?那分數組。





這樣,獲得三個數組。之後你想直接插還是整合成一個數組再插都行


Edit

我按照你的思路改成這樣了
post獲得的是一整個表單,我讓他逐條更新寫入,但是為啥資料庫那邊沒改啊
post獲得的值打在這裡:Array ( [id] => Array ( [0] => 7 [1] => 8 [2] => 9 [3] => 10 ) [objname] => Array ( [0] => 123123 [1] => 321 [2] => 456 [3] => 654 ) [objinfo] => Array ( [0] => 132132 [1] => 321 [2] => 456 [3] => 654 ) )



找了半天,你這執行的是$sqlstr,但定義的字串是$sqlstr2








































$limit = 5; $strSql="select * from news limit ".$limit; $result=mysql_query($strSql,$myconn); while($row=mysql_fetch_array($result)) { $title1=$row['title']; $link1=$row['link']; ?> } print_r($_POST); if(!empty($_POST)){ for($i=0;$i<$limit;$i++) { $title=$_POST["title"][$i]; $link=$_POST["link"][$i]; $id = $_POST["id"][$i]; $strSql = "UPDATE news SET title='".$title."' , link='".$link."' WHERE id='".$id."'"; $result2=mysql_query($strSql,$myconn); if(!$result2){ die(mysql_error()); }else{ //echo"修改成功!"; } } } ?>
title link



我本地測試了一下,這樣是可以用的,以上是table裡的代碼

if(!empty($_POST)){while($row=mysql_fetch_array($result)){$objname=$_POST["objname[]"];print_r($_POST["objname[]"]);print_r($objname);$objinfo=$_POST["objinfo[]"];$id = $_POST["id[]"];$strSql2="update table_test set objname='$objname',objinfo='$objinfo' where objid='$id'";$result2=mysql_query($strSql,$myconn);if(!$result2){    die(mysql_error());}}echo"修改成功!";}

想了一下,是不是不用$i也行,但是還是取不出post裡數組的資料(感覺是個基礎問題)
有勞大佬了


我寫了print_r($_POST["$objname"]);和print_r($_POST["$objname[]"]); 都沒反應

$objname=array();
$bojname=$_POST['bojname'];
$objinfo=array();
$bojname=$_POST['bojname'];
$id=array();
$id=$_POST['id'];
for ($i=0,i $sql='update table_test set objname='.$objname[$i].',objinfo='.$objinfo[$i].' where objid='.$id[$i];
}
試試這個思路


用 $objname=$_POST["objname"][$i]; 吧。








































$limit = 5; $strSql="select * from news limit ".$limit; $result=mysql_query($strSql,$myconn); while($row=mysql_fetch_array($result)) { $title1=$row['title']; $link1=$row['link']; ?> } print_r($_POST); if(!empty($_POST)){ for($i=0;$i<$limit;$i++) { $title=$_POST["title"][$i]; $link=$_POST["link"][$i]; $id = $_POST["id"][$i]; $strSql = "UPDATE news SET title='".$title."' , link='".$link."' WHERE id='".$id."'"; $result2=mysql_query($strSql,$myconn); if(!$result2){ die(mysql_error()); }else{ //echo"修改成功!"; } } } ?>
title link



我本地測試了一下,這樣是可以用的,以上是table裡的代碼


原來是這樣寫的,受教了

用 $objname=$_POST["objname"][$i]; 吧。

一下子沒想到這個,$_POST["objname"][$i]這樣的得到post的值,應該就可以插入了,問題應該可以解決了。

用 $objname=$_POST["objname"][$i]; 吧。


多謝大佬協助,基本上問題都解決了,還差一個定迴圈裡i的終止值為表單長度,這個我自己來吧
真是太感謝了!



用 $objname=$_POST["objname"][$i]; 吧。

一下子沒想到這個,$_POST["objname"][$i]這樣的得到post的值,應該就可以插入了,問題應該可以解決了。


也多些這位仁兄的熱心協助!太感動了

Edit

這裡是最終成型代碼
感謝fedcgfedbe和csjazqx的熱心協助!



用 $objname=$_POST["objname"][$i]; 吧。


多謝大佬協助,基本上問題都解決了,還差一個定迴圈裡i的終止值為表單長度,這個我自己來吧
真是太感謝了!


咱不是大佬。。做這行也沒多久的。只是在協助別人的時候自己也能溫習。
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.