Esta no es una solución adecuada, sino más bien una alternativa:
Puede copiar el HTML externo de cualquier botón de exportación de un resultado de consulta regular usando el inspector de elementos de su navegador y pegarlo en el resultado de un comando CALL para exportar los resultados. Algunas modificaciones son necesarias.
Debe copiar la etiqueta de anclaje con href="tbl_export.php"
desde un botón de exportación de consulta regular. Observe que el <a>
la etiqueta tiene un data-post
atributo, que contiene datos de formulario codificados en URL. Entre todos los campos del data-post
cadena, estamos interesados en sql_query
y table
los campos. Es decir, queremos reemplazar el sql_query
y afirmar que la table
el campo no está en blanco.
Al ejecutar un comando CALL en PhpMyAdmin, debe abrir el inspector de elementos en el conjunto de campos en la parte inferior de la página, pegar el HTML externo copiado como el último elemento secundario del conjunto de campos y editar sql_query
valor para que coincida con el valor de sql_query
en el vecino Crear vista botón.
El siguiente script de Greasemonkey hace todo lo anterior automáticamente y crea un botón de "Exportación forzada" cuando es posible:
// ==UserScript==
// @name Force export button in phpMyAdmin
// @namespace https://<your phpmyadmin host>/*
// @include https://<your phpmyadmin host>/*
// @version 1
// @grant none
// ==/UserScript==
setInterval(function() {
// See https://stackoverflow.com/a/35385518/5254685
/**
* @param {String} HTML representing a single element
* @return {Element}
*/
function htmlToElement(html) {
var template = document.createElement('template');
html = html.trim(); // Never return a text node of whitespace as the result
template.innerHTML = html;
return template.content.firstChild;
}
let create_view_a = document.querySelector('span>a.create_view');
if (create_view_a == null) {
return;
}
if (document.querySelector('a[href="tbl_export.php"]') != null) {
return;
}
let data_post = create_view_a.getAttribute('data-post');
let fieldset = create_view_a.parentElement.parentElement;
let form_data = Object.fromEntries(
data_post.split('&').map(v => v.split('=', 2))
);
if (form_data['table']) {
let forced_export_btn = htmlToElement(`
<a href="tbl_export.php" data-post="${data_post}">
<span class="nowrap"><img src="themes/dot.gif" title="Export" alt="Export" class="icon ic_b_tblexport"> Forced Export</span>
</a>
`);
fieldset.appendChild(forced_export_btn);
}
}, 2500);