phpMyAdmin
 sql >> Base de données >  >> Database Tools >> phpMyAdmin

PhpMyAdmin exportant le résultat de la procédure

Ce n'est pas une bonne solution, mais plutôt une solution de contournement :

Vous pouvez copier le code HTML externe de n'importe quel bouton d'exportation à partir d'un résultat de requête standard à l'aide de l'inspecteur d'éléments de votre navigateur et le coller dans le résultat d'une commande CALL pour exporter les résultats. Certaines modifications sont nécessaires.

Vous devez copier la balise d'ancrage avec href="tbl_export.php" à partir d'un bouton d'exportation de requête standard. Notez que le <a> la balise a un data-post , qui contient des données de formulaire encodées en URL. Parmi tous les champs du data-post string, nous sommes intéressés par le sql_query et table des champs. A savoir, nous voulons remplacer le sql_query et affirmer que la table le champ n'est pas vide.

Lors de l'exécution d'une commande CALL dans PhpMyAdmin, vous devez ouvrir l'inspecteur d'éléments au niveau du jeu de champs en bas de la page, coller le HTML externe copié comme dernier enfant du jeu de champs et modifier le sql_query valeur pour correspondre à la valeur de sql_query dans la Créer une vue voisine bouton.

Le script Greasemonkey suivant fait tout ce qui précède automatiquement et crée un bouton "Exportation forcée" lorsque cela est possible :

// ==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">&nbsp;Forced Export</span>
      </a>
    `);
    fieldset.appendChild(forced_export_btn);
  }
}, 2500);