首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用更聪明的方式编写我的新手重复性PHP?

用更聪明的方式编写我的新手重复性PHP?
EN

Stack Overflow用户
提问于 2015-10-31 20:31:33
回答 1查看 36关注 0票数 0

嗨,这里,请原谅我,我刚刚设法拼凑起来,我认为一个更高级的程序员可以给我一两个关于编程技术的提示来改进它。我给一大堆变量命名,像个狂人一样重复代码。

该脚本是一个html仪表板,它控制数据库值以插入到大约160个不同的网站标题/描述中。

仪表板代码为:

代码语言:javascript
复制
$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>';}

插入脚本为:

代码语言:javascript
复制
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获取变量的方式也可能是错误的:

代码语言:javascript
复制
//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。非常感谢。

编辑:

我进行了建议的更改,现在让循环显示行,如下所示:

代码语言:javascript
复制
   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值获取不同的变量?非常感谢

EN

回答 1

Stack Overflow用户

发布于 2015-10-31 20:55:27

正如你所说的,你的代码中有太多的重复。为什么你不考虑使用一个函数,它将接受不同的参数每次数据库拉取。另一方面,您可以创建for(或foreach)循环,其中您的

代码语言:javascript
复制
$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),并在每次迭代结束时更新它的值

代码语言:javascript
复制
//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中它是被弃用的(如果我没有错的话)。

请看这篇文章

你应该考虑改变更多的东西,但首先看一下这篇基础文章,然后自己尝试一下。良好的实践需要很长时间才能应用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33451610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档