我目前正在创建一个数据库,该数据库包含一般搜索文本的搜索框,并以表格格式提供搜索。实际数据为17列,但搜索结果仅为5列。 5列中的一列提供了指向另一页面的链接,该页面提供了来自其余列的所有数据。我的页面的PHP代码显示5个来自获取数据的列是
<?php
$con = new mysqli("localhost","root","","project");
if(!$con){
die("Database not found" .$con->connect_error);
}
$sw=$_POST['query'];
$sql= "SELECT * FROM ps1 WHERE Entry like '%".$sw."%' OR Prot_name like '%".$sw."%' OR Gene_name like '%".$sw."%' OR Function like '%".$sw."%' OR Org_name like '%".$sw."%'";
$res=mysqli_query($con,$sql);
$number=mysqli_num_rows($res);
echo "<h2>".$number."hits found</h2>";
echo"<br><table class='col3' border=1>
<tr><th>Uniprot ID
</th><th>Entry Name
</th><th>Protein name
</th><th>Gene name
</th><th>Sequence length
</th><th>Organism name
</th><th>Sequence
</th></tr>";
if(mysqli_num_rows($res) > 0)
{
while($row=mysqli_fetch_assoc($res))
{
echo "<tr>";
echo "<td><a href=\"Fullentry.php?rowid=id".$row['Entry']."|".$row['Entry_name']."|".$row['Prot_name']."|".$row['Gene_name']."|".$row['Taxonomic_lineage']."|".$row['Org_name']."|".$row['Length']."|".$row['Subcellular_loc']."|".$row['Intramembrane']."|".$row['Topology']."|".$row['Transmembrane']."|".$row['Function']."|".$row['GO']."|".$row['Cross_ref']."|".$row['Pubmed_ID']."|".$row['Interpro']."\">ENTRY</a></td>";
echo "<td>" . $row['Entry_name'] . "</td>";
echo "<td>" . $row['Prot_name'] . "</td>";
echo "<td>" . $row['Gene_name'] . "</td>";
echo "<td>" . $row['Length'] . "</td>";
echo "<td>" . $row['Org_name'] . "</td>";
echo "<td><a href=\"Sequence.php?rowid=" . $row['Entry']."|".$row['Sequence'] . "\">FASTA SEQUENCE</a></td>";
echo "</tr>";
}
}
基本上我在这里做的是,我使用|
运算符从表中拆分所有列并压缩成单个href
链接。显示链接数据的下一页是 -
<?php
/*Get the previous page data into the variable */
$row = $_GET['rowid'];
/*Explode using the marker*/
$row = explode("|", $row);
/*Check if all indices are present*/
print_r($row);
/*Printing all the data from the previous page*/
echo "<h3>Entry for".$row[0]."</h3>";
echo "<h4>Uniprot ID</h4>";
echo "<h4>".$row[0]."<h4>";
echo "<br><h4>Entry name from Uniprot</h4>";
echo "<h4>".$row[1]."<h4>";
echo "<br><h4>Protein name</h4>";
echo "<h4>".$row[2]."</h4>";
echo "<br><h4>Gene name</h4>";
echo "<h4>".$row[3]."</h4>";
echo "<br><h4>Taxonomic Lineage</h4>";
echo "<h4>".$row[4]."</h4>";
echo "<br><h4>Organism name</h4>";
echo "<h4>".$row[5]."</h4>";
echo "<br><h4>Sequence length</h4>";
echo "<h4>".$row[6]."</h4>";
echo "<br><h4>Subcellular location</h4>";
echo "<h4>".$row[8]."</h4>";
echo "<br><h4>Intramembrane</h4>";
echo "<h4>".$row[9]."</h4>";
echo "<br><h4>Topology</h4>";
echo "<h4>".$row[10]."</h4>";
echo "<br><h4>Transmembrane</h4>";
echo "<h4>".$row[11]."</h4>";
echo "<br><h4>Function</h4>";
echo "<h4>".$row[12]."</h4>";
echo "<br><h4>GO-terminologies</h4>";
echo "<h4>".$row[13]."</h4>";
echo "<br><h4>Cross references</h4>";
echo "<h4>".$row[14]."</h4>";
echo "<br><h4>Pubmed ID</h4>";
echo "<h4>".$row[15]."</h4>";
echo "<br><h4>Interpro ID</h4>";
echo "<h4>".$row[16]."</h4>";
echo "<br><h4>Protein Sequence</h4>";
echo "<h3>".$row[7]."</h3>";
?>
这个页面的作用是,找到|
并在explode函数的帮助下给出索引。
但我的问题是我只从索引中得到前4个值。我想要的是我需要显示来自第一页的早期传递值的所有17个值。任何帮助将被理解为什么只有第一个值被解析,为什么不解决?而且,如果有任何解决方案,它将被批评。先感谢您!
PS - 我经历了很多PHP文档以及几乎所有与php&#39;中未定义的偏移错误有关的问题,但我找不到与我的问题有关的任何问题。如果有任何重复,我想道歉。
答案 0 :(得分:1)
请参阅您发布的第一个代码段,$ _GET接收网址对您传递的字符串长度有限制。确保不要超过限制。 请参阅以下链接以获得更多说明。希望它可以帮助你。
Max size of URL parameters in _GET
P.S - 如果你能告诉我你第一段代码的全部代码,我可以帮你更多。
在这里编辑 -
首先,我将非常感谢您为第一个代码段提供完整代码的努力。 使用以下逻辑将条目发送到fullentry.php页面。
$entry = $_GET['rowid'];
$sql= "SELECT * FROM ps1 WHERE Entry like '%".$entry."%'";
$res=mysqli_query($con,$sql);
现在,获取fullentry.php文件中的条目值,然后使用下面的代码获取数据并显示在html上。
{{1}}
使用 $ res 对象,您只需从数据库中获取数据,就像在第一个代码段中一样。 喜欢 - $ res [&#39; Entry_name&#39;],$ res [&#39; Prot_name&#39;]
希望此解决方案可以为您提供帮助。 请点击这个答案很有用。