2016-12-13 14 views
0

私のコードで何が欠けているか知りたいです。リストからデータベースを選択してからPHPでクエリを実行します

私は、このHTMLコードを持っている:

<html> 
    <head> 
    <title>Human gene catalog</title> 
    </head> 
<body> 
    <h1>Reference sequence and Gene Ontology catalog</h1> 
    <p> 
    <b>1.Search for a gene:</b> 
    <form action=prueba.php method=post> 
     <select name=organism> 
     <option value=1>Human</option> 
     <option value=2>Mouse</option> 
     <option value=3>Zebrafish</option> 
     <option value=4>Fruit fly</option> 
     </select> 
     <label>Please select a gene:</label> 
     <br/> 
     <input type=text name=gene> 
     <br/><br/> 
     <input type=submit name=submit value=Submit> 
    </form> 
    </p> 
</html> 

そして、このPHPコード:私が達成したいものを基本的に

<?php 
    $gene = $_POST["gene"]; 
    $specie = $_POST["organism"]; 

    $enlace = mysqli_connect("localhost","root","******","refGene"); 
    if (mysqli_connect_errno()) { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    if ($specie == 1) { 
     mysqli_select_db($enlace,"refGene_human"); 
    } elseif ($specie == 2) { 
     mysqli_select_db($enlace,"refGene_mouse"); 
    } elseif ($specie == 3) { 
     mysqli_select_db($enlace,"refGene_zebrafish"); 
    } elseif ($specie == 4) { 
     mysqly_select_db($enlace,"refGene_fruitfly"); 
    } else { 
     echo "The gene is not in database"; 
    } 

    $result = mysqli_query($enlace,"select * from (here I dont know what to put,if with one specie, here I put the name of the table) where name2 like '%$gene%'"); 

    echo "<h1>Gene Reference Results</h1>"; 

    echo "<table cellspacing=3 cellpadding=4 border=1 bgcolor=#dddddd>"; 
    echo "<tr align='center'><th>Transcript</th><th>Gene</th <th>Chromosome</th><th>Strand</th><th>Gene_Start</th><th>Gene_End</th><th>CDS_Start</th><th>CDS_End</th><th>ExonCount</th>"; 

    while ($extraido = mysqli_fetch_array($result)){ 
     echo "<tr>"; 
     echo "<td>".$extraido['name']."<br/>"; 
     echo "<td>".$extraido['name2']."<br/>"; 
     echo "<td align='center'>".$extraido['chrom']."<br/>"; 
     echo "<td align='center'>".$extraido['strand']."<br/>"; 
     echo "<td align='right'>".$extraido['txStart']."<br/>"; 
     echo "<td align='right'>".$extraido['txEnd']."<br/>"; 
     echo "<td align='right'>".$extraido['cdsStart']."<br/>"; 
     echo "<td align='right'>".$extraido['cdsEnd']."<br/>"; 
     echo "<td align='right'>".$extraido['exonCount']."<br/>"; 
    } 
    echo "</table>"; 

    mysqli_free_result($result); 
    mysqli_close($enlace); 

は、HTML文書中の種と遺伝子名を選択し、ということです、 PHPにアクセスし、specie(1,2,3,4)の値に応じて対応するデータベースを選択し、クエリを実行して情報を検索します。

PHPのHTMLとifステートメントの選択リストがなくても、それを動作させるには適切なコードがありますが、1つの仕様だけですが、複数のコードで動作させたいと思います。

PHPのif文の前にいくつかの変数を宣言してから、この変数をクエリして、どのテーブルを選択するかを問い合わせ関数に伝える必要があると思います。

しかし、正しい構文が何であるか分かりません。

答えて

0
if ($specie == 1) { 
    mysqli_select_db($enlace,"refGene_human"); 
    $database = 'refGene_human'; 
} 
elseif ($specie == 2) { 
    mysqli_select_db($enlace,"refGene_mouse"); 
    $database = 'refGene_mouse'; 
} 
elseif ($specie == 3) { 
    mysqli_select_db($enlace,"refGene_zebrafish"); 
    $database = 'refGene_zebrafish'; 
} 
elseif ($specie == 4) { 
    mysqly_select_db($enlace,"refGene_fruitfly"); 
    $database = 'refGene_fruitfly'; 
} 
else { 
    echo "The gene is not in database"; 
} 

$result = mysqli_query($enlace,"select * from '$database' where name2 like '%$gene%'"); 
+0

データベースの代わりにテーブルを作成する必要があります。 1つのデータベースに対してのみ接続が行われます。 $ enlace = mysqli_connect( "localhost"、 "root"、 "******"、 "refGene");このデータベースに複数のテーブルを作る代わりに、データベースrefGeneではより多くのデータベース –

+0

を作り、私は上記のrefGene_human、refGene_mouse、refGene_zebrafishとrefGene_fruitfly –

+0

OK great.than呼ばれ、必要なすべてのテーブルを持っているあなたと一緒に動作します。上記の文の1つが真となり、そのデータベース名がデータベース変数に格納されます。そのテーブルはクエリのデフォルトテーブルになります –

関連する問題