0

これまでのところ、ユーザーがデータベースの特定の列を検索してすべての結果を表示できるようにする次の php があります。

<?php
require("header.php");
if(isset($_REQUEST['searching'])){ //check if form has been submitted
echo"<h2>Results</H2><p>";
connect('final');//connect to DB
//set the values from search form
$field = $_POST['field'];
$query = $_POST['query']; 

    $query = htmlspecialchars($query); // stop HTML characters
    $query = mysql_real_escape_string($query); //stop SQL injection

     $data = mysql_query("SELECT *
     FROM customer 
     INNER JOIN address ON customer.ID = address.customer_ID
     LEFT OUTER JOIN sites ON address.ID = sites.address_ID 
     WHERE customer.ID IN (SELECT customer.ID 
     FROM customer
     INNER JOIN address ON customer.ID = address.customer_ID 
     LEFT OUTER JOIN sites ON address.ID = sites.address_ID
     WHERE upper(customer.$field) LIKE'%$query%')") ;//query the DB with search field in colleumn selected//

     //$data = mysql_query("SELECT * FROM customer INNER JOIN address ON customer.ID = address.Customer_ID LEFT OUTER JOIN sites ON address.ID = sites.address_ID WHERE upper(customer.$field) LIKE'%$query%'") ;

    if($data === FALSE) {
    $error = 'Query error:'.mysql_error();
    echo $error;
    }
    else
    {
    while($results = mysql_fetch_array($data)){// puts data from database into array, loops until no more
            echo "<br>"; 
            echo $results['First_Name']; 
            echo " "; 
            echo $results['Surname']; 
            echo " "; 
            echo $results['Company_Name']; 
            echo " "; 
            echo $results['Telephone']; 
            echo " "; 
            echo $results['Alt_Telephone']; 
            echo " "; 
            echo $results['line_1']; 
            echo " "; 
            echo $results['line2']; 
            echo " "; 
            echo $results['town']; 
            echo " "; 
            echo $results['postcode'];
            echo " "; 
            echo $results['site_name'];


            //posts results from db query
        }
    }


        $anymatches=mysql_num_rows($data); //checks if the querys returned any results
            if ($anymatches == 0) 
                    { 
                        echo "Sorry, but we can not find an entry to match your query<br><br>"; 
                    } 

    } 

ただし、出力に echo を使用しているため、すべての結果がページの一番上に表示され、すべての html コンテンツがその下にプッシュされます。

HTMLコンテンツに表示されるようにフォーマットするにはどうすればよいですか? たとえば、検索ボタンの下。

4

3 に答える 3

0

そこにいくつかのhtmlタグが欠けていると思います。

        echo "<div>"; 
        echo $results['First_Name']; 
        echo " "; 
        echo $results['Surname']; 
        echo ", "; 
        echo $results['Company_Name']; 
        echo "</div><address>"; 
        echo $results['Telephone']; 
        echo "<br>"; 
        echo $results['Alt_Telephone']; 
        echo "<br>"; 
        echo $results['line_1']; 
        echo "<br>"; 
        echo $results['line2']; 
        echo "<br>"; 
        echo $results['town']; 
        echo " "; 
        echo $results['postcode'];
        echo "</address><div>"; 
        echo $results['site_name'];
        echo "</div>"; 

少し大げさな答えを許すと、あなたのコードは、あなたが PHP を学んでいることを示唆しています。

もしそうなら、オンラインの PHP チュートリアルは何年も前に頻繁に書かれたものであり、最悪の可能性を示すサンプル コードを完備しており、陳腐化のひどい状態にあることを覚えておいてください。

私の評価が正しければ、適切に設計されたフレームワークとともに PHP を学習することを検討してください。Silex は、この点で比較的簡単に理解できます。

検討したいその他のフレームワーク:

他にもたくさんあります。

于 2013-04-25T09:18:56.693 に答える