新人做一个表单编辑功能的实现,遇到瓶颈求帮助

WBOY
풀어 주다: 2016-06-23 13:29:54
원래의
847명이 탐색했습니다.

<?php	$myconn=mysql_connect("localhost","root","");	mysql_select_db("login_test",$myconn);	if(!$myconn){    	echo "连接失败".mysql_error();	}?><html>	<head>		<title>Edit</title>		<link href="css.css" rel="stylesheet" type="text/css" />	</head>	<body>		<form method="POST">			<table>				<tr class="table_head">				<td>objname</td>				<td>objinfo</td>				</tr>				<?php					$strSql="select * from table_test";					$result=mysql_query($strSql,$myconn);					while($row=mysql_fetch_array($result))					{					$objname1=$row['objname'];					$objinfo1=$row['objinfo'];				?>				<tr>				<td><input type="hidden" name="id" value="<?php echo $row['objid']?>">				<input type="text" name="objname" value="<?php echo $objname1?>" /></td>				<td><input type="text" name="objinfo" value="<?php echo $objinfo1?>" /></td>				</tr>				<?php					}				print_r($_POST);				if(!empty($_POST)){					$objname=$_POST["objname"];					$objinfo=$_POST["objinfo"];					$id = $_POST['id'];					$strSql="update table_test set objname='$objname',objinfo='$objinfo' where objid='$id'";					$result=mysql_query($strSql,$myconn);					if(!$result){    					die(mysql_error());					}					echo"修改成功!";									}				?>			</table>			<br>			<div style="display:inline;">				<input type="submit" class="button_black"/>				<input type="button" class="button_black" value="返回" onclick="javascript:document.location.href='test.php'"/>		</form>	</body><?php mysql_close($myconn); ?></html>
로그인 후 복사

以上是代码,只能成功修改最后一行,原因是我用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"];怎么写

你还要能分条保存啊?那分数组。





这样,获得三个数组。之后你想直接插还是整合成一个数组再插都行

你还要能分条保存啊?那分数组。





这样,获得三个数组。之后你想直接插还是整合成一个数组再插都行


<?php	$myconn=mysql_connect("localhost","root","");	mysql_select_db("login_test",$myconn);	if(!$myconn){    	echo "连接失败".mysql_error();	}?><html>	<head>		<title>Edit</title>		<link href="css.css" rel="stylesheet" type="text/css" />	</head>	<body>		<form method="POST">			<table>				<tr class="table_head">				<td>objname</td>				<td>objinfo</td>				</tr>				<?php					$strSql="select * from table_test";					$result=mysql_query($strSql,$myconn);					while($row=mysql_fetch_array($result))					{					$objname1=$row['objname'];					$objinfo1=$row['objinfo'];				?>				<tr>				<td><input type="hidden" name="id[]" value="<?php echo $row['objid']?>">				<input type="text" name="objname[]" value="<?php echo $objname1?>" /></td>				<td><input type="text" name="objinfo[]" value="<?php echo $objinfo1?>" /></td>				</tr>				<?php					}				print_r($_POST);				if(!empty($_POST)){					$i=0;					while($row=mysql_fetch_array($result))					{						$objname=$_POST["objname[i]"];						$objinfo=$_POST["objinfo[i]"]; 						$id = $_POST["id[i]"];						$strSql2="update table_test set objname='$objname',objinfo='$objinfo' where objid='$id'";						$result2=mysql_query($strSql,$myconn);						if(!$result2){	    					die(mysql_error());						}						$i++;					}					echo"修改成功!";									}				?>			</table>			<br>			<div style="display:inline;">				<input type="submit" class="button_black"/>				<input type="button" class="button_black" value="返回" onclick="javascript:document.location.href='test.php'"/>		</form>	</body><?php mysql_close($myconn); ?></html>
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

我按照你的思路改成这样了
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值,有点蛋疼!


你还要能分条保存啊?那分数组。





这样,获得三个数组。之后你想直接插还是整合成一个数组再插都行


<?php	$myconn=mysql_connect("localhost","root","");	mysql_select_db("login_test",$myconn);	if(!$myconn){    	echo "连接失败".mysql_error();	}?><html>	<head>		<title>Edit</title>		<link href="css.css" rel="stylesheet" type="text/css" />	</head>	<body>		<form method="POST">			<table>				<tr class="table_head">				<td>objname</td>				<td>objinfo</td>				</tr>				<?php					$strSql="select * from table_test";					$result=mysql_query($strSql,$myconn);					while($row=mysql_fetch_array($result))					{					$objname1=$row['objname'];					$objinfo1=$row['objinfo'];				?>				<tr>				<td><input type="hidden" name="id[]" value="<?php echo $row['objid']?>">				<input type="text" name="objname[]" value="<?php echo $objname1?>" /></td>				<td><input type="text" name="objinfo[]" value="<?php echo $objinfo1?>" /></td>				</tr>				<?php					}				print_r($_POST);				if(!empty($_POST)){					$i=0;					while($row=mysql_fetch_array($result))					{						$objname=$_POST["objname[i]"];						$objinfo=$_POST["objinfo[i]"]; 						$id = $_POST["id[i]"];						$strSql2="update table_test set objname='$objname',objinfo='$objinfo' where objid='$id'";						$result2=mysql_query($strSql,$myconn);						if(!$result2){	    					die(mysql_error());						}						$i++;					}					echo"修改成功!";									}				?>			</table>			<br>			<div style="display:inline;">				<input type="submit" class="button_black"/>				<input type="button" class="button_black" value="返回" onclick="javascript:document.location.href='test.php'"/>		</form>	</body><?php mysql_close($myconn); ?></html>
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

我按照你的思路改成这样了
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]"];这个是不是有问题。



你还要能分条保存啊?那分数组。





这样,获得三个数组。之后你想直接插还是整合成一个数组再插都行


<?php	$myconn=mysql_connect("localhost","root","");	mysql_select_db("login_test",$myconn);	if(!$myconn){    	echo "连接失败".mysql_error();	}?><html>	<head>		<title>Edit</title>		<link href="css.css" rel="stylesheet" type="text/css" />	</head>	<body>		<form method="POST">			<table>				<tr class="table_head">				<td>objname</td>				<td>objinfo</td>				</tr>				<?php					$strSql="select * from table_test";					$result=mysql_query($strSql,$myconn);					while($row=mysql_fetch_array($result))					{					$objname1=$row['objname'];					$objinfo1=$row['objinfo'];				?>				<tr>				<td><input type="hidden" name="id[]" value="<?php echo $row['objid']?>">				<input type="text" name="objname[]" value="<?php echo $objname1?>" /></td>				<td><input type="text" name="objinfo[]" value="<?php echo $objinfo1?>" /></td>				</tr>				<?php					}				print_r($_POST);				if(!empty($_POST)){					$i=0;					while($row=mysql_fetch_array($result))					{						$objname=$_POST["objname[i]"];						$objinfo=$_POST["objinfo[i]"]; 						$id = $_POST["id[i]"];						$strSql2="update table_test set objname='$objname',objinfo='$objinfo' where objid='$id'";						$result2=mysql_query($strSql,$myconn);						if(!$result2){	    					die(mysql_error());						}						$i++;					}					echo"修改成功!";									}				?>			</table>			<br>			<div style="display:inline;">				<input type="submit" class="button_black"/>				<input type="button" class="button_black" value="返回" onclick="javascript:document.location.href='test.php'"/>		</form>	</body><?php mysql_close($myconn); ?></html>
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

我按照你的思路改成这样了
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了还是不行,有引号方面的问题吗?




你还要能分条保存啊?那分数组。





这样,获得三个数组。之后你想直接插还是整合成一个数组再插都行


<?php	$myconn=mysql_connect("localhost","root","");	mysql_select_db("login_test",$myconn);	if(!$myconn){    	echo "连接失败".mysql_error();	}?><html>	<head>		<title>Edit</title>		<link href="css.css" rel="stylesheet" type="text/css" />	</head>	<body>		<form method="POST">			<table>				<tr class="table_head">				<td>objname</td>				<td>objinfo</td>				</tr>				<?php					$strSql="select * from table_test";					$result=mysql_query($strSql,$myconn);					while($row=mysql_fetch_array($result))					{					$objname1=$row['objname'];					$objinfo1=$row['objinfo'];				?>				<tr>				<td><input type="hidden" name="id[]" value="<?php echo $row['objid']?>">				<input type="text" name="objname[]" value="<?php echo $objname1?>" /></td>				<td><input type="text" name="objinfo[]" value="<?php echo $objinfo1?>" /></td>				</tr>				<?php					}				print_r($_POST);				if(!empty($_POST)){					$i=0;					while($row=mysql_fetch_array($result))					{						$objname=$_POST["objname[i]"];						$objinfo=$_POST["objinfo[i]"]; 						$id = $_POST["id[i]"];						$strSql2="update table_test set objname='$objname',objinfo='$objinfo' where objid='$id'";						$result2=mysql_query($strSql,$myconn);						if(!$result2){	    					die(mysql_error());						}						$i++;					}					echo"修改成功!";									}				?>			</table>			<br>			<div style="display:inline;">				<input type="submit" class="button_black"/>				<input type="button" class="button_black" value="返回" onclick="javascript:document.location.href='test.php'"/>		</form>	</body><?php mysql_close($myconn); ?></html>
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

我按照你的思路改成这样了
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里数组的数据(感觉是个基础问题)
有劳大佬了


你还要能分条保存啊?那分数组。





这样,获得三个数组。之后你想直接插还是整合成一个数组再插都行


<?php	$myconn=mysql_connect("localhost","root","");	mysql_select_db("login_test",$myconn);	if(!$myconn){    	echo "连接失败".mysql_error();	}?><html>	<head>		<title>Edit</title>		<link href="css.css" rel="stylesheet" type="text/css" />	</head>	<body>		<form method="POST">			<table>				<tr class="table_head">				<td>objname</td>				<td>objinfo</td>				</tr>				<?php					$strSql="select * from table_test";					$result=mysql_query($strSql,$myconn);					while($row=mysql_fetch_array($result))					{					$objname1=$row['objname'];					$objinfo1=$row['objinfo'];				?>				<tr>				<td><input type="hidden" name="id[]" value="<?php echo $row['objid']?>">				<input type="text" name="objname[]" value="<?php echo $objname1?>" /></td>				<td><input type="text" name="objinfo[]" value="<?php echo $objinfo1?>" /></td>				</tr>				<?php					}				print_r($_POST);				if(!empty($_POST)){					$i=0;					while($row=mysql_fetch_array($result))					{						$objname=$_POST["objname[i]"];						$objinfo=$_POST["objinfo[i]"]; 						$id = $_POST["id[i]"];						$strSql2="update table_test set objname='$objname',objinfo='$objinfo' where objid='$id'";						$result2=mysql_query($strSql,$myconn);						if(!$result2){	    					die(mysql_error());						}						$i++;					}					echo"修改成功!";									}				?>			</table>			<br>			<div style="display:inline;">				<input type="submit" class="button_black"/>				<input type="button" class="button_black" value="返回" onclick="javascript:document.location.href='test.php'"/>		</form>	</body><?php mysql_close($myconn); ?></html>
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

我按照你的思路改成这样了
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的值,应该就可以插入了,问题应该可以解决了。


也多些这位仁兄的热心帮助!太感动了

<?php	$myconn=mysql_connect("localhost","root","");	mysql_select_db("login_test",$myconn);	if(!$myconn){    	echo "连接失败".mysql_error();	}?><html>	<head>		<title>Edit</title>		<link href="css.css" rel="stylesheet" type="text/css" />	</head>	<body>		<form method="POST">			<table>				<tr class="table_head">				<td>objname</td>				<td>objinfo</td>				</tr>				<?php					$strSql="select * from table_test";					$result=mysql_query($strSql,$myconn);					while($row=mysql_fetch_array($result))					{					$objname1=$row['objname'];					$objinfo1=$row['objinfo'];				?>				<tr>				<td><input type="hidden" name="id[]" value="<?php echo $row['objid']?>">				<input type="text" name="objname[]" value="<?php echo $objname1?>" /></td>				<td><input type="text" name="objinfo[]" value="<?php echo $objinfo1?>" /></td>				</tr>				<?php					}				print_r($_POST);				if(!empty($_POST)){					for($i=0;$i< mysql_num_rows($result);$i++){						$objname=$_POST["objname"][$i];						print_r($objname);						$objinfo=$_POST["objinfo"][$i];						print_r($objinfo);						$id = $_POST["id"][$i];						print_r($id);						$strSql2="update table_test set objname='$objname',objinfo='$objinfo' where objid='$id'";						$result2=mysql_query($strSql2,$myconn);						if(!$result2){	    					die(mysql_error());						}					}					echo"修改成功!";									}				?>			</table>			<br>			<div style="display:inline;">				<input type="submit" class="button_black"/>				<input type="button" class="button_black" value="返回" onclick="javascript:document.location.href='test.php'"/>		</form>	</body><?php mysql_close($myconn); ?></html>
로그인 후 복사

这里是最终成型代码
感谢fedcgfedbe和csjazqx的热心帮助!



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


多谢大佬帮助,基本上问题都解决了,还差一个定循环里i的终止值为表单长度,这个我自己来吧
真是太感谢了!
咱不是大佬。。做这行也没多久的。只是在帮助别人的时候自己也能温习。
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿