|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
GÉRER DES LISTES AVEC TSTRINGLIST [POO]
Information sur la source
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
Pour les "Membres Club", vous pouvez 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
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
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éer les liens d'un menu en les insérant dans une
Recuperation des données d'une requete dans une liste deroulante impossible [ par Maiku ]
BonjourJ'essaye de recuperer toutes les données d'un champ de ma base de donnée dans une liste déroulante. Confronté à 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à je m'y connais assez en PHP, mais là je suis bloqué.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à mon truc g une liste deroulantes qui est liées a une autre, elles marchent mais les infos sont écrites en dure j'aimerai fai
tri sur 2 tableaux .... [ par djagger ]
Salut !Voici mon problème.J'ai 2 tableaux, correspondant à des noms et les id associées à 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
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|