Php 布局从数据库中提取的网页信息
我甚至不知道该怎么问这个问题,但问题来了。我正在构建一个网页,让您可以从下拉菜单中选择一个测试,当您单击提交时,它应该将所有与该测试相关的问题加载到页面上。我的问题是布局。以下是我尝试执行的静态版本:Php 布局从数据库中提取的网页信息,php,html,mysql,Php,Html,Mysql,我甚至不知道该怎么问这个问题,但问题来了。我正在构建一个网页,让您可以从下拉菜单中选择一个测试,当您单击提交时,它应该将所有与该测试相关的问题加载到页面上。我的问题是布局。以下是我尝试执行的静态版本: 我需要该网站从数据库中提取所有必要的问题,并在下面的5个按钮或单选按钮中一次列出一个。每个测试都有不同数量的问题,所以我基本上需要网站继续构建这个布局,直到没有问题为止。我希望这是有道理的。到目前为止,我一直在使用Dreamweaver处理PHP、HTML和MySQL。我该如何着手完成这样的事情
我需要该网站从数据库中提取所有必要的问题,并在下面的5个按钮或单选按钮中一次列出一个。每个测试都有不同数量的问题,所以我基本上需要网站继续构建这个布局,直到没有问题为止。我希望这是有道理的。到目前为止,我一直在使用Dreamweaver处理PHP、HTML和MySQL。我该如何着手完成这样的事情,或者至少我该如何开始?非常感谢您的帮助。构建动态网页是一项非常基本的web编程技能。我将给你一个处理这个问题的基本思路 在您的例子中,您需要在HTML标记中有一个包含所有问题的容器。PHP脚本将连接到您的数据库,执行查询以获取所选测试的所有问题,并将它们加载到您的容器中 您可以在www.w3schools.com上找到有关构建动态网页的更多信息 从评论中,我想补充一点,您应该将所有问题放在表单容器下。构建一个由5个单选按钮组成的组件,并在插入问题后立即将该组件插入HTML。这一过程将继续下去,直到所有问题都包括在内
希望这能让您更好地了解解决方案。您需要查看循环。你可以这样做:
foreach($result as $value){
// You put the code you want here ,
//like printing the line with the question ,
//and making the buttons
}
在问题表上执行查询(例如,使用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循环:
使用PDO的数据库通信:
首先,您需要将问题存储在数据库中。我还假设你有客户可以访问这个?还有多个测试 首先,在数据库中构建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');
上面是一个简单的插入到mysql数据库中。如果您想开发成php和mysql查询,这些查询可能会变得更加复杂。我建议您在进一步开发之前,先了解mySQLi和sql的特性和功能。
因为我在tests中的name
列中添加了unique
。这意味着列中的数据不能重复/复制。以上述为例:
INSERT IGNORE INTO tests (name) VALUES('am I a coder');
如果已存在列名称
为“我是编码员”的条目,则上述内容将忽略插入。
上述查询将生成如下条目:
ID | name
1 | 'am I a coder'
<form name='whichTest' action='destination.php' method="POST">
<select name="tests">
<?php echo $options; ?>
</select>
<input name='submit' type='submit' value='select'/>
</form>
另外两个简单的例子
INSERT INTO questions (question,testID) VALUES('your chosen question','1');
INSERT INTO clients (username,password) VALUES('me','password');
现在使用PHP,您可以选择数据、插入数据和更新数据,仅举几个例子,使用上述要求和更多可能性。下面是一个关于如何使用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);
哎呀
现在使用PHP,我们有了一个称为foreach
循环的句柄!如果您以前在for
循环中使用过javascript中的数组,它类似于for(i=0;iThanks,我来看看。我熟悉动态页面构建,这不是真正的问题。我的问题是在将问题添加到网页时,让它在每个问题之后添加按钮。
echo "<select name='tests'>".$options."</options>";
<form name='whichTest' action='destination.php' method="POST">
<select name="tests">
<?php echo $options; ?>
</select>
<input name='submit' type='submit' value='select'/>
</form>
$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.
}