php中的动态网址或页面

时间:2012-11-05 06:41:27

标签: php mysql phpmyadmin

嗯,这是我在php中构建动态页面的第一个举措。由于我是php的新手,我对php编程知之甚少。我已经创建了一个名为“dynamic”的数据库,它的表名为“answer”,之后我插入了四个字段,即'id','A1','A2','A3'。

我在id = 1中插入了值为A1 = 1,A2和A3-0,

的值

在id = 2中,我插入了A1 = 0,A2 = 1,A3 = 0

在id-3中,我插入了A1,A2 = 0 A3 = 1

所以现在我想要的是每当我点击id = 1的链接然后它将显示id = 1的内容,依此类推...... 到目前为止我所做的是: -

     $conn= mysql_connect("localhost","root", "");
      $db= mysql_select_db("dynamic", $conn);
      $id=$_GET['id'];
      $sql= "select * from answer order by id";
      $query= mysql_query($sql);

       while($row=mysql_fetch_array($query, MYSQL_ASSOC))
      {
          echo "<a href='dynamic.php?lc_URL=".$row['id']."'>Click Here</a>"; 
          if($row['A1']==1)
          {
              echo "A1 is 1";
          }
          else if($row['A2']==1)
          {
              echo "A2 is 1";

          }
          else if($row['A3']==1)
          {
              echo "A3 is 1";
          }
          else {
              echo "Wrong query";

            }

        }

       ?>

当我执行此代码时,它会向我显示确切的ID,并且它将转到确切的ID,但值并未发生变化..

我希望每当我点击id然后它会显示确切的值,如果我点击id = 2然后它将回显出“A2 is 1”没有别的....

有人可以帮帮我吗?

我也注意到了

         $id=$_GET['id'];

它是什么以及如何使用它。任何人都可以解释我.. 非常感谢提前:))

1 个答案:

答案 0 :(得分:0)

最好先启动here以便深入了解php。但要回答你在这里提出的具体问题......

php $_GET变量定义得很好here

  

在PHP中,预定义的$ _GET变量用于收集a中的值   form with method =“get”。

这意味着可以通过php中的$_GET变量访问通过URL中的查询字符串(在GET请求上)传递的任何参数。例如,dynamic.php?id=1请求允许您通过$_GET['id']访问ID。

由此我们可以得出一个简单的解决方案。在下面的解决方案中,我们使用相同的php页面来显示数据库中answer表中的项列表,如果id参数作为url的一部分传递,则显示单行。

<!DOCTYPE HTML>
<html>
  <head>
  </head>
  <body>
  <?php
    $mysqli = new mysqli("localhost", "user", "password", "dynamic");

    $query = 'SELECT * FROM answer';
    if ($_GET['id']) {
      $query .= ' WHERE id = '.$_GET['id'];
    } else {
      $query .= ' ORDER BY id';
    }
    $res = $mysqli->query($query);

    if ($res->num_rows == 0) {
      echo '<p>No Results</p>';
    } else if ($res->num_rows == 1) {
      // Display Answer
      $row = $res->fetch_assoc();
      echo '<h3>Answer for '.$row['id'].'</h3>';
      echo '<ul>';
      echo '<li>A1 = '.$row['A1'].'</li>';
      echo '<li>A2 = '.$row['A2'].'</li>';
      echo '<li>A3 = '.$row['A3'].'</li>';
      echo '</ul>';
    } else {
      // Display List
      echo '<ul>';
      while ($row = $res->fetch_assoc()) {
        echo '<li><a href="dynamic.php?id='.$row['id'].'">Answers for '.$row['id'].'</a></li>';
      }
      echo '</ul>';
    }
  ?>
  </body>
</html>

好的,这可能不是您正在寻找的,但它应该可以帮助您更好地了解事情的运作方式。如果我们在页面中添加一些javascript,那么我们可以在不使用GET参数和额外页面请求的情况下显示/隐藏答案。

<!DOCTYPE HTML>
<html>
  <head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
  </head>
  <body>
  <?php
    $mysqli = new mysqli("localhost", "user", "password", "dynamic");

    $query = 'SELECT * FROM answer ORDER BY id';
    $res = $mysqli->query($query);

    if ($res->num_rows == 0) {
      echo '<p>No Results</p>';
    } else {
      // Display List
      echo '<ul>';
      while ($row = $res->fetch_assoc()) {
        echo '<li><a href="javascript:toggleAnswers('.$row['id'].')">Answers for '.$row['id'].'</a>';
        echo '<ul id="answers_'.$row['id'].'" style="display:none;">';
        echo '<li>A1 = '.$row['A1'].'</li>';
        echo '<li>A2 = '.$row['A2'].'</li>';
        echo '<li>A3 = '.$row['A3'].'</li>';
        echo '</ul>';
        echo '</li>';
      }
      echo '</ul>';
    }
  ?>

    <script>
      function toggleAnswers(answer) {
        $('#answers_' + answer).toggle();
      }
    </script>
  </body>
</html>

还有更多解决方案,每个解决方案都比我在这里介绍的要复杂得多。例如,我们可以设置ajax请求,仅在单击某个项目时将答案加载到列表页面中。我的建议是通过一些关于php的初学者教程,看看一些流行的PHP框架:Zend,CodeIgniter,CakePHP等。根据你的总体目标,其中一个可能真的可以帮助你更快地实现目标。

请注意,此处提供的代码只是如何完成您所要求的示例。它绝对不会遵循所有(如果有的话)最佳实践。