To make a table inside another table, it would be like a 'details' for each result that is equal, see an example of a plugin jqWidget:
With a little patience I managed to use to group by code:
Follow an encoded example of the plugin usage:
<!DOCTYPE html>
<html lang="en">
<head>
<title id='Description'>This example shows how to display nested Grid plugins.</title>
<link rel="stylesheet" href="../../jqwidgets/styles/jqx.base.css" type="text/css" />
<script type="text/javascript" src="../../scripts/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxcore.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxdata.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxbuttons.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxscrollbar.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxmenu.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxgrid.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxgrid.selection.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxgrid.filter.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxgrid.sort.js"></script>
<script type="text/javascript" src="../../scripts/demos.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var url = "../sampledata/employees.xml";
var source =
{
datafields: [
{ name: 'FirstName' },
{ name: 'LastName' },
{ name: 'Title' },
{ name: 'Address' },
{ name: 'City' }
],
root: "Employees",
record: "Employee",
id: 'EmployeeID',
datatype: "xml",
async: false,
url: url
};
var employeesAdapter = new $.jqx.dataAdapter(source);
var orderdetailsurl = "../sampledata/orderdetails.xml";
var ordersSource =
{
datafields: [
{ name: 'EmployeeID', type: 'string' },
{ name: 'ShipName', type: 'string' },
{ name: 'ShipAddress', type: 'string' },
{ name: 'ShipCity', type: 'string' },
{ name: 'ShipCountry', type: 'string' },
{ name: 'ShippedDate', type: 'date' }
],
root: "Orders",
record: "Order",
datatype: "xml",
url: orderdetailsurl,
async: false
};
var ordersDataAdapter = new $.jqx.dataAdapter(ordersSource, { autoBind: true });
orders = ordersDataAdapter.records;
var nestedGrids = new Array();
// create nested grid.
var initrowdetails = function (index, parentElement, gridElement, record) {
var id = record.uid.toString();
var grid = $($(parentElement).children()[0]);
nestedGrids[index] = grid;
var filtergroup = new $.jqx.filter();
var filter_or_operator = 1;
var filtervalue = id;
var filtercondition = 'equal';
var filter = filtergroup.createfilter('stringfilter', filtervalue, filtercondition);
// fill the orders depending on the id.
var ordersbyid = [];
for (var m = 0; m < orders.length; m++) {
var result = filter.evaluate(orders[m]["EmployeeID"]);
if (result)
ordersbyid.push(orders[m]);
}
var orderssource = { datafields: [
{ name: 'EmployeeID', type: 'string' },
{ name: 'ShipName', type: 'string' },
{ name: 'ShipAddress', type: 'string' },
{ name: 'ShipCity', type: 'string' },
{ name: 'ShipCountry', type: 'string' },
{ name: 'ShippedDate', type: 'date' }
],
id: 'OrderID',
localdata: ordersbyid
}
var nestedGridAdapter = new $.jqx.dataAdapter(orderssource);
if (grid != null) {
grid.jqxGrid({
source: nestedGridAdapter, width: 780, height: 200,
columns: [
{ text: 'Ship Name', datafield: 'ShipName', width: 200 },
{ text: 'Ship Address', datafield: 'ShipAddress', width: 200 },
{ text: 'Ship City', datafield: 'ShipCity', width: 150 },
{ text: 'Ship Country', datafield: 'ShipCountry', width: 150 },
{ text: 'Shipped Date', datafield: 'ShippedDate', width: 200 }
]
});
}
}
var photorenderer = function (row, column, value) {
var name = $('#jqxgrid').jqxGrid('getrowdata', row).FirstName;
var imgurl = '../../images/' + name.toLowerCase() + '.png';
var img = '<div style="background: white;"><img style="margin:2px; margin-left: 10px;" width="32" height="32" src="' + imgurl + '"></div>';
return img;
}
var renderer = function (row, column, value) {
return '<span style="margin-left: 4px; margin-top: 9px; float: left;">' + value + '</span>';
}
// creage jqxgrid
$("#jqxgrid").jqxGrid(
{
width: 850,
height: 365,
source: source,
rowdetails: true,
rowsheight: 35,
initrowdetails: initrowdetails,
rowdetailstemplate: { rowdetails: "<div id='grid' style='margin: 10px;'></div>", rowdetailsheight: 220, rowdetailshidden: true },
ready: function () {
$("#jqxgrid").jqxGrid('showrowdetails', 1);
},
columns: [
{ text: 'Photo', width: 50, cellsrenderer: photorenderer },
{ text: 'First Name', datafield: 'FirstName', width: 100, cellsrenderer: renderer },
{ text: 'Last Name', datafield: 'LastName', width: 100, cellsrenderer: renderer },
{ text: 'Title', datafield: 'Title', width: 180, cellsrenderer: renderer },
{ text: 'Address', datafield: 'Address', width: 300, cellsrenderer: renderer },
{ text: 'City', datafield: 'City', width: 170, cellsrenderer: renderer }
]
});
});
</script>
</head>
<body class='default'>
<div id="jqxgrid">
</div>
</body>
</html>
I don’t quite understand how you intend to group this result. Can explain better?
– Papa Charlie
I want to group them in a single select, so that it is possible for the administrator to insert the result in one, and the same goes for the repeated results.
– Cassiano José
Just to better understand... the administrator will put the right game result? There with this original result he will make the selection of bettors who have hit the result... That’s what you want?
– Andrei Coelho
If that’s it... you have to create a separate table. type resultado_original and then compare it with the betting table to select only the winning bets. if you need me I’ll make the answer for you
– Andrei Coelho
You can also create a field in the table called status.. if 0 is still in check... if 1 is the user hit... if 2 is the user missed... so when the administrator posts the actual game result.. it will make an UPDATE in the table where the original result is = the result of the bettors... with this you will make a single select in the same table where all bets have the status = 1... if you want I can create this example
– Andrei Coelho
André, this I already did, 0 for lost and 1 for won, only that the system contains many repeated games, so I wanted that when there were for example; two games with the same values, so in addition to show the admin these two repeated games, I wanted to appear only 1, In this '1' he would put the result if he won or lost, then the script would give the UPDATE in all games that are equal, ie the same type of bet, without it being necessary to put several times the result in repeated games. I could tell?
– Cassiano José
Yes... I think I understand... but I think you are not optimizing your code... see... instead of the admin selecting 1 to say that all the games with that such result won... the administrator simply put the result of the game in a form and in another file you redeems these values and automatically changes in all WHERE result = $_POST.... what do you think?
– Andrei Coelho
I don’t know if this field exists in the table... but I find it interesting each game to have a unique nuneraçao... for example... flamengo x santos... numero set: 5... Vasco x palmeiras... game number 6... so you can do the GROUP BY the way you want because you group the bets by the number of the game... in the case of games of Vasco x palmeiras would stay GROUP BY 6
– Andrei Coelho
already solved @Cassianojose this question? You tested the solution I posted as an answer ?
– SneepS NinjA
It worked right! thank you very much Sneeps and sorry for the delay.
– Cassiano José