begin process at 2012 05 27 17:58:50
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Class et Objet ( POO )

 > [PHP5] LIMIT PACKAGE - LIMITATION GENERIQUE D'UN JEU DE RESULTAT - LES ITERATEURS EN PHP

[PHP5] LIMIT PACKAGE - LIMITATION GENERIQUE D'UN JEU DE RESULTAT - LES ITERATEURS EN PHP


 Information sur la source

Note :
9,5 / 10 - par 2 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Class et Objet ( POO ) Classé sous :limite, iterator, sql, array, pagination Niveau :Expert Date de création :01/12/2006 Date de mise à jour :05/12/2006 17:39:46 Vu / téléchargé :3 643 / 209

Auteur : malalam

Ecrire un message privé
Site perso
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

Bon, encore des itérateurs ;-)

Ceci est un package tout simple, tout petit, permettant de renvoyer un jeu de résultat limité.
En clair, une requête, un tableau, vous n'en voulez qu'une partie ? ben voilà.
Ca rappelle le LIMIT de mysql évidemment.
Mais c'est plus pratique à mon sens.
Le fichier limit.php montre deux exemples d'utilisation simples.
Vous devez vous créer une base...
Nom : dbname
Table : table
champs : id

Ca suffit :-)

Ou adaptez à vos besoins, c'est très simple.
DB implémentées : mysql et mssql.
Et les tableaux...

Pratique pour faire une petite pagination facilement.

Source

  • <?php
  • /**
  • * class oLimit implements Iterator
  • * @author johan <johan.barbier@gmail.com>
  • * @version 20061205
  • */
  • abstract class oLimit implements Iterator {
  • /**
  • * Number of items to retrieve
  • *
  • * @var integer
  • */
  • protected $iCount;
  • /**
  • * Starting offset
  • *
  • * @var integer
  • */
  • protected $iOffset;
  • /**
  • * Total number of items for the request
  • *
  • * @var unknown_type
  • */
  • protected $iMax;
  • /**
  • * Current internal position
  • * @var integer
  • */
  • protected $iPos = 0;
  • /**
  • * Exception messages
  • *
  • */
  • const ERROR_COUNT_EMPTY = 'iCount cannot be equal to 0';
  • const ERROR_NO_INTEGER = 'iCount and iOffset parameters must be integer';
  • const ERROR_NEGATIVE = 'iOffset cannot be negative';
  • /**
  • * Constructor
  • * set some parameters
  • *
  • * @param integer $iOffset
  • * @param integer $iCount
  • */
  • protected function __construct ($iOffset = 0, $iCount = -1) {
  • if (!is_int ($iOffset) || !is_int ($iCount)) {
  • throw new Exception (self::ERROR_NO_INTEGER);
  • }
  • if ($iOffset < 0) {
  • throw new Exception (self::ERROR_NEGATIVE);
  • }
  • if ($iCount === 0) {
  • throw new Exception (self::ERROR_COUNT_EMPTY);
  • }
  • $this -> iOffset = $iOffset;
  • $this -> iCount = $iCount;
  • $this -> iMax = $this -> countMax ();
  • }
  • /**
  • * Iterator method
  • * Moves the internal cursor to the next position
  • *
  • */
  • public function next () {
  • $this -> iPos ++;
  • }
  • /**
  • * Iterator method
  • * Checks the validity of the current position
  • * If iCount === -1, then we go up to the end of the request (total number of items iMax)
  • * If not, we check if the current position iPos is equal or greater than the number of items to retrieve (iCount)
  • *
  • * @return boolean
  • */
  • public function valid () {
  • if (($this -> iOffset + $this -> iPos) > $this -> iMax) {
  • return false;
  • }
  • if ($this -> iCount > -1 && $this -> iPos >= $this -> iCount) {
  • return false;
  • }
  • return true;
  • }
  • /**
  • * Returns the current internal position
  • *
  • * @return integer
  • */
  • public function getInternalPos () {
  • return $this -> iPos;
  • }
  • /**
  • * Returns the current request position
  • *
  • * @return integer
  • */
  • public function getExternalPos () {
  • return $this -> iPos + $this -> iOffset;
  • }
  • /**
  • * Returns the total number of items in the request
  • *
  • * @return integer
  • */
  • public function getExternalCount () {
  • return $this -> iMax + 1;
  • }
  • abstract protected function countMax ();
  • }
  • /**
  • * class mysqlLimit extends oLimit
  • * @author johan <johan.barbier@gmail.com>
  • * @version 20061205
  • */
  • class mysqlLimit extends oLimit {
  • /**
  • * request resource
  • *
  • * @var mysql result resource (comes from mysql_query)
  • */
  • private $rRes;
  • /**
  • * Exception messages
  • *
  • */
  • const ERROR_NO_RESOURCE = 'rRes must be a valid mysql resource';
  • /**
  • * Constructor
  • * Sets some parameters, and set the current position via data_seek
  • *
  • * @param mysql result resource $rRes
  • * @param integer $iOffset
  • * @param integer $iCount
  • */
  • public function __construct ($rRes, $iOffset = 0, $iCount = -1) {
  • if (!is_resource ($rRes) || 'mysql result' !== get_resource_type ($rRes)) {
  • throw new Exception (self::ERROR_NO_RESOURCE);
  • }
  • $this -> rRes = $rRes;
  • parent::__construct ($iOffset, $iCount);
  • mysql_data_seek ($this -> rRes, $this -> iOffset + $this -> iPos);
  • }
  • /**
  • * Returns the current result array at the current position
  • *
  • * @return array
  • */
  • public function current () {
  • return mysql_fetch_assoc ($this -> rRes);
  • }
  • /**
  • * Checks validity of the current position
  • *
  • * @return boolean
  • */
  • public function valid () {
  • return parent::valid ();
  • }
  • /**
  • * Reset the resource result to the starting offset
  • *
  • */
  • public function rewind () {
  • mysql_data_seek ($this -> rRes, $this -> iOffset);
  • }
  • /**
  • * Do not know what do return here
  • *
  • * @return void
  • */
  • public function key () {
  • return false;
  • //return mysql_fetch_assoc ($this -> rRes);
  • }
  • /**
  • * Returns the total number of items of the query
  • *
  • * @return integer
  • */
  • protected function countMax () {
  • return mysql_num_rows ($this -> rRes) - 1;
  • }
  • }
  • /**
  • * class mssqlLimit extends oLimit
  • * see mysqlLimit for documentation
  • * @author johan <johan.barbier@gmail.com>
  • * @version 20061205
  • */
  • class mssqlLimit extends oLimit {
  • private $rRes;
  • const ERROR_NO_RESOURCE = 'rRes must be a valid mssql resource';
  • public function __construct ($rRes, $iOffset = 0, $iCount = -1) {
  • if (!is_int ($rRes) && (!is_resource ($rRes) || 'mssql result' !== get_resource_type ($rRes))) {
  • throw new Exception (self::ERROR_NO_RESOURCE);
  • }
  • $this -> rRes = $rRes;
  • parent::__construct ($iOffset, $iCount);
  • mssql_data_seek ($this -> rRes, $this -> iOffset + $this -> iPos);
  • }
  • public function current () {
  • return mssql_fetch_assoc($this -> rRes);
  • }
  • public function valid () {
  • return parent::valid ();
  • }
  • public function rewind () {
  • mssql_data_seek ($this -> rRes, $this -> iOffset);
  • }
  • public function key () {
  • return false;
  • //return mssql_fetch_assoc ($this -> rRes);
  • }
  • protected function countMax () {
  • return mssql_num_rows ($this -> rRes) - 1;
  • }
  • }
  • /**
  • * class arrayLimit extends LimitIterator
  • * @author johan <johan.barbier@gmail.com>
  • * @version 20061205
  • */
  • class arrayLimit extends LimitIterator {
  • /**
  • * Exception messages
  • *
  • */
  • const ERROR_NO_ARRAY = 'aRes must be an array';
  • /**
  • * Constructor
  • * Sets some parameters and get LimitIterator constructor
  • *
  • * @param array $aRes
  • * @param integer $iOffset
  • * @param integer $iCount
  • */
  • public function __construct ($aRes, $iOffset = 0, $iCount = -1) {
  • if (!is_array ($aRes)) {
  • throw new Exception (self::ERROR_NO_ARRAY);
  • }
  • $aIt = new ArrayIterator ($aRes);
  • parent::__construct ($aIt, $iOffset, $iCount);
  • $this -> rewind ();
  • }
  • }
  • /**
  • * class LimitFactory
  • * factory for the oLimit package (optional)
  • * @author johan <johan.barbier@gmail.com>
  • * @version 20061205
  • */
  • class LimitFactory {
  • /**
  • * Array of implemented oLimit classes
  • *
  • * @var array
  • */
  • private static $aTypes = array (
  • 'MYSQL' => 'mysqlLimit',
  • 'MSSQL' => 'mssqlLimit',
  • 'ARRAY' => 'arrayLimit'
  • );
  • /**
  • * Exception messages
  • *
  • */
  • const ERROR_NO_VALID_TYPE = '{__TYPE__} is not a valid type';
  • const ERROR_CLASS_NOT_FOUND = 'class {__CLASS__} has not been found';
  • /**
  • * Factory : get the correct object given an implemented oLimit class
  • *
  • * @param string $sType
  • * @param mixed $mRes
  • * @param integer $iOffset
  • * @param integer $iCount
  • * @return object
  • */
  • public static function factory ($sType, $mRes, $iOffset = 0, $iCount = -1) {
  • if (!array_key_exists ($sType, self::$aTypes)) {
  • throw new Exception (str_replace ('{__TYPE__}', $sType, self::ERROR_NO_VALID_TYPE));
  • }
  • if (!class_exists (self::$aTypes[$sType])) {
  • throw new Exception (str_replace ('{__CLASS__}', self::$aTypes[$sType], self::ERROR_CLASS_NOT_FOUND));
  • }
  • return new self::$aTypes[$sType] ($mRes, $iOffset, $iCount);
  • }
  • }
  • ?>
<?php
/**
 * class oLimit implements Iterator
 * @author johan <johan.barbier@gmail.com>
 * @version 20061205
 */
abstract class oLimit implements Iterator {

	/**
	 * Number of items to retrieve
	 *
	 * @var integer
	 */
	protected $iCount;

	/**
	 * Starting offset
	 *
	 * @var integer
	 */
	protected $iOffset;

	/**
	 * Total number of items for the request
	 *
	 * @var unknown_type
	 */
	protected $iMax;

	/**
	 * Current internal position
	 * @var integer
	 */
	protected $iPos = 0;

	/**
	 * Exception messages
	 *
	 */
	const ERROR_COUNT_EMPTY = 'iCount cannot be equal to 0';
	const ERROR_NO_INTEGER = 'iCount and iOffset parameters must be integer';
	const ERROR_NEGATIVE = 'iOffset cannot be negative';

	/**
	 * Constructor
	 * set some parameters
	 *
	 * @param integer $iOffset
	 * @param integer $iCount
	 */
	protected function __construct ($iOffset = 0, $iCount = -1) {
		if (!is_int ($iOffset) || !is_int ($iCount)) {
			throw new Exception (self::ERROR_NO_INTEGER);
		}
		if ($iOffset < 0) {
			throw new Exception (self::ERROR_NEGATIVE);
		}
		if ($iCount === 0) {
			throw new Exception (self::ERROR_COUNT_EMPTY);
		}
		$this -> iOffset = $iOffset;
		$this -> iCount = $iCount;
		$this -> iMax = $this -> countMax ();
	}

	/**
	 * Iterator method
	 * Moves the internal cursor to the next position
	 *
	 */
	public function next () {
		$this -> iPos ++;
	}

	/**
	 * Iterator method
	 * Checks the validity of the current position
	 * If iCount === -1, then we go up to the end of the request (total number of items iMax)
	 * If not, we check if the current position iPos is equal or greater than the number of items to retrieve (iCount)
	 *
	 * @return boolean
	 */
	public function valid () {
		if (($this -> iOffset + $this -> iPos) > $this -> iMax) {
			return false;
		}
		if ($this -> iCount > -1 && $this -> iPos >= $this -> iCount) {
			return false;
		}
		return true;
	}

	/**
	 * Returns the current internal position
	 *
	 * @return integer
	 */
	public function getInternalPos () {
		return $this -> iPos;
	}

	/**
	 * Returns the current request position
	 *
	 * @return integer
	 */
	public function getExternalPos () {
		return $this -> iPos + $this -> iOffset;
	}

	/**
	 * Returns the total number of items in the request
	 *
	 * @return integer
	 */
	public function getExternalCount () {
		return $this -> iMax + 1;
	}

	abstract protected function countMax ();
}

/**
 * class mysqlLimit extends oLimit
 * @author johan <johan.barbier@gmail.com>
 * @version 20061205
 */
class mysqlLimit extends oLimit {

	/**
	 * request resource
	 *
	 * @var mysql result resource (comes from mysql_query)
	 */
	private $rRes;

	/**
	 * Exception messages
	 *
	 */
	const ERROR_NO_RESOURCE = 'rRes must be a valid mysql resource';

	/**
	 * Constructor
	 * Sets some parameters, and set the current position via data_seek
	 *
	 * @param mysql result resource $rRes
	 * @param integer $iOffset
	 * @param integer $iCount
	 */
	public function __construct ($rRes, $iOffset = 0, $iCount = -1) {
		if (!is_resource ($rRes) || 'mysql result' !== get_resource_type ($rRes)) {
			throw new Exception (self::ERROR_NO_RESOURCE);
		}
		$this -> rRes = $rRes;
		parent::__construct ($iOffset, $iCount);
		mysql_data_seek ($this -> rRes, $this -> iOffset + $this -> iPos);
	}

	/**
	 * Returns the current result array at the current position
	 *
	 * @return array
	 */
	public function current () {
		return mysql_fetch_assoc ($this -> rRes);
	}

	/**
	 * Checks validity of the current position
	 *
	 * @return boolean
	 */
	public function valid () {
		return parent::valid ();
	}

	/**
	 * Reset the resource result to the starting offset
	 *
	 */
	public function rewind () {
		mysql_data_seek ($this -> rRes, $this -> iOffset);
	}

	/**
	 * Do not know what do return here
	 *
	 * @return void
	 */
	public function key () {
		return false;
		//return mysql_fetch_assoc ($this -> rRes);
	}

	/**
	 * Returns the total number of items of the query
	 *
	 * @return integer
	 */
	protected function countMax () {
		return mysql_num_rows ($this -> rRes) - 1;
	}
}

/**
 * class mssqlLimit extends oLimit
 * see mysqlLimit for documentation
 * @author johan <johan.barbier@gmail.com>
 * @version 20061205
 */
class mssqlLimit extends oLimit {

	private $rRes;

	const ERROR_NO_RESOURCE = 'rRes must be a valid mssql resource';

	public function __construct ($rRes, $iOffset = 0, $iCount = -1) {
		if (!is_int ($rRes) && (!is_resource ($rRes) || 'mssql result' !== get_resource_type ($rRes))) {
			throw new Exception (self::ERROR_NO_RESOURCE);
		}
		$this -> rRes = $rRes;
		parent::__construct ($iOffset, $iCount);
		mssql_data_seek ($this -> rRes, $this -> iOffset + $this -> iPos);
	}

	public function current () {
		return mssql_fetch_assoc($this -> rRes);
	}

	public function valid () {
		return parent::valid ();
	}

	public function rewind () {
		mssql_data_seek ($this -> rRes, $this -> iOffset);
	}

	public function key () {
		return false;
		//return mssql_fetch_assoc ($this -> rRes);
	}

	protected function countMax () {
		return mssql_num_rows ($this -> rRes) - 1;
	}
}

/**
 * class arrayLimit extends LimitIterator
 * @author johan <johan.barbier@gmail.com>
 * @version 20061205
 */
class arrayLimit extends LimitIterator {

	/**
	 * Exception messages
	 *
	 */
	const ERROR_NO_ARRAY = 'aRes must be an array';

	/**
	 * Constructor
	 * Sets some parameters and get LimitIterator constructor
	 *
	 * @param array $aRes
	 * @param integer $iOffset
	 * @param integer $iCount
	 */
	public function __construct ($aRes, $iOffset = 0, $iCount = -1) {
		if (!is_array ($aRes)) {
			throw new Exception (self::ERROR_NO_ARRAY);
		}
		$aIt = new ArrayIterator ($aRes);
		parent::__construct ($aIt, $iOffset, $iCount);
		$this -> rewind ();
	}
}

/**
 * class LimitFactory
 * factory for the oLimit package (optional)
 * @author johan <johan.barbier@gmail.com>
 * @version 20061205
 */
class LimitFactory {

	/**
	 * Array of implemented oLimit classes
	 *
	 * @var array
	 */
	private static $aTypes = array (
		'MYSQL' => 'mysqlLimit',
		'MSSQL' => 'mssqlLimit',
		'ARRAY' => 'arrayLimit'
	);

	/**
	 * Exception messages
	 *
	 */
	const ERROR_NO_VALID_TYPE = '{__TYPE__} is not a valid type';
	const ERROR_CLASS_NOT_FOUND = 'class {__CLASS__} has not been found';

	/**
	 * Factory : get the correct object given an implemented oLimit class
	 *
	 * @param string $sType
	 * @param mixed $mRes
	 * @param integer $iOffset
	 * @param integer $iCount
	 * @return object
	 */
	public static function factory ($sType, $mRes, $iOffset = 0, $iCount = -1) {
		if (!array_key_exists ($sType, self::$aTypes)) {
			throw new Exception (str_replace ('{__TYPE__}', $sType, self::ERROR_NO_VALID_TYPE));
		}
		if (!class_exists (self::$aTypes[$sType])) {
			throw new Exception (str_replace ('{__CLASS__}', self::$aTypes[$sType], self::ERROR_CLASS_NOT_FOUND));
		}
		return new self::$aTypes[$sType] ($mRes, $iOffset, $iCount);
	}
}
?>


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

04 décembre 2006 17:30:10 :
Modifs mineures sur le package + ajout d'un exemple basique de pager utilisant ce package.
05 décembre 2006 17:39:47 :
Optimisation (j'ai viré des trucs inutiles)

 Sources du même auteur

Source avec Zip ASTUCES/HACK PHP
SQUELETTE DE GESTION DES DROITS
[PHP 5.1] CLASS STRING : NOUVEL EXEMPLE SUR LA SPL
Source avec Zip Source avec une capture [PHP 5.1] PHOTOPHOP (PHPDRAW 2)
Source avec Zip Source avec une capture [PHP5.1] O-LOC : CLASSE ET BACKOFFICE D'INTERNATIONALISATION

 Sources de la même categorie

Source avec Zip GÉNÉRATION AUTOMATIQUE DE FICHIER .CLASS.PHP EN FONCTION D'U... par ig3
CLASSE D'OBJET DE CRYPTAGE ET DÉCRYPTAGE DE CHAINES DE CARAC... par 8Tnerolf8
Source avec Zip MY.DEVIANTART API par inwebo
CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT" par pifou25
Source avec Zip COLLECTION.CLASS.MIN.PHP par thunderhunter

 Sources en rapport avec celle ci

AFFICHÉ SUR UN TABLEAU AVEC PAGINATION ET BASE DE DONNÉES par stormxp
Source avec Zip CLASS SIMPLE CBASEDONNEE par smag42
Source avec Zip Source avec une capture PAGINATION + FICHIER CSS par profdi
Source avec Zip Source avec une capture MOTEUR DE RECHERCHE SUR BASE MYSQL FULLTEXT ET BOOLEAN AVEC ... par cod57
Source avec une capture DECOUPER LE RESULTAT D'UNE REQUETE SUR PLUSIEURS PAGES par MATHIS49

Commentaires et avis

Commentaire de twisteurwin le 02/12/2006 13:36:51

salut !

Je test ca ce week end, d'emblée le code à l'air propre ^^
+++

Commentaire de malalam le 04/12/2006 17:31:15 administrateur CS

Hello,

bah merci.

Pour info, j'ai ajouté un petit exemple basique de pager utilisant ce package (par pager, j'entends pagination).
Le fichier est limit.pager.php

Commentaire de twisteurwin le 04/12/2006 18:05:10

salut,

Bon j'ai testé et j'adopte ^^ 10/10
bonne continuation
+++

Commentaire de twisteurwin le 04/12/2006 18:12:04

re-
Une toute petite remarque tout de même:
  require_once 'package.oLimit.php';
Pourquoi tu ne le met pas comme ca ?
  require_once('package.oLimit.php');

Ca fonctionne sous php5 faut le préciser ^^
+++

Commentaire de twisteurwin le 04/12/2006 18:13:09

J'me réponds lol, c'est indiqué dans le titre xcuse ^^

Commentaire de malalam le 04/12/2006 18:14:51 administrateur CS

Merci twisteur,

par contre, pourquoi mettre des parenthèses, quand tu peux ne pas en mettre...? lol ? Faut que tu m'expliques là ?

Il est précisé en gros dans le titre que c'est un package PHP5 ;-)

Commentaire de malalam le 04/12/2006 18:49:17 administrateur CS

Ah, cette mise en cache un peu longuette... ;-) T'avais répondu avant moi, mais je n'avais pas vu ton message, désolé.

Commentaire de juki_webmaster le 04/12/2006 19:43:30

Je suis deçu que tu ait pas utilisé la PDO :(

Commentaire de malalam le 04/12/2006 20:51:56 administrateur CS

Juki => le but n'était pas de perdre les gens, mais de leur montrer, doucement, des exemples concrets d'utilisation des différentes classes composant la SPL...
DBO, c'est autre chose. Vu les 2 fonctions dont j'ai besoin côté sql...c'est inutile. D'autant plus que peu de monde l'utilise, et que donc, son utilisation aurait demandé bcp trop d'adaptation de la part des utilisateurs. Alors que là...tout reste très simple et compréhensible. Et ce, sans rajouter une couche d'abstraction supplémentaire pour 2 fonctions. Mais dans le cadre d'une classe générique d'abstraction de bdd...ok :-)

Commentaire de guill76 le 04/12/2006 22:45:55

Salut Malalam,
En tout cas, merci pour tes contributions, j'ai, depuis tes dernières sources, compris encore plus de choses sur les itérateurs mais aussi sur les classes abstraites et interfaces, qui amorcent la notion de framework.
Je suis même en train de décortiquer le framework prado qui peut donner encore un plus large évantail de la poo en php.
http://www.pradosoft.com/
c'est biensûr évidement pas de la pub, mais juste que si ça peut éveiller la curiosité, tant mieux.
see you soon.

Commentaire de malalam le 05/12/2006 09:35:05 administrateur CS

Merci Guill,

pour prado, je viens de mater un peu quelques bouts de code : très intéressant, très bien codé, à la pointe de la technologie PHP5 :-) J'aime beaucoup! Et ça donne des idées!
Merci pour le lien!

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Requete SQL et Array [ par dadybond ] Bonjour,Je voudrais savoir si il est possible de faire une requete SQL qui selectionne tous les resultat sauf ceux qui sont contenus dans un tableau ( Problème array et str_replace [ par Tilix ] Salut $sql = 'SELECT contenu FROM cagnote ORDER BY id DESC' ; $req = mysql_query($sql) or die('Erreur SQL !&lt;br&gt;'.$sql.'&lt;br&gt;'.mysql_error( webmail affichage par page des emails [ par astyax ] Salut à tous,voilà, je suis toujours en train de construire mon webmail et j'aimerai savoir comment on fait pour faire un affichage par page. Autant a problème avec requete sql [ par darkwisk ] Salut &#224; tous,Voil&#224; mon probl&#232;me.....J'ai 2 tables dans ma base, La 1&#232;re "maisons"&nbsp;&nbsp;&nbsp; La 2&#232;me "clients"Je voudr Array & MySQl [ par boulika ] BonjourJe dois faire une petit programme avec des données de mysql :je dois récupérer des infos d'une base de données mais de deux tables :$db = mysql recuperer une requete sql dans un array [ par stef1589 ] bonjour à tousje souhaiterais récuperer la table "config" d'une requete mysql dans un array:$requete = mysql_query("SELECT * FROM config");mais apres Restauration BBD ne fonctionne pas [ par LiTtLeBuBu ] Bonjour,Voila j'ai récupérer un script sur le site pour sauvegarder ma BDD. J'ai modifié le script pour enlever les fonctions envoi par mail et FTP. J Enregistrer des résultats ARRAY dans des variables séparée... [ par Sniark ] Bonjour à tous,Dans un formulaire, j'ai des SELECT multiple sous forme de listes, dont le contenu est le résultat d'une requête sur ma base de données sql dans un array [ par Alpha911 ] Bonjour, J'ai parcouru les aides sur les forums mais ce n'est pas tres clair pour moi. Je dispose d'une base de donnée dans laquelle se trouve des ad Array SQL [ par OneHacker ] Bonjour, je sais pas comment afficher un tableau SQL :while($data = mysql_fetch_array($req))     {    // on affiche les informations de l'enregistreme


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,326 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales