您好请原谅我,我刚刚设法将这一点拼凑在一起,我认为一个更高级的程序员可以给我一些关于编程技术的提示来改进它。我正在命名一大堆变量并像疯子一样重复代码。
该脚本是一个html仪表板,用于控制数据库值以插入约160种不同的网站标题/描述。
仪表板代码为:
$displayquery1 = "SELECT * from seo where seo_id = 1";
$displayresult1 = mysql_query($displayquery1, $con);
//fetch and print record for page 1
while ($row = mysql_fetch_assoc($displayresult1, MYSQL_NUM)) {
echo '<td align="left"><a href="' . $row[2] . '">' . $row[2] . '</a></td>'
. '<td><input type="text" name="seo1a" value=" ' . $row[3] . '"></td>'
. '<td><input type="text" name="seo1b" value=" ' . $row[4] . '"></td> '
. '<td><input type="textarea" name="seo1c" value=" ' . $row[5] . '"></td>
</tr><br>';}
//fetch and print record for page 2
$displayquery2 = "SELECT * from seo where seo_id = 2";
$displayresult2 = mysql_query($displayquery2, $con);
while ($row2 = mysql_fetch_assoc($displayresult2, MYSQL_NUM)) {
echo '<td align="left"><a href="' . $row2[2] . '">' . $row[2] . '</a></td>'
. '<td><input type="text" name="seo1a" value=" ' . $row2[3] . '"></td>'
. '<td><input type="text" name="seo1b" value=" ' . $row2[4] . '"></td> '
. '<td><input type="textarea" name="seo1c" value=" ' . $row2[5] . '"></td>
</tr><br>';}
,插入脚本为:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (empty($_POST['seo1a'])) {
echo 'please enter a seo title';
} else {
$seo1a = ($_POST['seo1a']);
$seo1b = ($_POST['seo1b']);
$seo1c = ($_POST['seo1c']);
$seo2a = ($_POST['seo2a']);
$seo2b = ($_POST['seo2b']);
$seo2c = ($_POST['seo2c']);
//create queries
$q5 = "UPDATE seo SET seo_title='$seo1a', seo_description ='$seo1b', seo_content='$seo1c' WHERE seo_id = 1";
$q6 = "UPDATE seo SET seo_title='$seo2a', seo_description ='$seo2b', seo_content='$seo2c' WHERE seo_id = 2";
$r = mysql_query($q5, $con);
$r2 = mysqli_query($q6, $con);
}};
看看我是如何命名每个变量并重复运行查询的?我必须这样做160页。我从db获取变量的方式也可能是错误的:
//get seo title for first page
$varquery1 = "SELECT * from seo where seo_id = 1";
$varresult1 = mysql_query($varquery1, $con);
if ($varresult1) {
$row1 = mysql_fetch_assoc(mysql_query($varresult1));
$seotitle = row1['seo_title'];
}
//get seo title for second page
$varquery2 = "SELECT * from seo where seo_id = 2";
$varresult2 = mysql_query($varquery2, $con);
if ($varresult2) {
$row2 = mysql_fetch_assoc(mysql_query($varresult2));
$seotitle = row2['seo_title'];
}
请随意为我的代码质量侮辱我,请给我一两个提示。它不是我的网站,所以我还不能切换到mysqli。非常感谢。
编辑:
我做了一些建议更改,现在让循环显示如下:
for ($i = 1; $i < 10; $i++) {
$loopquery = "SELECT * from seo where seo_id=$i";
$loopresult = mysql_query($loopquery, $con);
if($loopresult) {
$looprow = mysql_fetch_assoc($loopresult);
echo '<td align="left"><a href="' . $looprow['seo_url'] . '">' . $looprow['seo_url'] . '</a></td>'
. '<td><input type="text" name="seo1a" value=" ' . $looprow['seo_title'] . '"></td>'
. '<td><input type="text" name="seo1b" value=" ' . $looprow['seo_description'] . '"></td> '
. '<td><input type="textarea" name="seo1c" value=" ' . $looprow['seo_content'] . '"></td>
</tr><br>
';
我现在的问题是如何为每一行的POST值获取不同的变量?非常感谢
答案 0 :(得分:1)
正如您所说,您的代码中有太多重复。你为什么不考虑使用一个在DB Pull之前采用不同参数的函数。另一方面,你可以在你的
中进行for(或foreach)循环$varquery1 = "SELECT * from seo where seo_id = 1";
$varresult1 = mysql_query($varquery1, $con);
if ($varresult1) {
$row1 = mysql_fetch_assoc(mysql_query($varresult1));
$seotitle = row1[seo_title'];
会迭代。您可以将seo_id = 1应用于变量。创建一个计数器变量,例如$ counter = 0(如果使用foreach)并在每次迭代结束时更新其值
//for loop
for($i=0; $i < 10; $i++ ) {
//Here will go each of your db queries
$varquery1 = "SELECT * from seo where seo_id = ".$i;
//and so on...
}
另一件事是尝试将变量命名为更多描述。 q,$ r对你意味着什么。 ?!? 你应该考虑使用mysqli而不是mysql。我认为在php7中它已被弃用(如果我没有错)
看一下这篇文章
还有很多东西你应该考虑改变,但首先要看一下这些基础文章,然后自己尝试。良好做法需要很长时间才能适用。