begin process at 2012 02 11 01:11:10
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Class et Objet ( POO )

 > GÉRER DES LISTES AVEC TSTRINGLIST [POO]

GÉRER DES LISTES AVEC TSTRINGLIST [POO]


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Class et Objet ( POO ) Classé sous :tstringlist, chaines, tableaux, array, liste Niveau :Initié Date de création :25/08/2005 Date de mise à jour :25/08/2005 09:49:29 Vu / téléchargé :6 285 / 729

Auteur : grandvizir

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

 Description

Gestion de panier: ajouter, insérer, déplacer, supprimer, trier, repérer, vider, enregistrer dans un fichier, afficher dans le navigateur...

C'est une classe PHP opérationnelle, testée et retestée (!) qui reprend les lignes essentielles de la classe TStringList disponible en langage Delphi (cf classes.pas).

Le fonctionnement de la classe est simple : tous les items sont juxtaposés dans une chaîne de caractères et séparés par le caractère #0 de la table ASCII (non disponible sur le clavier).
ATTENTION: si vous ajoutez un item comportant ce caractère, toute la liste sera faussée. Le caractère est paramétrable via la variable $FSep.

En principe, avec cette classe, on peut gérer facilement des paniers sachant que la classe a des relations E/S permettant des enregistrements et des restaurations faciles depuis les fichiers.

Testé sur:
  Apache 1.3.27
  PHP 4.3.3
  Windows

Source

  • <?php
  • class TStringList {
  • //==================================== VARIABLES INTERNES
  • /*private*/ var $FSep = '';
  • /*private*/ var $FContent = '';
  • //==================================== UTILITAIRES
  • /*private*/ function CountCharInStr($Char, $String) {
  • $Cnt = 0;
  • for ($x=0 ; $x<strlen($String) ; $x++)
  • if ($String[$x] == $Char)
  • $Cnt++;
  • return $Cnt;
  • }
  • /*private*/ function IL_CheckError($Index) {
  • return ($Index<0) || ($Index>=$this->Count());
  • }
  • /*private*/ function Min($I1, $I2) {
  • if ($I1<$I2)
  • return $I1;
  • else
  • return $I2;
  • }
  • /*private*/ function AnsiCompareString($S1, $S2) {
  • for ($idx=0 ; $idx < $this->Min(strlen($S1),strlen($S2)) ; $idx++)
  • if (Ord($S1[$idx]) < Ord($S2[$idx]))
  • return true;
  • else
  • return false;
  • }
  • //==================================== CORPS GENERAL
  • /*public*/ function ResetList() {
  • $this->FSep = chr(0);
  • $this->FContent = '';
  • }
  • /*public*/ function Count() {
  • return $this->CountCharInStr($this->FSep, $this->FContent);
  • }
  • /*public*/ function Add($Value) {
  • $this->FContent .= $Value . $this->FSep;
  • }
  • /*public*/ function Delete($Index) {
  • if ($this->IL_CheckError($Index))
  • Exit;
  • $Rsl = '';
  • for ($x=0 ; $x<=$this->Count() - 1 ; $x++)
  • if ($x != $Index)
  • $Rsl .= $this->GetItem($x) . $this->FSep;
  • $this->FContent = $Rsl;
  • }
  • /*public*/ function Insert($Index, $Value) {
  • $Rsl = '';
  • for ($x=0 ; $x<$this->Count() ; $x++) {
  • if ($x == $Index)
  • $Rsl .= $Value . $this->FSep;
  • $Rsl .= $this->GetItem($x) . $this->FSep;
  • }
  • if ($Index == $this->Count())
  • $Rsl .= $Value . $this->FSep;
  • $this->FContent = $Rsl;
  • }
  • /*public*/ function Move($CurIndex, $NewIndex) {
  • $Rsl = $this->GetItem($CurIndex);
  • $this->Delete($CurIndex);
  • if ($NewIndex > $CurIndex)
  • $NewIndex--;
  • $this->Insert($NewIndex,$Rsl);
  • }
  • /*public*/ function GetItem($Index) {
  • $Rsl = '';
  • $Last = 0;
  • $Cnt = 0;
  • if ($this->IL_CheckError($Index))
  • Exit;
  • for ($x=0 ; $x<strlen($this->FContent) ; $x++)
  • if ($this->FContent[$x] == $this->FSep) {
  • if ($Index == $Cnt) {
  • $Rsl = substr($this->FContent, $Last, $x-$Last);
  • break;
  • }
  • $Cnt++;
  • $Last = $x+1;
  • }
  • return $Rsl;
  • }
  • /*public*/ function SetItem($Index, $Value) {
  • if ($Index > $this->Count()-1)
  • $this->Add($Value);
  • else {
  • if ($this->IL_CheckError($Index))
  • Exit;
  • $Rsl = '';
  • for ($x=0 ; $x<=$this->Count()-1 ; $x++)
  • if ($x == $Index)
  • $Rsl .= $Value . $this->FSep;
  • else
  • $Rsl .= $this->GetItem($x) . $this->FSep;
  • $this->FContent = $Rsl;
  • }
  • }
  • /*public*/ function Clear () {
  • $this->FContent = '';
  • }
  • /*private*/ function SortEx($SortMode) {
  • for ($i=1 ; $i<$this->Count() ; $i++) {
  • $Locked = false;
  • for ($n=0 ; $n<$i ; $n++) {
  • if (($this->AnsiCompareString($this->GetItem($i), $this->GetItem($n))==$SortMode) && !$Locked) {
  • $this->Move($i,$n);
  • $Locked = true;
  • }
  • }
  • }
  • }
  • /*public*/ function Sort() {
  • $this->SortEx(true);
  • }
  • /*public*/ function RevSort() {
  • $this->SortEx(false);
  • }
  • /*public*/ function IndexOf($Value) {
  • $Position = -1;
  • for ($x=0 ; $x<$this->Count() ; $x++)
  • if ($this->GetItem($x)==$Value) {
  • $Position=$x;
  • break;
  • }
  • return $Position;
  • }
  • /*public*/ function AddToFile($FileName) {
  • $fichier = fopen($FileName, 'a+');
  • fputs($fichier, $this->FContent);
  • fclose($fichier);
  • }
  • /*public*/ function LoadFromString($Value) {
  • $this->FContent = $Value;
  • }
  • /*public*/ function LoadFromFile($FileName) {
  • $fichier = fopen($FileName, 'r');
  • $this->FContent = fread($fichier, filesize($FileName));
  • fclose($fichier);
  • }
  • /*public*/ function Display() {
  • echo str_replace($this->FSep, '<br>', $this->FContent);
  • }
  • } //fin CLASS
  • ?>
<?php
  class TStringList {

//==================================== VARIABLES INTERNES
    /*private*/ var $FSep = '';
    /*private*/ var $FContent = '';

//==================================== UTILITAIRES
    /*private*/ function CountCharInStr($Char, $String) {
      $Cnt = 0;
      for ($x=0 ; $x<strlen($String) ; $x++)
        if ($String[$x] == $Char)
          $Cnt++;
      return $Cnt;
    }

    /*private*/ function IL_CheckError($Index) {
      return ($Index<0) || ($Index>=$this->Count());
    }

    /*private*/ function Min($I1, $I2) {
      if ($I1<$I2)
        return $I1;
      else
        return $I2;
    }

    /*private*/ function AnsiCompareString($S1, $S2) {
      for ($idx=0 ; $idx < $this->Min(strlen($S1),strlen($S2)) ; $idx++)
        if (Ord($S1[$idx]) < Ord($S2[$idx]))
          return true;
        else
          return false;
    }

//==================================== CORPS GENERAL
    /*public*/ function ResetList() {
      $this->FSep = chr(0);
      $this->FContent = '';
    }

    /*public*/ function Count() {
      return $this->CountCharInStr($this->FSep, $this->FContent);
    }

    /*public*/ function Add($Value) {
      $this->FContent .= $Value . $this->FSep;
    }

    /*public*/ function Delete($Index) {
      if ($this->IL_CheckError($Index))
        Exit;
      $Rsl = '';
      for ($x=0 ; $x<=$this->Count() - 1 ; $x++)
        if ($x != $Index)
          $Rsl .= $this->GetItem($x) . $this->FSep;
      $this->FContent = $Rsl;
    }

    /*public*/ function Insert($Index, $Value) {
      $Rsl = '';
      for ($x=0 ; $x<$this->Count() ; $x++) {
        if ($x == $Index)
          $Rsl .= $Value . $this->FSep;
        $Rsl .= $this->GetItem($x) . $this->FSep;
      }
      if ($Index == $this->Count())
        $Rsl .= $Value . $this->FSep;
      $this->FContent = $Rsl;
    }

    /*public*/ function Move($CurIndex, $NewIndex) {
      $Rsl = $this->GetItem($CurIndex);
      $this->Delete($CurIndex);
      if ($NewIndex > $CurIndex)
        $NewIndex--;
      $this->Insert($NewIndex,$Rsl);
    }

    /*public*/ function GetItem($Index) {
      $Rsl = '';
      $Last = 0;
      $Cnt = 0;
      if ($this->IL_CheckError($Index))
        Exit;
      for ($x=0 ; $x<strlen($this->FContent) ; $x++)
        if ($this->FContent[$x] == $this->FSep) {
          if ($Index == $Cnt) {
            $Rsl = substr($this->FContent, $Last, $x-$Last);
            break;
          }
          $Cnt++;
          $Last = $x+1;
        }
      return $Rsl;
    }

    /*public*/ function SetItem($Index, $Value) {
      if ($Index > $this->Count()-1)
        $this->Add($Value);
      else {
        if ($this->IL_CheckError($Index))
          Exit;
        $Rsl = '';
        for ($x=0 ; $x<=$this->Count()-1 ; $x++) 
          if ($x == $Index)
            $Rsl .= $Value . $this->FSep;
          else
            $Rsl .= $this->GetItem($x) . $this->FSep;
        $this->FContent = $Rsl;
      }
    }

    /*public*/ function Clear () {
      $this->FContent = '';
    }

      /*private*/ function SortEx($SortMode) {
        for ($i=1 ; $i<$this->Count() ; $i++) {
          $Locked = false;
          for ($n=0 ; $n<$i ; $n++) {
            if (($this->AnsiCompareString($this->GetItem($i), $this->GetItem($n))==$SortMode) && !$Locked) {
              $this->Move($i,$n);
              $Locked = true;
            }
          }
        }
      }

    /*public*/ function Sort() {
      $this->SortEx(true);
    }

    /*public*/ function RevSort() {
      $this->SortEx(false);
    }

    /*public*/ function IndexOf($Value) {
      $Position = -1;
      for ($x=0 ; $x<$this->Count() ; $x++)
        if ($this->GetItem($x)==$Value) {
          $Position=$x;
          break;
        }
      return $Position;
    }

    /*public*/ function AddToFile($FileName) {
      $fichier = fopen($FileName, 'a+');
      fputs($fichier, $this->FContent);
      fclose($fichier);
    }

    /*public*/ function LoadFromString($Value) {
      $this->FContent = $Value;
    }

    /*public*/ function LoadFromFile($FileName) {
      $fichier = fopen($FileName, 'r');
      $this->FContent = fread($fichier, filesize($FileName));
      fclose($fichier);
    }

    /*public*/ function Display() {
      echo str_replace($this->FSep, '<br>', $this->FContent);
    }

  } //fin CLASS
?>

 Conclusion

Vous pouvez toujours allez voir http://altert.family.free.fr/

IMPORTANT: le Zip propose un script de démonstration.

 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

25 août 2005 09:49:29 :
?

 Sources du même auteur

Source avec Zip JEU DU MORPION INTELLIGENT: HUMAIN VERSUS PHP
Source avec Zip PROTÉGER LE TÉLÉCHARGEMENT DES FICHIERS ZIP
Source avec Zip GÉRER DES FICHIERS DE CONFIGURATION INI [POO]
EXTENSIONS CHARGÉES SUR UN SERVEUR
Source avec Zip Source avec une capture VISUALISER LE CONTENU D'UN FICHIER *.ZIP

 Sources de la même categorie

CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT" par pifou25
Source avec Zip COLLECTION.CLASS.MIN.PHP par thunderhunter
Source avec Zip SIMPLETEMPLATE par thunderhunter
Source avec Zip Source avec une capture VOIR QUI VISITE VOTRE SITE par Dariumis
Source avec Zip CLASS SIMPLE CBASEDONNEE par smag42

 Sources en rapport avec celle ci

Source avec Zip CLASSE D'OBJET DE RECHERCHE DE MOTS DANS DES TABLEAUX ET/OU ... par 8Tnerolf8
CRÉER UN PARSEUR LL par Morphinof
PARCOURS DE TABLEAU À L'AIDE D'ATTRIBUTS HTML "NAME par choy
CONVERSION D'UN TABLEAU HTML EN ARRAY PHP par Don_Angelo
Source avec une capture DECOUPER LE RESULTAT D'UNE REQUETE SUR PLUSIEURS PAGES par MATHIS49

Commentaires et avis

Commentaire de loxyey le 24/12/2005 03:52:59

Bon, je suis nul en php, et il me falait un panier, et bien cette source qui est marqué initié, et bien elle est facilement compréhensible grace au fichier magique index.php, tout semble si simple, j'ai réussi a mettre en place ma boutique.

un grand merci pour cette class facil d'usage, mais bon apres je m'aventure pas dans le code de la class, c'est du chinoi melanger au russe. ;)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

insertions multiples (case à cocher, champs ...) [ par PatX ] Bonjour !J'ai un petit soucis avec l'administration de mon menu : le but du jeu, c'est de cr&#233;er les liens d'un menu en les ins&#233;rant dans une Recuperation des données d'une requete dans une liste deroulante impossible [ par Maiku ] BonjourJ'essaye de recuperer toutes les donn&#233;es d'un champ de ma base de donn&#233;e dans une liste d&#233;roulante. Confront&#233; &#224;&nbsp;c les tableaux de tableaux... [ par Teclis01 ] Bonjour, En fait j'aimerais faire des tableaux de tableaux et je n' y arrive pas en php mais en dessin oui donc si vous pouviez m'aider a trouver la [Tableaux] Décaler les valeurs [ par tomix81 ] bonjour,J'ai un tableau defini comme suit:Code :<pre class="alt2" style="BORDER-RIGHT: 1px inset; PADDING-RIGH valeur dans un array recup d'une table [ par rduvrac ] Bonjour Je cherche à générer une liste pour l'insérer dans un tableau. j'ai ce code : $listegeneree = array (1, 2, 5, 6, 7); $result = array_rand ($l Tableaux Multidimentionnels (question relativement tordue ^^) [ par Tizard ] Bonjour, alors voil&#224; je m'y connais assez en PHP, mais l&#224; je suis bloqu&#233;.Donc j'ai un tableau de ce type (c'est un jeu de cartes)Array Au secours avec les tableaux [ par defkrie ] voila j1 un tableau du style$l1 = array("0", "0", "0", "0", "0", "0", "0", "0");$l2 = array("0", "0", "0", "0", "0", "0", "0", "0");$l3 = array("0", " Liste deroulante avec base de données [ par bandzai87 ] Donc voil&#224; mon truc g une liste deroulantes qui est li&#233;es a une autre, elles marchent mais les infos sont &#233;crites en dure j'aimerai fai tri sur 2 tableaux .... [ par djagger ] Salut !Voici mon probl&#232;me.J'ai 2 tableaux, correspondant &#224; des noms et les id associ&#233;es &#224; ces noms:$mesNoms=array();$mesNoms[0]="F liste deroulante prends des valeur selon le choix du 1ere liste onchage php/javascript [ par jalilham ] salut a tousBonjour,jai un formulaire contient 2 combox 1 rempli par le


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 6,661 sec (3)

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