Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.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
如何从多个SQL表中获取值并在html/php表中显示?_Php_Html_Mysql_Forms_Html Table - Fatal编程技术网

如何从多个SQL表中获取值并在html/php表中显示?

如何从多个SQL表中获取值并在html/php表中显示?,php,html,mysql,forms,html-table,Php,Html,Mysql,Forms,Html Table,我有一个名为result的SQL数据库,其中包含表res和sub。 例如 res表格列和内容如下: sno regno name sub1 sub2 sub3 sub4 sub5 1 1DU12CS100 student1 70 80 85 70 90 2 1DU12CS101 student2 75 70 90 80 70 3 1DU12EE015 student3

我有一个名为
result
的SQL数据库,其中包含表
res
sub
。 例如
res
表格列和内容如下:

sno regno        name       sub1  sub2  sub3  sub4  sub5  

1   1DU12CS100   student1   70    80    85    70    90     
2   1DU12CS101   student2   75    70    90    80    70
3   1DU12EE015   student3   80    85    70    50    65
4   1DU14CS123   student4   88    85    85    90    70
5   1DU13ME050   student5   85    90    70    60    55
表格列和内容如下:

Sno   batname     sub1      sub2       sub3       sub4       sub5

1     1DU12CS     Maths     English    Hindi      Urdu       Social 
2     1DU12ME     Sanksrit  Chinese    Japanese   French     Dutch
3     1DU12EE     Circuit   Electrical Electronic Maths      Hindi
4     1DU14CS     Hindi     Maths      Urdu       Science    Maths
5     1DU13ME     Computer  Maths      Electrical Mechanical GK 
我想从表
res
中获取一些值,从表
sub
中获取一些值,并显示在php/html表中

1DU12CS100  -- 
                                   1DU ->college code
                                   12 ->Student admission year
                                   CS ->computer science
                                   100->roll no of student
当有人以php形式输入1DU12CS100时,结果应该如下所示

Subjects    Marks

Maths       70
English     80
Hindi       85
Urdu        70
Social      90
当有人输入1DU13ME050时,显示屏应为

Subjects      Marks

Computer      85
Maths         90
Electrical    70
Mechanical    60
GK            55
php表单代码是

<!DOCTYPE HTML>
<html> 
<body>

<form action="result.php" method="post">
Enter your Reg No: <input type="text" name="regno"><br>
<input type="submit">
</form>

</body>
</html>

输入您的注册号:
result.php代码是//此php代码中应该做哪些更改

<?php
$servername = "localhost";
$username = "myresult";
$password = "abcdefg";
$dbname = "myresult";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$regno = mysqli_real_escape_string($conn, $_POST['regno']);

$sql = "SELECT * FROM myresult WHERE regno LIKE '$regno'"; // What changes should be here ??
$result = $conn->query($sql);
$columns = array();
$resultset = array();
while ($row = mysql_fetch_assoc($result)) {
    if (empty($columns)) {
        $columns = array_keys($row);
    }
    $resultset[] = $row;
}


if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "{$row['sub1']}{$row['sub2']}"; // What changes should be made here??



// Print the data
while($row = mysql_fetch_row($result)) {
    foreach($row as $_column) {
        echo "{$_column}";
    }
}
    }
} else {
    echo "Result Not Found";
}
$conn->close();

?>

(我没有列出所有的列。由于列的名称相同,因此必须指定别名。更改名称将是一个好主意-subn不是一个好名称。)

然后在下面

while ($row = $result->fetch_assoc()) { 
    echo "{$row['ressub1']}{$row['subsub1']}";

我只是觉得sql查询中的内部连接应该可以做到这一点。有些人认为:

SELECT * FROM res r INNER JOIN sub s ON r.id = s.id WHERE regno LIKE '1DU12CS100';

这看起来只是一个开始(这里有太多的事情要做),但对于初学者来说,您可以在开始时将SQL查询修改为类似这样的内容,因为batname似乎作为所有regno变量的开始而存在

$sql = "SELECT regno as batname FROM myresult WHERE regno LIKE '{$regno}%'"; 
然后您可以将其转换为一个变量,例如
$batname=$row['batname']

然后可以使用
$batname
作为链接表之间数据的方法。但是,您需要做更多的工作,因为存在一些确切的字符串,这些字符串意味着什么。因此,您需要在
$batname
中的某些位置识别特定字符串以识别其含义。这将不得不自行分解。最好创建一个新的表来标识主题名称,以匹配由此创建的字符串

换句话说,您的脚本实际上只是一个开始。一旦有了识别字符串中每个元素的方法(同样,查找表会让您的生活变得更轻松),您就可以开始编写php脚本了

下面是一个可以使用的查找表示例

    code    name
    ---     ----
    CS      Computer Science

等等(我很难说出这些代码是怎么回事,但我想你知道它们都是什么意思)。您可能应该为每个有意义的片段提取这些数据。

通常不赞成使用id的子字符串。而是分别存储batname id和学生id。在很多方面都很容易。正如彼得·鲍尔斯刚才所说的。您可以获取子字符串,但必须绝对确定它们是唯一存在的地方。我强烈建议扩展数据库并使用它,而不是依赖您的
regno
字段;除非你被迫这样做(这看起来像是旧穿孔卡片式数据管理的残余),否则我会重组你的数据。“规范化”是你应该在谷歌上研究的术语&找到一些文章或教程。很好地重构数据库将在未来带来巨大的收益。。。等待的时间越长,事情就越难……谢谢大家的帮助。我对PHP和SQL非常陌生。我所做的就是在谷歌上搜索并从一些网站上学习。。。我想要的是,您可以从这里看到并通过输入1DS13CS001、1NH13CS052、1OX13CS001等进行检查。。1是班加罗尔地区的代码,接下来的2个字母是学院代码,接下来的2个字母是入学年份,接下来的2个字母是分校/课程代码,接下来的3个字母是注册号。。。你可以在这里查大学代码。。。我不知道最好的方法来安排数据库,并从中获取结果。。。在此方面的任何帮助都将不胜感激!你不明白我的问题。。。SNo仅用于删除或编辑行。。。我尝试了你的代码,但它不起作用…我想要的是,当有人输入1DU12CS100时,然后从batname为1DU12CS的子表中获取主题,并从regno为1DU12CS100的res表中获取结果…感谢你的帮助和指导,在这方面应该做些什么。。。但我对这个很陌生,所以我不能自己做,或者我不知道如何在数据库中实现它。。。我现在的主要目标是,当有人输入1DU12CS100时,将从batname为1DU12CS的子表中获取主题,并从regno为1DU12CS100的res表中获取结果,结果应以php形式显示。。。请帮助我编写代码…我真正想要的是您完全理解的,我确信您的代码一定会满足我的需要,但出现的一个问题是…我从phpmyadmin SQL box得到的错误是#1305-函数akfashio_result.substr不存在。甚至从result.php页面我也得到了。。。结果未找到将您在phpmyadmin中尝试的精确查询复制/粘贴到此处的注释中。很抱歉,出现了一些错误。。。早些时候我执行了subm.batname=submstr(res.regno,0,7),因为我的表名是subm,所以我认为它应该是submstr,但后来我知道substr是一个内置函数…我创建了一个单独的表sub和res…现在我执行了。。。从sub.batname=substr(res.regno,0,7)上的res JOIN sub中选择sub.batname,sub.sub1作为subsubsub1,res.sub1作为ressub1,其中regno类似于'1DU12CS100';但结果是MySQL返回一个空结果集(即零行)。(询问花了0.0010秒)是的,我得到了。。。。sub.batname=substr(res.regno,1,7)。。。它应该是1,7而不是0,7。。。我不知道substr这个词,所以我在想我该怎么做。。。但当我知道这是一个函数时,我在谷歌上搜索并找到了,然后我更改了代码。。。。现在它正在工作。。。
    code    name
    ---     ----
    CS      Computer Science