Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 布局从数据库中提取的网页信息_Php_Html_Mysql - Fatal编程技术网

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.
}