현재 일반 텍스트 기반 검색을위한 검색 상자로 구성된 데이터베이스를 만들고 표 형식으로 검색합니다. 실제 데이터는 17 열이지만 검색 결과는 5 열만 제공합니다. 5 열의 한 열은 나머지 열의 모든 데이터를 제공하는 추가 페이지에 대한 링크를 제공합니다. 데이터를 가져 오는로부터 5 열을 표시 내 페이지에 대한 PHP 코드는 -, 내가이 하나의 href
로 테이블의 모든 열을 분할하는 |
연산자를 사용하고 압축 된 것을 내가 여기 짓을 기본적으로PHP에서 폭발 배열의 절반에 대한 PHP에서 정의되지 않은 오프셋 오류가 발생했습니다
<?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>";
}
}
링크. 링크가에서 데이터를 보여줍니다 다음 페이지 -이 페이지는 무엇
<?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>";
?>
, 그것은 |
를 발견하고 기능을 폭발의 도움으로 색인을 제공합니다. 하지만 내 문제는 인덱스의 처음 4 개 값만 얻는 것입니다. 내가 원하는 것은 첫 번째 페이지에서 전달 된 이전 값의 17 개 값을 모두 표시해야한다는 것입니다. 왜 첫 번째 값만 구문 분석되고 나머지는 왜 분석하지 않는지에 대한 도움이 필요하십니까? 그리고 어떤 해결책이 있다면 그것은 또한 평가 될 것입니다. 미리 감사드립니다. PS - 'PHP에서 정의되지 않은 오프셋 오류'와 관련된 거의 모든 질문뿐만 아니라 많은 PHP 문서를 읽었지만 내 문제와 관련된 문제는 찾을 수 없습니다. 중복이 있으면 사과하고 싶습니다.
왜 이렇게합니까? 필드를'? rowid = id & field1 = row1 & field2 = row2 ....'와 같은 쿼리 문자열로 추가하거나 단순히 id를 보내면 다른 페이지에서 간단한 쿼리를 만들어 그 id를 가진 행을 가져옵니다. – hassan
@ 하산 -이 방법을 좀 더 자세히 설명해 주실 수 있습니까? 나는 실제로 HTML 페이지에있는 테이블 데이터를 얻는 데 이미 한 번 사용 된 mysql 쿼리를 어떻게 겹칠 수 있는지 전혀 모른다. 그리고 그 테이블 데이터에서 나머지 열을 실제로 가져 오는 방법을 모르겠습니다. – Srk
@hassan - 참조 할 수있는 설명서도 제공됩니다. – Srk