In my project there is list of some records. User can search the records by project name. After search user can edit particular record. After edit when user click on Update button right now it is redirecting to list page but the search result gone and all records are displaying.
After Update i want to display the searched records only not all. How to get search key back ? I dont want to use session for that if any other better way.
I am using codeigniter.
For example:
There is a list of 10 records. User search the records by "ABC". Result come which has "ABC" project like 5 records come. Then user edit one record and update it. After update I wan to display that 5 records with search key "ABC" only. Right now it is displaying 10( ALL) records because i am redirecting on list page without search key. I have no idea how to do it. :(
What i would do personally is something like this on my list Page i would have a form which would be submitted to search function through GET method. This way i would have all my search Params in the URL and my URL would be something like this :
exampledomain.com/users?name=steve&age=23
Now for the edit page i would generate a link with a special parameter say : lastpage whose value would be some encoded form of the current search params. So when the user would go to the edit page the URL would be somthing like this:
exampledomain.com/users/edit/34?lastpage=erasc1235234safvdadsrgdfgbvcdfgrt435
when the edit functunality is completed. I would pick this lastpage Param form $_GET['lastpage'] ( or in CI you can use $this->input->get('lastpage')) to get the encoded value of lastpage and decode that to get all the previous URL search Params. and redirect the user to the serach function again with the search params attached to the URL.
I solved the same problem i had with dividing the view to two types
1) the normal view which shows all records and
2) the other view which shows all recently searched records for the last searched key.
To achieve this u need to store the searched records' ids and place from which the records have been taken to be stored in a temporary DB Table like TableforSearch and store the search key like 'ABC' in session.
On search of the Key 'ABC' find the ids of the records which matches the Key and save it to Table TableforSearch along with the Search Key and UserId.
Then use the Session to get the Key and search the table with the Key in Session to fetch the row that has All the Ids of the Searched Key.
For Error Handling see if the Ids present in Table have not been deleted for that Record.
And finally on Showing of searched items Show the second Page , for the other show normal first page
In order to get the keyword that has been type. You have three options
Save keyword as GET variable
Save keyword as hidden input
Save keyword as SESSION variable
Save keyword as COOKIEvariable
Since that you don't to choose the option 3 and 4. Your only option is to create a GET variable.Just add domain.com/controller/function?keyword=ABCand get that on controller as rldecode($_GET['keyword']); or create hidden input where you can save you value and fetch that value.
One way around is that, when user searches anything in list page (I hope your list page and search page are the same) than every time on new search, store the search keywords in localStorage and when user updates the record than redirect to list page along with your search keywords from localStorage. (This is suggested only if your list page and search page are the same. i.e. you handle the search with some parameters passed to list page.)
save your search criteria in a session variable $_SESSION['mysearch'] = 'ABC' and use it when redirecting header("Location: /mysearch.php?criteria=" . urlencode($_SESSION['mysearch'])).
Then in your "mysearch.php" you would ureldecode($_GET['criteria']), run the search again and present the results.
Related
I've been searching for several days now trying to find how to retrieve the item id of a select item from a mySQL database on a wordpress website.
I have a database of several hundreds of recipes. They are all displayed in a list on a certain page. I then want to be able to click on one of the recipes in the link and be sent to a unique recipe.php page.
The list of all recipes is on main-page.php. On this page, I have created the following:
echo '<td class="recipe"><a href=recipe?id='.$id.'><div class="recipe-container"><img src="'.$img.'" id="recipe-image"/>';
echo '<div class=recipe_name>'.$nam.'</a></div>';
As you can see, clicking on a recipe with the id of 4 would send you to www.example.com/recipe?id=4.
My question is, how do I tell the code to recognize that we are on the page for recipe #4, so that I can display its unique details? In particular, what do I write in recipe.php so that I can display the unique content for the selected recipe?
create an onload() event on the recipe.php, then check for $_SERVER['QUERY_STRING'] to retrieve id value and retrieve data from database based on the value
Found the awnser. All I had to do was:
$id = $_GET['id']
Had no idea it would be that easy.
What is the best way to make the data available to not signed in users but at the same time keep the set up of an individual user who created it.
I have a site where you can create a table of data. Everything is filtered by $current_user->ID. When the user complete his table, I would like to create the option to publish his table of data. How can I do that if all is filtered by the $current_user->ID? So if you aren't signed it you will not get any data because the Select query won't by able to compare it to anything.
Any ideas?
use $_GET element to display user_id
Is there a way to call field rows in a URL without using the column name??
So I currently have a posting site where users can select category or subcategories of choice from drop downs, how it's currently setup my site outputs links to the categories chosen such as..
topics.php?category=Food&sub_cat=Pies
topics.php?sub_cat=Pies
This allows users to go to either one of the links, or both
topics.php?category=Food&sub_cat=Pies
To give more functionality I am looking at adding textboxes instead of drop downs, the problem is users will more than likely enter the data in different boxes than other users, ie.
User 1. catbox: Food subcatbox: Pies
User 2. catbox: Pies subcatbox: Food
So in this case my current URL system won't return accurate results, so my question is would there be a way where "category" or "subcategory" could be replaced and just put the results together without them being listed in 2-5 different fields therefore not returning all the results that = to that value? "food" or "pie" in this example.
topics.php?xxx=Food&xxx=Pies
or
topics.php?xxx=Pies&xxx=Food
Looking at So homepage if you click "php" it will put php in the URL, click mysql and it will put "php+mysql" that sort of thing.
you can use parent child method in your database.your table would be like this
id - parent_id - category_name - depth
when you want to insert a data to your table it's depth will be one plus it's parent depth
when someone post to your page you first take query witch of the inputs has most depth then that will be your subcategory.
Calling field rows via parameters in your URL may be a very bad idea. It's a perfect way to allow a massive SQL injection attack. So, the answer is probably "yes, but HOLY MOLY PLEASE DON'T!"
Now it may be that your code is parsing these out on the back end and protecting them via any of a variety of methods, I can't tell from the amount of code posted.
I currently have a PHP form that uses AJAX to connect to MySQL and display records matching a user's selection (AJAX: Display MySQL data with value from multiple select boxes)
As well as displaying the data, I also place an 'Edit' button next to each result which displays a form where the data can be edited. My problem is editing unique records since currently I only use the selected values for 'name' and 'age' to find the record. If two (or more) records share the same name and age, I am only able to edit the first result.
Let's assume your file for editing is edit.php. Then, in the file where you generate the edit links, try changing your edit button link as follows:
'edit'
Then you will be able to access ID variable as
echo $_REQUEST['ID'];
Note that the ID is case sensitive. Let me know how it goes.
when displaying records from ajax, also send the primary field(id in most cases) along with name and age
and when u are displaying these data along with edit incorporate that primary field with edit
I've seen alot of tutorials on search with php and mysql, but im having trouble with generating a link with the search result. For example say i have an item called "item1" in my db and the user searhes for item , item1 should be returned as a link so the user can click the link to get more information about that product. Does anyone have any scripts , or snippets of code for how to acheive this?Thanks
You probably need to create an item page say item.php that accepts an id which will then search teh database for that item and display the item information.
Your search results will then have to display the name of the item in a link that also includes the id of the item.
<?php echo $itemname"?>
This would of course be in a loop that goes through the list of items one at a time.
When the user clicks the link it will take them to item.php and send id as a parameter.
that's a simply example with no check and no control by datatype or query results. just start from it and do what you need...
<?php
//your db connection
//col1 is where the id is saved
//col2 is the url
$qry="SELECT col1, col2 FROM table WHERE col1='".$_GET['var']."'";
$result=mysql_fetch_array(mysql_query($sql));
echo 'LINK';
?>
edit:
if you want a direct redirect do this instead of echoing
header('Location: '.$result['col2']);