布局从数据库中提取的网页信息

时间:2014-04-05 21:52:07

标签: php html mysql

我甚至不确定如何提出这个问题,但是这里有。我正在构建一个允许您从下拉菜单中选择测试的网页,当您单击提交时,它应该将所有问题加载到与该测试相关联的页面上。我的问题是布局。这是我试图做的静态版本:

enter image description here

我需要网站从数据库中提取所有必要的问题,并使用5个按钮或单选按钮在它们下面逐个布置。每个测试都有不同数量的问题,因此我基本上需要网站继续构建此布局,直到问题用完为止。我希望这是有道理的。到目前为止,我一直在使用PHP,HTML和MySQL进行Dreamweaver工作。我怎样才能完成这样的事情,或者至少我将如何开始?非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

构建动态网页是一项非常基本的网络编程技巧。我会给你一个解决这个问题的基本想法。

在您的情况下,您需要在HTML标记中包含一个容器,其中包含所有问题。 PHP脚本将连接到您的数据库,执行查询以获取所选测试的所有问题并将其加载到您的容器中。

您可以在www.w3schools.com找到有关构建动态网页的更多信息

从评论中,我想补充一点,您应该将所有问题都放在表单容器下。构建一个由5个单选按钮组成的组件,并在注入问题后立即在HTML中注入该组件。这个过程将持续到所有问题都包括在内。

希望这可以更好地了解解决方案。

答案 1 :(得分:1)

你需要研究循环。你可以这样做:

在问题表上进行查询(例如在php中使用PDO,查找)。

假设保存该查询结果的变量称为$ result,那么你可以这样做一个php循环:

foreach($result as $value){
// You put the code you want here , 
//like printing the line with the question ,
//and making the buttons
}

foreach循环重复你放在括号之间的东西,直到它没有更多的结果要处理。

帮助您入门的资源:

PHP循环: http://www.w3schools.com/Php/php_looping_for.asp

使用PDO进行数据库通信: http://code.tutsplus.com/tutorials/php-database-access-are-you-doing-it-correctly--net-25338

答案 2 :(得分:0)

首先,您需要在数据库中提出问题。我还假设你有客户可以访问它?多次测试。

首先在数据库中构建sql表。

CREATE TABLE questions(
    ID int NOT NULL PRIMARY KEY AUTO_INCREMEMNT,
    question varchar(255),
    testID int(10),
);
CREATE TABLE tests(
    ID int NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name varchar(255) UNIQUE,
);
CREATE TABLE clients(
    ID int NOT NULL PRIMARY KEY AUTO_INCREMEMNT,
    username varchar(200) NOT NULL UNIQUE,
    password varchar(512) NOT NULL,
    count int(10) DEFAULT 0,
);

现在我通常使用管理mysql软件来管理和构建我的表,所以你可能想检查我有正确的语法。但基本的想法是建立你的表。

现在您已经构建了表格,您可以继续插入数据。我将给你两个例子,只是因为你没有使用第三方sql软件:

INSERT INTO tests (name) VALUES ('am I a coder');

以上是一个简单的insert进入你的mysql数据库。如果你想发展成php和mysql查询,这些可能会变得更加复杂。我建议你在进一步发展之前进入mySQLi和sql的功能和能力。 因为我在测试中将unique添加到了列name。这意味着列中的数据不能重复/重复。以上面的例子为例:

INSERT IGNORE INTO tests (name) VALUES('am I a coder');

如果已经列出insert列的条目,那么上述内容将会忽略name。我是编码员吗? 上述查询将生成如下条目:

ID |      name
1  |  'am I a coder'

另外两个简单的例子

INSERT INTO questions (question,testID) VALUES('your chosen question','1');
INSERT INTO clients (username,password) VALUES('me','password');

现在使用PHP,您可以选择数据,插入数据和更新数据等等,使用上述quires以及更多可能性。这里有一个小小的想法,你可以用PHP来访问我们表中的数据。 mySQLi是新手最简单,最首选的方法。请注意mySQL是折旧的,我不建议使用。
还有两种方法,程序和面向对象。我更喜欢定位,因为它更整洁,我已经习惯了,但我会提供程序,所以你可以决定你想从哪开始。 程序

$connection=mysqli_connect('hostname','username','password','database');
//some people add a `die` onto connections but I don't see the point if you're 100% sure it'll connect.
$result=mysqli_prepare($connection,"SELECT * FROM tests");//I like prepared statments over queries because they're more secure.
mysqli_stmt_execute($result);
mysqli_stmt_bind_result($result,$ID,$name);
while(mysqli_stmt_fetch($result)){
    $tests[]=array('ID'=>$ID,'name'=>$name);
}
mysqli_stmt_close($result);

OOP

$DBH=new mysqli('host','username','password','datbase');
$get=$DBH->prepare('SELECT * FROM tests');
$get->execute();
$get->bind_result($ID,$name)
while($get->fetch()){
    $tests[]=array('ID'=>$ID,'name'=>$name);
}

现在使用PHP,我们有一个称为foreach循环的句柄!如果你之前在for循环中使用了javascript中的数组,那就类似于for(i=0;i<array.length;i++)但是!它甚至更好!

因为我们的$ test是一个数组并且结构如tests=array(0=>array('ID'=>1,'name'=>'am I a coder')),所以我们可以使用foreach循环来处理每个测试数组条目并构建你的选择下拉列表。

foreach($tests as $test){
    $options.="<option value='".$test['ID']."'>".$test['name']."</option>";//within strings, using full stops as '+'. adds `strings` together in other words.
}

现在我们已经构建了选择的选项。最好把它们放在一起。

echo "<select name='tests'>".$options."</options>";

因为PHP是服务器端脚本,所以它会在将文档HTML发送到客户端之前处理所有数据。 (基本解释)所以&#39;回声&#39;身体将处理HTML。还有其他方法,但这是目前最简单的方法。

现在我们已经完成了测试。下一步是构建表单以构建测试。 所以这可能是这样的:

<form name='whichTest' action='destination.php' method="POST">
    <select name="tests">
        <?php echo $options; ?>
    </select>
    <input name='submit' type='submit' value='select'/>
</form>

提交表单时。它将被发送&#39;到表单标记中的action属性中的任何目录。表单数据将位于名为$_POST的句柄变量中。这是由form属性方法指定的。 你问自己不是很兴奋! :d 它能不能再填充!!!它可能会!

我知道如果你是初学者,我可能会把你赶进去,但如果你要建立你所指定的东西,这就是必需的!所以,如果你没有跟进到这个阶段,最佳实践,练习,练习!我是自学的,所以我和其他人聊了很多垃圾:D lol

现在使用$ _POST变量。我们可以使用它来查询我们的数据库,以返回我在前面写的foreach内处理的数据!有时候我希望这就像Bluepeter一样,我可以俯身而去,这是我早先做的一个!但不,我不得写东西! d: 对!反正!

$get=$DBH->prepare('SELECT ID,question FROM questions WHERE testID=?');//notice the question mark?
$get->bind_param('i',$_POST['tests']);//This will 'insert' into our query, the data within variable $_POST['tests'] avoiding sql injection
//the name of the input's within the form are now the key within the array $_POST
//it's considered bad practise to directly insert the $_POST variable into the query but it's only an example. Calm down Your Common Sense! 
$get->execute();//executes the prepared statement
$get->bind_result($ID,$question);
while($get->fetch()){
    $questions[]=array('ID'=>$ID,'question'=>$question);
}
$get->close();
foreach($questions as $q){
    echo"<h3>".$q['question']."</h3>";
    //build your button system here.
}

这几乎就是你需要知道如何构建测试的基础知识。知道sql的功能和你的要求,你可以计划和构建更好的方法。我知道我对客户的桌子没什么感动,但我确定你会弄清楚;) 无论如何,我要去挖掘一些蓝色视频或其他东西。和平了!

哦!请记住,如果一次性学习太多,请分阶段进行。

  1. 首先,确保您的服务器上安装了PHP和SQL。有 如果你正在学习/练习,很多免费的。

  2. 其次,在SQL中构建表并将数据添加到它们中。

  3. 第三,&#39; get&#39;来自您构建的表格中的数据。

  4. 接下来,您希望使用数组构建数据dynamically (您自己收到并构建的数据)

  5. 然后制作您的回复

  6. 当然!发展并改善你的成绩!