ezSQL : requêtes SQL et export CSV

ezSQL permet d’exécuter rapidement des requêtes SQL depuis l’interface privée de SPIP. Il permet d’afficher la structure des tables et d’exporter les résultats éventuels au format CSV

Présentation

ezSQL est un petit plugin qui permet :
-  d’exécuter tout type de requête SQL
-  d’afficher une prévisualisation du résultat des requetes SELECT
-  d’exporter les résultats d’une interrogation SQL au format CSV sans se soucier des problèmes d’encodage
-  de naviguer dans la structure de la base de données (bandeau de gauche)
-  de rédiger une requête en cliquant sur le nom de la table ou des colonnes (bandeau de droite)

Photo d’écran

ezSQL
L’interface d’ezSQL (capture d’écran)

Installation du plugin

L’installation se fait selon la procédure normale

À faire


-  utiliser du code SPIP plutôt que mon code maison (par exemple pour l’affichage des tables HTML)
-  proposer l’historique des requêtes (pour cela il me faut découvrir comment créer une table si on détecte qu’elle n’existe pas à l’activation du plugin)
-  améliorer le système de saisie pour qu’il propose qqch de plus pratique (par exemple l’auto complétion, ou au moins la possibilité de choisir où on insère le nom de la colonne sur lequel on a cliqué)
-  ne pas créer le fichier csv à chaque select (ne le créer qu’à la demande)
-  permettre l’affichage de l’ensemble des réponses (au lieu de forcer la prévisualisation des n premières lignes et colonnes)
-  et sans doutes plein d’autres améliorations, n’hésitez pas à utiliser le forum pour les proposer !

À propos

Ce plugin est sous licence libre GPL. Il a initialement été développé par M. Ghislain VLAVONOU puis amélioré par MM. Yannick EDAYE et Cédric PROTIERE dans le cadre du projet SIOU (Système d’Information de l’Office du bac Unifié - http://www.officedubacbenin.bj).

C’est le premier plugin béninois de l’histoire de SPIP-Contrib.net. Allez les écureuils !

Discussion

6 discussions

  • Je crois que ce plugin a une nouvelle version : https://contrib.spip.net/Requeteur-SQL

    Répondre à ce message

  • Le plugin est conçu pour fonctionner sur la version 2.9. Sur les versions supérieures cela n’a jamais posé problème. En tout cas je vais essayer sur cette version et donner incessamment la conduite à tenir

    Répondre à ce message

  • Quelqu’un sait-il comment faire pour exécuter ce plugin sur un spip 2.1.2 ?
    Merci de votre aide.
    (d’ailleurs après installation, il n’apparaît nul part et en lançant l’exécution via l’url, ça plante)
    - En tout cas, félicitation à l’équipe pour cette idée, j’ai hâte de pouvoir l’utiliser. -
    Christophe

    Répondre à ce message

  • 1

    Bonjour,

    J’ai un problème quand j’enregistre des requêtes : les _ disparaissent, par exemple ’spip_articles’ devient ’spip article’.

    Les données sont bien stockées correctement dans la table ezsql (on peut donc directement faire un copier coller)... mais quand on les rappelle avec l’onglet historiqe cela foire.

    • Djakoni

      Bonjour

      Il s’agit là d’un bug que je ne m’explique pas...
      Peut être est-ce dû au fait que la liste déroulante est dans le titre d’un cadre, en tous cas ça semble provenir d’un comportement de spip que je ne connais pas.

      Merci pour l’information, j’espère que ça ne va pas rester un « bug connu » trop longtemps...

      Cédric

    Répondre à ce message

  • 19

    Bonjour,

    je viens d’installer votre plugin, malheureusement j’obtiens ça :

    Warning : cannot yet handle MBCS in html_entity_decode() ! in

    ce qui n’est absloument pas clair pour moi...
    Par quoi dois je commencer ?

    Lila

    • Djakoni

      Arg.

      D’après un commentaire de la doc PHP, la fonction html_entity_decode utilisée dans ce plugin est buggée dans PHP4 (ou apparemment <4.3). Il faut donc que les auteurs du plugin le modifient pour qu’il fonctionne également avec de vieilles versions de PHP.

      Remarquez au passage que PHP4 n’est plus supporté officiellement, et que je vous recommande de passer à PHP5. Bien sûr, cela dépend sans doutes de votre hébergeur...

    • Pour ce qui est du message d’erreur avec PHP4, une fonction a été ajoutée afin de régler ce problème. Cela sera accessible dans une heure

    • Merci beaucoup pour vos réponses, je vous tiens au courant

      Lila

    • « Pour ce qui est du message d’erreur avec PHP4, une fonction a été ajoutée afin de régler ce problème. Cela sera accessible dans une heure »

      Pas grave si c’est en un peu plus d’une heure... mais sera-ce aujourd’hui ?

    • Pas grave. ;)

    • Bonsoir Vlav,

      merci !
      Il y a du progres : je peux choisir ma table, nickel !
      Mais ensuite voici le retour que j’ai :

      Fatal error : Call to undefined function : str_ireplace() in /xx/xx
      /ezSQL/exec/ezsql.php on line 61

      A bientôt,
      Lila

    • Bonsoir Lila
      Très heureux que tu ais choisi d’essayer ce plugin. Tu n’en seras pas déçu. Ce bug est toujours le fait de la version du php que tu utilises. De la même manière que la dernière fois le code a été légèrement modifié pour l’adapter à ta version.
      J’attends que tu l’essaies pour me donner tes appréciations
      A plus

    • Vlav,
      rien de neuf pour moi, j’ai toujours le même resultat

      Fatal error : Call to undefined function : str_ireplace() in /xxx/xxx/xxx/plugins/ezSQL/exec/ezsql.php on line 61

      Bon courage,
      Lila

    • Bonjour,

      Chez moi, cela progresse.
      Commentaires et problèmes :
      1 - l’écran initial dit « cliquez sur une des tables ou tapez une requête ici puis cliquez sur le bouton [Exécuter] ». Comme je n’ai pas la moindre idée de ma requête, je ne peux la taper. et je ne vois pas les noms des tables.
      Ce n’est que cosmétique, car si je clique sur « exécuter » j’obtiens certes un message d’erreur, mais surtout à gauche la liste des tables.
      Le message d’erreur est :

      [KO] - Erreur dans la requete

      CLIQUEZ sur une des tables ou tapez une requête ici puis cliquez
      sur le bouton [Exécuter]

      /plugins/ezSQL/exec/ezsql.php[175]
      You have an error in your SQL syntax ; check the manual that corresponds to your MySQL server version for the right syntax to use near ’CLIQUEZ sur une des tables ou tapez une requête ici puis cliquez sur le bouton ’ at line 1

      [j’en conclus que si l’on ne tape rien dans la requête, le texte « reste »

      CLIQUEZ sur une des tables ou tapez une requête ici puis cliquez
      sur le bouton [Exécuter]

      En réalité, dans la partie gauche il y a bien le nom de la vase, mais ce n’est pas évident (dans mon cas, cela affiche simplement « spip »... comment savoir la 1e fois que c’est la base ?)

      2 - Erreur d’exécution :
      Si je clique sur un nom de table, j’obtiens le message d’erreur

      Fatal error : Call to undefined function : fputcsv() in /home.10.12/multisou/www/canal-local.net/plugins/ezSQL/exec/ezsql.php on line 188

      fputcsv n’existe que dans php >5.1 d’après la page http://fr.php.net/fputcsv qui propose un substitut

      Solution : j’ai installé à la ligne 36 de ezsql le substitut proposé, et ça marche.

      J’ai donc le résultat : bravo, c’est très utile !!!!!!!!!!!!!!!!

    • Lila,

      J’ai jeté un oeil au code-source de ezsql. il y a bien du code pour résoudre le problème que tu rencontres... Je pense qu’il faudrait que (si tu l’as déjà fait... à tout hasard refais-le car c’est bizarre)
      1 - tu charges la version actuellement disponible sur le site
      2 - tu effaces ezsql dans le répertoire plugins sur ton serveur
      3 - tu le remplaces par ezsql de la version actuelle

      Cette erreur devrait normalement disparaître... tu auras sans doute ensuite l’erreur que j’ai eue. Si tu es pressée, je peux t’envoyer « mon » fichier ezsql corrigé. Si non, il vaut mieux attendre que Vlav intègre la modif que j’ai suggérée... comme je l’ai faite à l’arrache elle casse peut-être quelque chose ailleurs, il vaut mieux laisser Vlav valider.

    • Bonjour Fibo,

      Peux tu préciser ce substitut, ça m’aidera a comprendre comme marche pour http://fr.php.net/str_ireplace()

      Merci d’avance
      Lila

    • Merci,

      je vais voir

      Lila

    • Fibo,

      Merci pour tes tests. Envoie le bloc de code que tu as ajouté que je puisse valider. Et Lila doit pouvoir trouver satisfaction

    • C’est bon pour moi, en effet j’ai la seconde erreur, qui aurait pu croire qu’un jour je sois contente de passer d’erreurs en erreurs ;)

      Fatal error : Call to undefined function : fputcsv() in /xxx/xxx/xxxl/xxx/plugins/ezSQL/exec/ezsql.php on line 188

      je veux bien « ton » fichier corrigé, quitte a utiliser celui de Vlav apres...

      Merci

      Lila

    • Envoie le bloc de code que tu as ajouté que je puisse valider.

      Pris à la page http://fr.php.net/fputcsv
      ATTENTION SPIP DEFORME LE CODE notamment en interprétant les crochets pour l’italique, ne pas le prendre ici mais dans le (premier) commentaire de la page indiquée [commentaire de boefje at hotmail dot com 10-Dec-2007 01:28 ]

      if (!function_exists('fputcsv')) 
      {
        
        function fputcsv(&$handle, $fields = array(), $delimiter = ';', $enclosure = '"') 
        {
          $str = '';
          $escape_char = '\\';
          foreach ($fields as $value) 
          {
            if (strpos($value, $delimiter) !== false ||
                strpos($value, $enclosure) !== false ||
                strpos($value, "\n") !== false ||
                strpos($value, "\r") !== false ||
                strpos($value, "\t") !== false ||
                strpos($value, ' ') !== false) 
            {
              $str2 = $enclosure;
              $escaped = 0;
              $len = strlen($value);
              for ($i=0;$i<$len;$i++) 
              {
                if ($value[$i] == $escape_char) 
                  $escaped = 1;
                else if (!$escaped && $value[$i] == $enclosure) 
                  $str2 .= $enclosure;
                else 
                  $escaped = 0;
                $str2 .= $value[$i];
              }
              $str2 .= $enclosure;
              $str .= $str2.$delimiter;
            } 
            else 
              $str .= $value.$delimiter;
          }
          $str = substr($str,0,-1);
          $str .= "\n";
          return fwrite($handle, $str);
        }
      
      }
      

      Bref, tout depuis if (!function_exists(’fputcsv’)) inclus jusqu’à function WriteCsv exclu.

    • je veux bien « ton » fichier corrigé, quitte a utiliser celui de Vlav apres...

      Je ne sais pas comment t’envoyer le fichier...

      si tu te sens d’attaque pour modifier le fichier ezsql, tu copies à la ligne indiquée les lignes de code php que tu prends sur la page http://fr.php.net/fputcsv

      sinon, Vlav va sans doute arranger cela très vite et ce sera plus propre : en fait, tu gagneras du temps à attendre !

    • Pour str_irplace, la page que tu indiques donne une fonction de substitution, dont le code est (aux crochets près puisque spip les avale).

      Vlav a mis un code de ce genre au tout début du programme ezsql.php : cela se termine vers la ligne 31, l’endroit où je suggère d’insérer le code pour faire une action similaire pour fputscsv

      if(!function_exists('str_ireplace')){
        function str_ireplace($search,$replace,$subject){
          $token = chr(1);
          $haystack = strtolower($subject);
          $needle = strtolower($search);
          while (($pos=strpos($haystack,$needle))!==FALSE){
            $subject = substr_replace($subject,$token,$pos,strlen($search));
            $haystack = substr_replace($haystack,$token,$pos,strlen($search));
          }
          $subject = str_replace($token,$replace,$subject);
          return $subject;
        }
      }
    • J’ai inséré la fonction de substitution afin que le bug disparaisse.

      Faites moi signe après l’avoir essayé. Mais ne pas oublier suivre le conseil de Fibo en prenant la nouvelle version. Il serait prudent d’attendre quelques minutes pour que les modifications soient propagees

    • Merci beaucoup à vous deux,

      ça marche maintenant, sauf qu’au moment ou je télécharge je reçois :

      Internal Server Error
      The server encountered an internal error or misconfiguration and was unable to complete your request.............

      Mais ça je pense que c’est a voir avec mon hebergeur....

      Bonne journée
      Lila

    Répondre à ce message

  • 1

    Je serais ravi si on pouvait directement éditer carrément les champs des tables dans votre plugin.

    Un plugin le faisait pour les versions précédentes de SPIP, mais il n’a pas été mis à jour.

    Est-ce pensalbe pour vous de permettre cela ?

    • Bonjour

      Merci pour votre intérêt pour ezSQL.

      De mon point de vue, ce petit plugin sert surtout à exécuter des requêtes (SELECT, INSERT, UPDATE, DELETE...). Pour une solution plus complète telle que vous la demandez, je vous recommande de vous tourner vers une solution telle que phpMyAdmin.

      Il y a également le plugin Forms&Tables, auquel on peut ajouter les Crayons, qui devraient vous permettre de faire des interfaces d’alimentation sympathiques et utilisables via l’espace public (dont vous pouvez restreindre l’accès à certains de vos rédacteurs via le plugin Accès Restreint).

      Ceci dit, les auteurs de ce plugin, Ghislain et Yannick, ont peut être une autre vision des choses !

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom