CodeIgniter implement search bar functionality - php

I'm trying create a search functionality to search in my database for the following information (Destination,Departure, dateOfDestination,dateOfDeparture,price,details)
I've created a search function in my model and controller, and my search bar in home page (as you can see from picture), but I don't know where to list a result and how can make the search bar work correctly. I believe I have to use JavaScript for that. Does anyone have any pointer or suggestions?
Model
public function search($keyword){
$this->db->like('mjestoPolaska',$keyword);
$query = $this->db->get('posts');
return $query->result();
}
Controller
public function search_keyword(){
$keyword = $this->input->post('keyword');
$data['results'] = $this->Posts_model->search($keyword);
$this->load->view('result_view', $data);
}
View
<table>
<?php foreach($results as $row){ ?>
<tr>
<td><?php echo $row->mjestoPolaska?></td>
<td><?php echo $row->mjestoOdredista?></td>
<td><?php echo $row->datumPolaska?></td>
<td><?php echo $row->datumPovratka?></td>
<td><?php echo $row->cijena?></td>
<td><?php echo $row->opis?></td>
</tr>
<?php } ?>
</table>

Related

codeigniter Undefined variable: finmasuk and if it disapear, datatable wont show

i know this is common question, bet i've tried everything on here and my problem not solved yet. im new at codeigniter and maybe PHP.
like what i've mention above. i have a problem with my code. error show when i try to get data from my database table and show them on html table.
1st error is, when i try to use "foreach" error says "Undefined variable: finmasuk".
2nd error is, when "Undefined variable: finmasuk" disapear, there's some error on my table.
this is my code..
controller
public function finmasuk(){
$this->load->model('m_input');
$data["finmasuk"] = $this->m_input->finmasuk();
$this->load->view("input/standar", $data);
}
model
public function finmasuk(){
$this->db->select("*");
$this->db->from("pemasukan");
$query = $this->db->get();
return $query;
}
view
<?php if($finmasuk->num_rows() > 0){
foreach($finmasuk->result() as $row) { ?>
<tr>
<td><?php echo $row->nomor;?></td>
<td><?php echo $row->tanggal_input;?></td>
<td><?php echo $row->jenis_pemasukan;?></td>
<td><?php echo $row->nominal;?></td>
<td><?php echo $row->keterangan;?></td>
</tr>
<?php }}
else
{ ?>
<tr>
<td colspan="5">No Data Found</td>
</tr>
<?php }?>
error says that "Undefined variable: finmasuk" but i think i have
$data["finmasuk"]
try this:
model
public function finmasuk(){
$this->db->select("*");
$this->db->from("pemasukan");
$query = $this->db->get();
return $query->result();
}
View
<?php if(!empty($finmasuk)){
foreach($finmasuk as $row) { ?>
<tr>
<td><?php echo $row->nomor;?></td>
<td><?php echo $row->tanggal_input;?></td>
<td><?php echo $row->jenis_pemasukan;?></td>
<td><?php echo $row->nominal;?></td>
<td><?php echo $row->keterangan;?></td>
</tr>
<?php }}
else
{ ?>
<tr>
<td colspan="5">No Data Found</td>
</tr>
<?php }?>
You could try a few debugging tricks to check if your query is returning any rows at all.
Controller
public function finmasuk(){
$this->load->model('m_input');
$rowsReturned = $this->m_input->finmasuk()->num_rows();
echo $rowsReturned;
}
Model
public function finmasuk(){
return $this->db->get('pemasukan');
}
Another Option - This checks for query results as an array
Controller
public function finmasuk(){
$this->load->model('m_input');
$resultArray = $this->m_input->finmasuk()->result_array();
var_dump($resultArray);
echo "<br>";
echo "Count - ".count($resultArray); //Get number of rows in
}
Model
public function finmasuk(){
return $this->db->get('pemasukan');
}

not able to retrieve data from database using codeigniter

I am new to CodeIgniter. I have retrieved data from one table but I'm not able to retrieve the data from another table. The view part is not working. Due to some reason the PDF is displaying blank (using tcpdf). Can we fetch it as array? If yes, then how can we fetch it as array?Some of the data appears to be printed below the button that I press.It does not display on the pdf that is generated after the we click on the button.
code :
controller
index(){
$this->load->database();
//load the model
$this->load->model('Order_model');
//load the method of model
$data['h']=$this->Order_model->select();
//return the data in view
$this->load->view('includes/orderPdf', $data);
}
model
public function select()
{
//data is retrive from this query
$query = $this->db->get('master_user');
return $query;
}
view
<?php
foreach ($h->result() as $row)
{
?><tr>
<td><?php echo $row->mobile_no ?></td>
<td><?php echo $row->country ?></td>
</tr>
<?php }
?>
Best way to set up is probably similar to:
Controller:
$this->load->model('Order_model', 'Order');
$data['orders'] = $this->Order->getOrder();
Model:
public function getOrder() {
$q = $this->db->get('master_user');
return $q->num_rows() ? $q->result_array() : [];
}
View:
<?php foreach($orders as $order) { ?>
<tr>
<td><?=$order['mobile_no']?></td>
<td><?=$order['country']?></td>
</tr>
<?php } ?>
Now you can also add an if(empty($orders)) and put in "no orders to show" or similar.

Google Books Display Thumbnail in Codeigniter

Using Codeigniter 3, I would like to display a HTML table consisting of some book details, namely Item ID, Item Image and Item Title. I would like to populate the Item Image via Google Books.
So far my code works, in the sense that I can retrieve all the data from the MySQL database and display it in a simple HTML table. However I'm not sure how to populate the image field in the HTML table with the corresponding image from Google Books.
I am retrieving the ISBN from my database, can I use this to lookup the Google Books URL?
I tried to create a foreach as you will see but it doesn't work so I have commented it out. The error message I receive in the foreach is;
Message: Undefined index: items on line 23
My current code is below;
Model
class Items_model extends CI_Model {
public function itemList() {
$query = $this->db->get('item', 10);
return $query->result_array();
}
}
Controller
class Items extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('items_model');
$this->load->database();
}
public function index() {
$data['items'] = $this->items_model->itemList();
//foreach ($data['items'] as $row)
//{
// $page = //file_get_contents("https://www.googleapis.com/books/v1/volumes?q=isbn:".$row['item_isbn']);
// $bookData = json_decode($page, true);
// $data['BookImage'] = '<img src="'.$bookData['items'][0]['volumeInfo']['imageLinks']['thumbnail'].'" alt="Cover">'; <-- line 23
//}
$this->load->view('item_view', $data);
}
}
View
<table>
<tr>
<td><strong>ID</strong></td>
<td><strong>ISBN</strong></td>
<td><strong>Image</strong></td>
<td><strong>Title</strong></td>
</tr>
<?php foreach ($items as $item): ?>
<tr>
<td><?php echo $item['item_id']; ?></td>
<td><?php echo $item['item_isbn'] ?></td>
<td><?php // what goes here? ?></td>
<td><?php echo $item['item_title']; ?></td>
</tr>
<?php endforeach; ?>
</table>
Any help is appreciated.
You need to use the Googlebooks API to get the id of your book.
First you have to make a request in this way:
foreach ($items as $item):
$data = #file_get_contents('https://www.googleapis.com/books/v1/volumes?q=isbn+".$yourISBN."');
$data = json_decode($data);
$data = $data->items[0]->id;
// Next you have to insert $data(the item_id) inside of one of the
followings links:
// "smallThumbnail": "https://books.google.com/books?id=zyTCAlFPjgYC&printsec=frontcover&img=1&zoom=5&edge=curl&source=gbs_api",
// "thumbnail": "https://books.google.com/books?id=zyTCAlFPjgYC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api",
// "small": "https://books.google.com/books?id=zyTCAlFPjgYC&printsec=frontcover&img=1&zoom=2&edge=curl&source=gbs_api",
// "medium": "https://books.google.com/books?id=zyTCAlFPjgYC&printsec=frontcover&img=1&zoom=3&edge=curl&source=gbs_api",
// "large": "https://books.google.com/books?id=zyTCAlFPjgYC&printsec=frontcover&img=1&zoom=4&edge=curl&source=gbs_api",
// "extraLarge": "https://books.google.com/books?id=zyTCAlFPjgYC&printsec=frontcover&img=1&zoom=6&edge=curl&source=gbs_api"
//Example:
$thumbnail = "https://books.google.com/books?id=".$data."&printsec=frontcover&img=1&zoom=5&edge=curl&source=gbs_api";
endforeach;
And then you've got your thumbnail.
Note that your id must have this format "zyTCAlFPjgYC".
Have a look at the doc

I cant pass variable from controller to view in Codeigniter

I get error saying:
A PHP Error was encountered
Severity: Notice
Message: Undefined variable: data
Filename: views/businessinfo_view.php
My model:
function getPosts(){
$query = $this->db->query("SELECT * FROM customer WHERE
customer_id=12;");
return $query->result_array();
}
My controller:
function ind() {
$data['customerinfo'] = $this->user_model->getPosts();
$this->load->view('businesssinfo_view', $data);
}
MY view:
<?php foreach($data as $d){?>
<tr>
<td><?php echo $d->customer_id;?></td>
<td><?php echo $d->first_name);?></td>
</tr>
<?php }?>
I tried 100 different ways, still can pass the variables, I know my query is correct, I can fetch and echo data in controller, I can't just pass it into view. someone please help me!
function controller() {
$data['customerinfo'] = $this->user_model->getPosts();
$this->load->view('businesssinfo_view', $data);
}
Whenever you pass variable in view, try to access it with key inside view.
This $customerinfo variable will have all your data.
For EX. $customerinfo because your actual variable is $data['customerinfo'].
if var name is $data['extraVal'], in view access through $extraVal.
Try if you have the $data['customerinfo'] then on the view you would use like $customerinfo
http://www.codeigniter.com/user_guide/general/views.html#creating-loops
Controller
function ind() {
$data['customerinfo'] = array();
$data['customerinfo'] = $this->user_model->getPosts();
$this->load->view('businesssinfo_view', $data);
}
Model
function getPosts(){
$this->db->where('customer_id', '12');
$query = $this->db->get('customer');
return $query->result_array();
}
View
<?php foreach($customerinfo as $d){?>
<tr>
<td><?php echo $d['customer_id'];?></td>
<td><?php echo $d['first_name'];?></td>
</tr>
<?php }?>
When model function returns result_array() <?php echo $d['first_name'];?>
When model function returns result() <?php echo $d->first_name;?>
Example found here
Try exactly this :
My model:
function getPosts(){
$query = $this->db->query("SELECT * FROM customer WHERE
customer_id = '12' ");
return $query->result();
}
My controller:
function ind() {
$data['customerinfo'] = $this->user_model->getPosts();
$this->load->view('businesssinfo_view', $data);
}
MY view:
<?php
if(!empty($customerinfo))
{
foreach($customerinfo as $d){?>
<tr>
<td><?php echo $d->customer_id;?></td>
<td><?php echo $d->first_name;?></td>
</tr>
<?php }
}
else{
echo 'Some problem with the variable !! :(';
}
?>

Display 2 tables on codeigniter

im new to codeigniter and php, need some enlightment to display 2 tables with mvc method. just displaying two tables in one page (camera and visitor table). here is my code
Model :
function m_report() {
$camera = $this->db->get('camera');
return $camera->result();
$report = $this->db->get('visitor');
return $report->result();
}
View:
<?php foreach($data1 as $report){ ?>
<tr>
<td><?php echo $report->Country; ?></td>
<td><?php echo $report->Days; ?></td>
</tr>
<?php } ?>
<?php foreach($data_camera as $camera){ ?>
<tr>
<td><?php echo $camera->cameratype; ?></td>
</tr>
<?php } ?>
Controller :
function report(){
$data['data_camera']=$this->m_data->m_report();
$data1['data1']=$this->m_data->m_report();
$this->load->view('v_report',$data,$data1);
}
the problem is, i can display camera table but visitor got error Message: Undefined variable: data1
Can anyone help me to figure it out? Much appreciate
You can only return ONE thing from a method - once you return something, execution of code stops.
function m_report() {
$camera = $this->db->get('camera')->result();
$report = $this->db->get('visitor')->result();
return array_merge($camera, $report);
}
Now you get an array with all the results from both "camera" and "visitor". You can specify it out if you'd like with an associative array.
function m_report() {
$data['camera'] = $this->db->get('camera')->result();
$data['visitor'] = $this->db->get('visitor')->result();
return $data;
}
you can not make 2 returns in one method
function m_report() {
$camera = $this->db->get('camera');
return $camera->result();
$report = $this->db->get('visitor');
return $report->result();
}
i think it is better to make each query in single function
function m_camera_report() {
$camera = $this->db->get('camera');
return $camera->result();
}
function m_visitor_report() {
$report = $this->db->get('visitor');
return $report->result();
}
then call them separately in controller
function report(){
$data['data_camera']=$this->m_data->m_camera_report();
$data['data_visitor']=$this->m_data->m_visitor_report();
$data1['data1']=$this->m_data->m_report();
$this->load->view('v_report',$data,$data1);
}

Categories