0
I have a function in a php script where, in it, I must recover the values 1 or 3 of a table in mysql (1 - documents relevant to service providers, 2 -documents of the contracts (companies) for which these providers worked)
The code below provides a "magnifying glass" that currently brings me these two types of documents mixed in a list:
<a href="javascript:;" class="btn btn-xs btdoc btn-default" data-key="<?= $value['id_prestador'] ?>" data-toggle="tooltip" data-placement="top" title="Visualizar/Anexar documentos">
below, the function where I should recover / implement this filter ( in case generate a separate "magnifying glass" only for company documents:
protected function getDocs() {
global $prestador;
try {
$query = "SELECT ps.c_razao as prestador, A.prestador_tipo_doc_id, A.prestador_tipo_doc_nome, B.prestador_documento_id,
COUNT(B.prestador_documento_id) AS qnt
FROM prestador_tipo_doc AS A
LEFT JOIN prestador_documentos AS B ON (A.prestador_tipo_doc_id = B.prestador_tipo_doc_id AND B.id_prestador = $prestador)
JOIN prestadorservico as ps on ps.id_prestador = $prestador
WHERE A.status = 1
GROUP BY A.prestador_tipo_doc_id
ORDER BY A.ordem";
$this->rh->Prestadorservico->setDefault()->setIdPrestador($prestador)->select("c_razao")->getRow();
$this->nomePrestador = $this->rh->Prestadorservico->getCRazao();
$exec = $this->db->setDefault()->setQuery(QUERY, $query)->execute();
if (!$exec->isOk()){
$this->error->set("Houve um erro na montagem da listagem dos DOCs", E_FRAMEWORK_ERROR);
}
$this->rsDocs = $exec->getArray();
if (!include_once(ROOT_APP_TEMPLATE . 'admin/prestador/listar_docs.php')) die('Não foi possível incluir ' . ROOT_APP_TEMPLATE . 'admin/prestador/listar_docs.php');
} catch (Exception $ex) {
$this->setValue(0)->error->set(array(1, __METHOD__), E_FRAMEWORK_WARNING, $ex);
echo $this->getAlertHtml($this->rh->getAllMsgCode(null, "<br/>"));
// return $this;
//echo $this->rh->error->getAllMsgCodeJson(array('code' => 0, 'status' => $this->isOk()));
}
}
I have tried to understand, what interaction the html/javascript tags do with the php function above, to get an idea of how I will modify it. That’s the way they pointed me in the office, but it’s been hard to relate one thing to the other. Most of the questions and solutions I found are very generic.
To make it easier to understand the question, when I inspect Chrome it clearly shows me the getDocs method being invoked. But I would really like to understand, in which place the tags below this is passed:
<a href="javascript:;" class="btn btn-xs btdoc btn-default" data-key="<?= $value['id_prestador'] ?>" data-toggle="tooltip" data-placement="top" title="Visualizar/Anexar documentos">
EDIT: When debugging with firefox, I found the reference in the tag above (btdoc) in the script below:
$(document).on("click", ".btdoc", function () {
var $this = $(this);
var key = $this.data("key");
/*var kids = $this.parents("tr").children();
var razao = kids.next().next().html();*/
cria_carregando_modal();
$.post("?class=admin/prestador/gestao", {prestador: key, method: "getDocs"}, function (data) {
remove_carregando_modal();
bootDialog(data, 'Lista de Documentos', '', 'info');
}, 'html');
});
Basically what I did was "replicate" (yes, I understand that was a gambiarra) the same script, but this time with a reference ".btdoc_prestador"
, calling a method similar to the one I named getDocs_prestador
:
protected function getDocs_prestador() {
global $prestador;
try {
$query2 = "SELECT ps.c_razao as prestador, A.prestador_tipo_doc_id, A.prestador_tipo_doc_nome, B.prestador_documento_id,
COUNT(B.prestador_documento_id) AS qnt
FROM prestador_tipo_doc AS A
LEFT JOIN prestador_documentos AS B ON (A.prestador_tipo_doc_id = B.prestador_tipo_doc_id AND B.id_prestador = $prestador)
JOIN prestadorservico as ps on ps.id_prestador = $prestador
WHERE A.status = 1 AND A.tipo_doc = 2
GROUP BY A.prestador_tipo_doc_id
ORDER BY A.ordem";
$this->rh->Prestadorservico->setDefault()->setIdPrestador($prestador)->select("c_razao")->getRow();
$this->nomePrestador = $this->rh->Prestadorservico->getCRazao();
$exec = $this->db->setDefault()->setQuery(QUERY, $query2)->execute();
if (!$exec->isOk()){
$this->error->set("Houve um erro na montagem da listagem dos DOCs", E_FRAMEWORK_ERROR);
}
It is returning me the list of documents according to the flag I put in the query : A.tipo_doc = 2
The problem now is that the display of the modals with the listing was super buggy, as in the image below:
EDIT 2 In addition to the result I expected, actually the page is loading several modals in the act of the same click. Including different types.
EDIT 3 The rendering of the modal ta taking too long tbm:
$query = "SELECT ps.c_razao as provider, in that part of the code should not "provider" be as a variable?
– Pedro Henrique
Or rather, what value is returned?
– Pedro Henrique
Hi, @Pedrohenrique Actually, provider sets only one alias for the table. I was able to implement the call of the different document lists according to the SQL classification in the methods. I edited the topic and added an image for better understanding.
– wes85melis