[ Index ]
 

Code source de SPIP 1.8.3

Accédez au Source d'autres logiciels libres | Soutenez Angelica Josefina !

title

Body

[fermer]

/ecrire/ -> inc_abstract_sql.php3 (source)

   1  <?php
   2  
   3  /***************************************************************************\
   4   *  SPIP, Systeme de publication pour l'internet                           *
   5   *                                                                         *
   6   *  Copyright (c) 2001-2005                                                *
   7   *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
   8   *                                                                         *
   9   *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
  10   *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
  11  \***************************************************************************/
  12  
  13  
  14  // Ce fichier ne sera execute qu'une fois
  15  if (defined("_INC_ABSTRACT_SQL")) return;
  16  define("_INC_ABSTRACT_SQL", "1");
  17  
  18  // Cette fonction est systematiquement appelee par les squelettes
  19  // pour constuire une requete SQL de type "lecture" (SELECT) a partir
  20  // de chaque boucle.
  21  // Elle construit et exe'cute une reque^te SQL correspondant a` une balise
  22  // Boucle ; elle notifie une erreur SQL dans le flux de sortie et termine
  23  // le processus.
  24  // Sinon, retourne la ressource interrogeable par spip_abstract_fetch.
  25  // Recoit en argument:
  26  // - le tableau des champs a` ramener
  27  // - le tableau des tables a` consulter
  28  // - le tableau des conditions a` remplir
  29  // - le crite`re de regroupement
  30  // - le crite`re de classement
  31  // - le crite`re de limite
  32  // - une sous-requete e'ventuelle (MySQL > 4.1)
  33  // - un compteur de sous-requete
  34  // - le nom de la table
  35  // - le nom de la boucle (pour le message d'erreur e'ventuel)
  36  // - le serveur sollicite
  37  
  38  function spip_abstract_select (
  39      $select = array(), $from = array(), $where = '',
  40      $groupby = '', $orderby = array(), $limit = '',
  41      $sousrequete = '', $cpt = '',
  42      $table = '', $id = '', $serveur='') {
  43  
  44      if (!$serveur)
  45        // le serveur par defaut est celui de inc_connect.php
  46        // tout est deja pret, notamment la fonction suivante:
  47        $f = 'spip_mysql_select';
  48      else {
  49        // c'est un autre; est-il deja charge ?
  50          $f = 'spip_' . $serveur . '_select';
  51          if (!function_exists($f)) {
  52            // non, il est decrit dans le fichier ad hoc
  53              $d = _DIR_RESTREINT . 'inc_connect-' . $serveur .'.php3';
  54              if (@file_exists($d)) include($d);
  55              $f = spip_abstract_serveur($f, $serveur);
  56          }
  57      }
  58      return $f($select, $from, $where,
  59            $groupby, array_filter($orderby), $limit,
  60            $sousrequete, $cpt,
  61            $table, $id, $serveur);
  62  }
  63  
  64  function spip_abstract_serveur($f, $serveur) {
  65      if (function_exists($f))
  66          return $f;
  67  
  68      erreur_squelette(' '._T('zbug_serveur_indefini'), $serveur);
  69  
  70      // hack pour continuer la chasse aux erreurs
  71      return 'array';
  72  }
  73  
  74  // Les 3 fonctions suivantes exploitent le resultat de la precedente,
  75  // si l'include ne les a pas definies, erreur immediate
  76  
  77  function spip_abstract_fetch($res, $serveur='')
  78  {
  79    if (!$serveur) return spip_fetch_array($res);
  80    $f = spip_abstract_serveur('spip_' . $serveur . '_fetch', $serveur);
  81    return $f($res);
  82  }
  83  
  84  function spip_abstract_count($res, $serveur='')
  85  {
  86    if (!$serveur) return spip_num_rows($res);
  87    $f = spip_abstract_serveur('spip_' . $serveur . '_count', $serveur);
  88    return $f($res);
  89  }
  90  
  91  function spip_abstract_free($res, $serveur='')
  92  {
  93    if (!$serveur) return spip_free_result($res);
  94    $f = spip_abstract_serveur('spip_' . $serveur . '_free', $serveur);
  95    return $f($res);
  96  }
  97  
  98  function spip_abstract_insert($table, $noms, $valeurs, $serveur='')
  99  {
 100    $f = (!$serveur ? 'spip_mysql_insert' :
 101      spip_abstract_serveur('spip_' . $serveur . '_insert', $serveur));
 102    return $f($table, $noms, $valeurs);
 103  }
 104  
 105  # une composition tellement frequente...
 106  function spip_abstract_fetsel(
 107      $select = array(), $from = array(), $where = '',
 108      $groupby = '', $orderby = array(), $limit = '',
 109      $sousrequete = '', $cpt = '',
 110      $table = '', $id = '', $serveur='') {
 111      return spip_abstract_fetch(spip_abstract_select(
 112  $select, $from, $where,    $groupby, $orderby, $limit,
 113  $sousrequete, $cpt, $table, $id, $serveur),
 114                     $serveur);
 115  }
 116  ?>


Généré le : Thu Feb 22 22:27:47 2007 par Balluche grâce à PHPXref 0.7