PHP - 搜索数据库并在同一页面上返回结果

时间:2017-03-16 21:59:16

标签: php html mysql

非常感谢你的时间。

我正在为我的业务创建CRM。这将是非常基本的,但包括我的行业在CRM中特别需要的一些关键功能,而且似乎不存在于任何地方,但我离题了。

我目前正在网络应用中搜索搜索功能,搜索客户端并在搜索表单正下方的下拉菜单中返回结果。在该列表中选择客户端后,用户将被重定向到显示与该客户端相关的所有信息的页面。

我的问题与此搜索功能有关。我目前在搜索结果中将结果作为ECHO返回,它看起来非常混乱。 PHP最终隐藏在html表单中。必须有一种更简单,更简洁的方法来将结果作为列表返回。

SIDE注意:返回的搜索结果甚至不必在下拉列表中,我只是随着时间的推移而来到这个解决方案,因为它允许我将所选用户传递给下一个PHP使用ID的隐藏表单字段轻松地在下一页上编码。

这是我到目前为止所做的事情。有人可以帮我清理一下吗?

import Foundation
import UIKit
import GoogleMaps
import GooglePlaces

class selectAddress: UIViewController, UISearchBarDelegate {

    // Present the Autocomplete view controller when the button is pressed.
    @IBAction func autocompleteClicked(_ sender: UIButton) {
        let autocompleteController = GMSAutocompleteViewController()
        autocompleteController.delegate = self
        self.present(autocompleteController, animated: true, completion: nil)
    }
}

extension ViewController: GMSAutocompleteViewControllerDelegate {

    // Handle the user's selection.
    func viewController(_ viewController: GMSAutocompleteViewController, didAutocompleteWith place: GMSPlace) {
        print("Place name: \(place.name)")
        print("Place address: \(place.formattedAddress)")
        print("Place attributions: \(place.attributions)")
        dismiss(animated: true, completion: nil)
    }

    func viewController(_ viewController: GMSAutocompleteViewController, didFailAutocompleteWithError error: Error) {
        // TODO: handle the error.
        print("Error: ", error.localizedDescription)
    }

    // User canceled the operation.
    func wasCancelled(_ viewController: GMSAutocompleteViewController) {
        dismiss(animated: true, completion: nil)
    }

    // Turn the network activity indicator on and off again.
    func didRequestAutocompletePredictions(_ viewController: GMSAutocompleteViewController) {
        UIApplication.shared.isNetworkActivityIndicatorVisible = true
    }

    func didUpdateAutocompletePredictions(_ viewController: GMSAutocompleteViewController) {
        UIApplication.shared.isNetworkActivityIndicatorVisible = false
    }

    func viewController(viewController: GMSAutocompleteViewController!, didFailAutocompleteWithError error: NSError!) {
        // TODO: handle the error.
        print("Error: ", error.description)
    }

}

2 个答案:

答案 0 :(得分:1)

您的选择可以写成如下:

echo '<option value="$row[client_id]">$row[firstname] $row[lastname] - $row[city], $row[state]</option>';

另外,请注意,不推荐使用mysql_函数并以错误的方式使用会非常危险,这会使您的网站容易受到攻击。

使用mysqli或PDO使用预准备语句。

答案 1 :(得分:1)

...
$r_query = mysql_query($sql); 
while ($row = mysql_fetch_array($r_query)) { ?>

    <option value='<?= $row['client_id'];?>'>
         <?= $row['firstname'] . " " . $row['lastname']; ?> - 
         <?= $row['city'] . ", " . $row['state']; ?>
    </option>

<?php  }}  ?>

或者其中的一些变化。重点是,您的PHP不必是连续的块,您可以随时关闭PHP标记,使用常规HTML继续,然后打开一个新的PHP标记并继续循环。

此外,在上面的示例中,<?=<?php echo的缩写。

此外,在您的示例中,您使用的是mysql_函数,这些函数已在PHP5的更高版本中弃用,并在PHP7中删除。最好在mysqli_PDO(您也可以使用MySQL数据库)进行研究。

最后,一旦你开始使用其中任何一个,查看预备语句,这将使你的代码功能更好/避免SQL注入。