I am trying to create a filter in PHP for a set of data that is passed over to another php file and the results ar then passed back to the original file.
I have followed a tutorial by Pullo which is just working great for me all except the dynamic table is then created via jQuery and i want to do all this via a php while loop. So ideally:
1.) The user clicks a checkbox
2.) Ajax is then run
3.) The ajax then passes the array of data over to the trading.immediatelist.report_proc.php file for the SQL to work its magic.
4.) The SQL is run and the results and then passed back to the original php file
5.) Results are then put into a PHP while loop for me to play with
I can get so far, but i can not get the results back into a PHP While Loop. I think the success: part in the ajax needs to be changed, but not a clue how to.
The piece of code in the success part has a method called CreateTable().
Can you paste this method here? I would guess it’s another Ajax method calling another PHP script?
This : $(‘#ImmediateList tbody’).html(‘blahblah’) will write ‘blahblah’ inside the HTML element “tbody” which has for parent an element with the ID “ImmediateList”
For example, this will probably be a table like this:
Since CreateTable(records) is passed as a parameter to the .html() method, I would guess that the CreateTable() method would call the PHP script passing the “records” as an argument.
And, since the .html() methods writes directly into the TBODY tag, the PHP script should output <tr><td>…</td></tr> type of code.
But I still don’t understand why you would need 2 different PHP call to do this but anyway… If you paste more code we’ll be able to help you a little bit more
@Danian create a wrapper for trading.immediatelist.report_proc.php.
Say you have a file do-complex-stuff.php that fetches a list of names from a database, JSON encodes it, and echos it to the client; and I want to remove all the names except the ones that end in -ie or -y. Then wrapper.php would want to look something like this:
Of course the ideal is to find a smaller portion of do-complex-stuff.php that could be called directly from wrapper.php so that you don’t have to output-buffer, decode, and re-encode the JSON. You might find such a callable thing required from another file within trading.immediatelist.report_proc.php
Since CreateTable(records) is passed as a parameter to the .html() method, I would guess that the CreateTable() method would call the PHP script passing the “records” as an argument.
And, since the .html() methods writes directly into the TBODY tag, the PHP script should output <tr><td>…</td></tr> type of code.
But I still don’t understand why you would need 2 different PHP call to do this but anyway… If you paste more code we’ll be able to help you a little bit more ;)[/QUOTE]
OK,
Sorry for taking so long to reply. THe full jQuery is below:
function CreateTable(data){
var Stripe = true;
var tbl_body = "";
$.each(data, function(k, v) {
var tbl_row = "",
currRecord = this;
$.each(this, function(k , v) {
// EDIT/DELETE LINKS
tbl_row += "<td align='center'>"+v+"</td>";
})
tbl_body += "<tr>"+tbl_row+"</tr>";
})
return tbl_body;
}
function GetFilterOptions(){
var opts = [];
$checkboxes.each(function(){
if(this.checked){
opts.push(this.id);
}
});
return opts;
}
function UpdateFilter(Options){
$.ajax({
type: "POST",
url: "trading.immediatelist.report_proc.php",
dataType : 'json',
cache: false,
data: {filterOpts: Options},
success: function(records){
$('#ImmediateList tbody').html(CreateTable(records));
}
});
}
function handleDebug(debugInfo){
$("#Debug").html("<pre>" + debugInfo + "</pre>");
}
var $checkboxes = $("input:checkbox");
$checkboxes.on("change", function(){
var opts = GetFilterOptions();
UpdateFilter(opts);
});
$checkboxes.trigger("change");
part. It returns the results to a jQuery function called CreateTable(records) when really i want it return the results to a php function called CreatePHPRable(data).
How do i do this? How do i tell it to use the php function and not the jQuery function?
The fastest trick would be to log something in your default log file with error_log (…)
The best, most useful long term method would be to install xDebug or phpdbg. IIt’ll take more time to install it at first, but it’s good practice and easier to debug your code when you can use breakpoints.
I’m on my mobile, so I’m sorry if there’s any weird grammar error
PS The fast but ugly way would be to output what you want in another row in your table. For example, after looping on your result, add a row that just output the SQL query.
Note that I recommend investing time right now in a good solution as it will make you more efficient long term (and a better programmer)