Това не е правилно решение, а по-скоро заобиколно решение:
Можете да копирате външния HTML на всеки бутон за експортиране от обикновен резултат от заявка, като използвате инспектора на елементи от вашия браузър и да го поставите в резултата от команда CALL, за да експортирате резултатите. Необходими са някои модификации.
Трябва да копирате маркера за закрепване с href="tbl_export.php"
от обикновен бутон за експортиране на заявка. Обърнете внимание, че <a>
маркерът има data-post
атрибут, който съдържа данни за формуляр, кодиран url. Сред всички полета на data-post
низ, ние се интересуваме от sql_query
и table
полета. А именно, искаме да заменим sql_query
и твърдят, че table
полето не е празно.
Когато изпълнявате команда CALL в PhpMyAdmin, трябва да отворите инспектора на елементи в набора от полета в долната част на страницата, да поставите копирания външен HTML като последно дъщерно на набора от полета и да редактирате sql_query
стойност, за да съответства на стойността на sql_query
в съседния Създаване на изглед бутон.
Следният скрипт на Greasemonkey прави всичко по-горе автоматично и създава бутон „Принудително експортиране“, когато е възможно:
// ==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);