/ / wie MVC für die Suche in Codeigniter erstellen? - PHP, Codezeichner, Suche

Wie erstelle ich MVC für die Suche in Codeigniter? - PHP, Codezeichner, Suche

Ich bin sehr neu in CodeIgniter, was für mich bisher sehr schwierig war. Ich arbeite meistens nie mit Frameworks und das ist mein erstes Mal.

Ich verstehe MVC, aber ich weiß wirklich nicht wieerstelle eine Suche, auch nur eine einfache: Ich möchte nur, dass jemand ein Wort in einer Eingabe sendet und es in meiner Datenbank (mit Ajax oder nicht) durchsucht und die Antwort zurückgibt. Könnte mir jemand mit einigen Ideen helfen, wie ich vorgehen sollte? Ich verstehe, dass ich in der Ansicht meine divs, Eingaben und mehr setzen werde, und in der Steuerung werde ich meine Funktionen aufrufen, die mit meinem Modell interagieren werden. Ich habe Probleme damit, sie in CI zu integrieren, weil die Ansicht tatsächlich über den Controller gefüllt wird und ich glaube, dass ich die Funktionen davon nicht in der Ansicht verwenden kann.

Irgendwelche Hilfe bitte?

Antworten:

15 für die Antwort № 1

Beginnen Sie mit der Erstellung eines Controllers, der das sein wirdBearbeiten der Suchanfragen und Anzeigen der Suchseite, gefolgt von dem Suchbegriff, der an das Modell zur Datenbanksuche übergeben wird (und zurück an die Steuerung gesendet wird). Der Controller wird es an die Ansicht übergeben.

Ein kleines Beispiel;

Der Controller

class Search extends CI_Controller {

public function __construct()
{
parent::__construct();

$this->load->helper("form");

$this->load->model("search_model");
}

public function index()
{
$this->load->view("search_form");
}

public function execute_search()
{
// Retrieve the posted search term.
$search_term = $this->input->post("search");

// Use a model to retrieve the results.
$data["results"] = $this->search_model->get_results($search_term);

// Pass the results to the view.
$this->load->view("search_results",$data);
}

}

Das Model

class Search_model extends CI_Model {

public function get_results($search_term="default")
{
// Use the Active Record class for safer queries.
$this->db->select("*");
$this->db->from("members");
$this->db->like("username",$search_term);

// Execute the query.
$query = $this->db->get();

// Return the results.
return $query->result_array();
}

}

Die Ansicht zum Anzeigen des Suchformulars

<?php
echo form_open("search/execute_search");

echo form_input(array("name"=>"search"));

echo form_submit("search_submit","Submit");


?>

Die Ansicht zum Anzeigen von Ergebnissen

<div>
<?php
// List up all results.
foreach ($results as $val)
{
echo $val["username"];
}
?>
</div>

0 für die Antwort № 2

In CodeIgniter werden Sie höchstwahrscheinlich die post-Methode anstelle von get verwenden. Stellen Sie daher im Suchformular sicher, dass Sie die post-Methode verwenden.

beispielsweise

Aussicht:

<form action="<?=site_url("search_controller/search_function_in_controller")?>" method="post">
search: <input type="text" name="keyword" />
<input type="submit" value="Submit" />
</form>

Regler

<?php
class Search_controller extends CI_Controller {

public function search_function_in_controller()
{
$keyword = $_POST["keyword"]; // you can also use $this->input->post("keyword");
$this->load->model("Search_model");
$data["search_result"] = $this->search_model->search_user($keyword);
$this->load->view("search_result", $data);
}
}
?>

0 für die Antwort № 3

Modell

<?php
class Searchmodel extends CI_Model
{

public function __construct() {
parent::__construct();
}
function search($keyword)
{
$this->db->like("first_name",$keyword);
$query  =   $this->db->get("user");
return $query->result_array();
}
}

?>

Regler

<?php
Class Search extends CI_Controller
{

public function __construct() {
parent::__construct();
$this->load->model("searchmodel");

}


function search_keyword()
{
$keyword=$this->input->post("submit");
$data["users"]=$this->searchmodel->search($keyword);

$this->load->view("user/view", $data);

}
}
?>

Aussicht

<form class="form-inline" role="form" action="<?php echo site_url()."/search/search_keyword";?>" method="post">
<div class="form-group">
<input type="text" class="form-control" name="search" placeholder="Search by firstname">
</div>
<button type="submit" class="btn btn-info" name="submit" >Search</button>
</form>