PHP Classes

File: navigInTable.class.php

Recommend this page to a friend!
  Classes of Lucazeau   navigInTable   navigInTable.class.php   Download  
File: navigInTable.class.php
Role: ???
Content type: text/plain
Description: Le fichier classe proprement dit
Class: navigInTable
Author: By
Last change:
Date: 24 years ago
Size: 6,622 bytes
 

Contents

Class file image Download
<?php /* * Classe de circulation dans une table de base de données * sur le critère d'un champ auto_increment. * * Cette classe nécessite l'utilisationde Db_Sql.php */ if ( !defined( 'NAVIGINTABLE_INCLUDED' ) ) { define('NAVIGINTABLE_INCLUDED', 1 ); //debut de l'include class navigInTable { // Le constructeur function navigInTable ( $host="", $base="", $user="", $pswd="", $table="", $rang="", $pCour, $clWhere="", $tbWhere="" ) { $this->OK = true; if ( $host == "" || $base == "" || $user == "" || $pswd == "" || $table == "" || $rang == "") { $this->OK = false; } else { $this->Host = $host; $this->Database = $base; $this->User = $user; $this->Password = $pswd; $this->Table = $table; $this->champRang = $rang; $this->champRangTable = $table.".".$rang; $q = new aj_Db( $this->Host, $this->Database, $this->User, $this->Password); $this->dbConn = $q; //$this->dbConn->Debug =1; // $wher permet de ne naviguer que parmi certains champs if ( !empty($clWhere)) { $this->clWhere0 = "WHERE ($clWhere) "; $this->clWhere1 = "AND ($clWhere) "; } else { $this->clWhere0 = ""; $this->clWhere1 = ""; } // Si la clause where fait intervenir d'autres tables, il faut le préciser if ( !empty( $tbWhere)) $this->tbWhere = ", $tbWhere "; else $this->tbWhere = ""; // Vérification du flag du champ : auto_increment $tabMetaData = $q->metadata( $this->Table, true); $ir = $tabMetaData["meta"][$this->champRang]; if ( ereg( "auto_increment", $tabMetaData[$ir]["flags"])) { $rgp = $this->rangFirst(); $rgd = $this->rangLast(); if ( ( settype( $pCour, "integer")) && ($pCour>=$rgp) && ($pCour<=$rgd)) { $this->dbConn->query( "SELECT $this->champRang FROM $this->Table WHERE $this->champRang = $pCour $this->clWhere1"); if ($this->dbConn->nf()) $this->setRangCourant( $pCour); else $this->rangPrem(); } else $this->setRangCourant( $rgp); } else { $this->OK = false; } } } // fin du constructeur ///////////////////////////////////////////////////////////////////////////// /////// Fonctions et variables privées /////// ///////////////////////////////////////////////////////////////////////////// function setRangCourant( $rc) { $this->rangCour = $rc; } // fin de getRangCourant function rangFirst() { // function privée if ( $this->nbElts()) { $this->dbConn->query( "SELECT MIN($this->champRangTable) AS rangPrem FROM $this->Table $this->tbWhere WHERE ($this->champRangTable > 0) $this->clWhere1 ORDER BY $this->champRangTable"); $this->dbConn->next_record(); $this->OK = true; return $this->dbConn->Record['rangPrem']; } else { $this->OK = false; return 0; } } // fin de rangPrem function rangLast() { // function privée if ( $n = $this->nbElts()) { if ( $n == 1) { return 1; } else { $r = $n-1; $this->dbConn->query( "SELECT $this->champRangTable AS rang FROM $this->Table $this->tbWhere $this->clWhere0 ORDER BY $this->champRangTable LIMIT $r,1"); $this->dbConn->next_record(); $this->OK = true; return $this->dbConn->Record['rang']; } } else { $this->OK = false; return 0; } } // fin de rangDern function rangNext( $rc) { // fonction privée $this->dbConn->query( "SELECT MIN($this->champRangTable) AS numNext FROM $this->Table $this->tbWhere WHERE ($this->champRangTable > $rc) $this->clWhere1 ORDER BY $this->champRangTable"); $this->dbConn->next_record(); return $this->dbConn->Record['numNext']; } // fin de rangNext function rangPrev( $rc) { // fonction privée $this->dbConn->query( "SELECT MAX($this->champRangTable) AS numPrev FROM $this->Table $this->tbWhere WHERE ($this->champRangTable < $rc) $this->clWhere1 ORDER BY $this->champRangTable"); $this->dbConn->next_record(); return $this->dbConn->Record['numPrev']; } // fin de rangPrev ///////////////////////////////////////////////////////////////////////////// /////// Fonctions publiques /////// ///////////////////////////////////////////////////////////////////////////// function nbElts() { $this->dbConn->query( "SELECT COUNT(*) AS nbElts FROM $this->Table $this->tbWhere $this->clWhere0"); $this->dbConn->next_record(); return $this->dbConn->Record['nbElts']; } // fin de nbElts function getRangCourant() { return $this->rangCour; } // fin de getRangCourant function isExist( $rc) { $this->dbConn->query( "SELECT $this->champRang FROM $this->Table WHERE $this->champRang = $rc"); return $this->dbConn->nf(); } function isPrem( $rc) { return ( $rc == $this->rangFirst()); } // fin de isPrem function isDern( $rc) { return ( $rc == $this->rangLast()); } // fin de isDern function rangPrem () { $r = $this->rangFirst(); if ( $this->OK) return $this->setRangCourant( $r); } function rangDern () { $r = $this->rangLast(); if ( $this->OK) return $this->setRangCourant( $r); } function rangSuiv() { if ( $this->isExist( $rc = $this->getRangCourant())) { if ( !$this->isDern( $rc)) $this->setRangCourant( $this->rangNext( $rc)); } else $this->rangDern(); return $this->getRangCourant(); } // fin de rangSuiv function rangPrec() { if ( $this->isExist( $rc = $this->getRangCourant())) { if ( !$this->isPrem( $rc)) $this->setRangCourant( $this->rangPrev( $rc)); } else $this->rangprem(); return $this->getRangCourant(); } // fin de rangPrec function rangSuivPlus( $n=1) { for ( $i=0; $i<$n; $i++) $ret = $this->rangSuiv(); return $ret; } function rangPrecPlus( $n=1) { for ( $i=0; $i<$n; $i++) $ret = $this->rangPrec(); return $ret; } } // fin de la classe navigInTable } // Fin de l'include ?>