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 !

790 commentaire(s) de kankrelune sur des sources sur tout CodeS-SourceS

Le : 27/10/2008 14:33:40
Source : MOTEUR DE TEMPLATE
Attention alphanono si la bufferisation de sortie est déja active au moment ou tu récupère le contenu de ton template ça risque de poser problème... il faudrait plutot faire...

if(is_file($_fichierTpl))
{
    $oldContents = @ob_get_contents();
    if($oldContents === false)
        ob_start();
            else
                ob_clean();

require $_fichierTpl;
$this->template = ob_get_contents();

if($oldContents === false)
ob_end_clean();
else
{
ob_clean();
echo $oldContents;
}
}
else $this->template = "Fichier introuvable : " . $_fichierTpl;

Sinon je rejoins alphanono les conditions, mais surtout les boucles, sont assez utile dans un moteur de template... .. .

@ tchaOo°


Le : 26/10/2008 19:26:32
Source : MOTEUR DE TEMPLATE
@ codefalse... je ne suis pas complètement d'accord... sur un projet "simple" ou seul le moteur de template utilise le cache il n'est pas indispensable d'externaliser la gestion du cache car c'est dans ce cas, à mon avis, que ton code s'alourdit pour rien et où tu multiplie les fichiers pour rien... après si d'autres classes sont amenées à utiliser un cache bien entendu dans ce cas la question ne se pose pas mais sinon ça ne me choque pas de laisser à la classe template la gestion de sont propre cache... .. .

"s'il est présent et lisible donc logiquement je ne devrais avoir aucune erreur"

en informatique "je ne devrais pas avoir" !== à "je n'aurais pas" ;o)

@ tchaOo°


Le : 25/10/2008 00:58:05
Source : CONVERTISSEUR 1337 - FR
$texte=str_replace('a','a',$texte);

t'as pas l'impression qu'il y a des str_replace inutiles (en dehors des tableau en paramètre je rejoins les autres sur ce point)... en mode chiffre_* la moitié des str_replace sont inutiles... .. .

@ tchaOo°


Le : 24/10/2008 20:21:49
Source : SYSTÊME SEMBLABLE AUX CLÉS CD .
Bah en fait les deux sont possible tout dépend de l'algo... tu peux travailler avec juste une clé publique et là ta fonction de vérif est privée ou alors travailler avec une clé privée et une clé publique et ta fonction de vérif tu t'en fout c'est la clé privée qui est importante... c'est le principe des clés RSA... .. .

@ tchaOo°


Le : 24/10/2008 19:13:12
Source : SYSTÊME SEMBLABLE AUX CLÉS CD .
De toute façon en l'état c'est invérifiable n'importe quelle chaine de la bonne longueur correspondra la seule vérification que tu peux faire c'est en la stockant dans une bdd et en la comparant j'appellerais pas ça un générateur de clée mais plutot un générateur de mot de pass c'est un peu plus compliqué que ça un générateur de clée et dans ce cas pas besoin de boucle... .. .

function section_cle($chrs = 10) { return substr(md5(uniqid(rand(), true)), 0, $chrs); }

sauf si tu as besoin d'un pass de plus de 32 caractères... .. .

sinon sur le présent code...

function section_cle($chrs = "")

pas beau ça $chrs est censé être un entier non ? donc...

function section_cle($chrs = 10)

fait attention au typage un chiffre entier ça n'est pas la même chose qu'une chaine de caractère... .. . ;o)

while( strlen( $newstring )< $chrs ) {

$string .= $list[mt_rand(0, strlen($list)-1)];

}

alors déja en l'état je pense que le code ne fonctionne pas pour la simple et bonne raison que $newstring n'existe pas... en imaginant qu'il sagit de $string ici à chaque itération de ta boucle tu utilise strlen()... ce n'est pas utile car tu sais quelle longueur elle avait au début et tu peux donc facilement savoir quelle longueur elle fait... et surtout c'est couteux en perf si ton pass devait faire 200 caractères tu appellerais 200 fois strlen pour pas grand chose... pareil pour le strlen() qui est dans la boucle...

$string = '';
$passLen = 0;
$listLen = strlen($list)-1;

while($passLen++ < $chrs )
    $string .= $list[mt_rand(0,$listLen)];

tu peux même faire...

$string = '';
$passLen = -1;
$listLen = strlen($list)-1;

while(++$passLen < $chrs )
    $string .= $list[mt_rand(0,$listLen)];

si tu veux grapiller... .. .

Voili voilou... le code n'est pas tip top mais c'est en forgeant qu'on devient forgeron... .. .

@ tchaOo°


Le : 24/10/2008 18:57:47
Source : MOTEUR DE TEMPLATE
Là je crois qu'on peut m'élire boulet du jour... pour la peine...


//on ouvre le fichier
if(($fichier = @fopen($chemin,'r')) !== false)
{
    //on recupere tous le contenu du fichier
    $this->_html = @fread($fichier,filesize($chemin));
    //on ferme le fichier
    @fclose($fichier);

    if($this->_html === false)
        throw new laPoReussisALireLFichierException;
}
else throw new laPoReussisAOuvrirLFichierException;

@ tchaOo°


Le : 24/10/2008 18:52:23
Source : MOTEUR DE TEMPLATE
Zut crotte flute j'ai oublié de noter... au passage utiliser les fonctions f****() c'est bien mais faut les tester aussi si l'ouverture du fichier foire ton fread() risque de pas aimer derrière... .. . ;o)

@ tchaOo°


Le : 24/10/2008 18:49:39
Source : MOTEUR DE TEMPLATE
Salut

Pareil j'ai du mal avec les commentaires mais c'est un détail... .. . :o)

Je rejoins les coms précédents sur les notices et les 2 _ à ne surtout pas utiliser le double underscore attention au conventions de nomage... qui plus est toutes tes propriétés étant privées c'est pas utile de les isoler... à la limite le type aurait été plus utile (par ex $sHtml ou $aValeurs)... pareil pour le français anglais... mais bon tout ça ça change pas grand chose au fonctionnement du code... .. . ;o)

@ codefalse : pour le file_get_contents c'est plus court mais moins performant perso j'utilise encore souvent le trio f****() c'est pas pour les 3 lignes que ça prend et au moins tu peux gérer tes erreurs en fonction du moment où ça bloque... ;o)

Sinon dans les grandes lignes (je n'ai pas tout épluché) c'est plutôt bien codé, bien indenté, etc... par contre y a un truc qui me choque

dans ta fonction parse...

#  // on recupere toutes les variables
# preg_match_all('/{(.*?)}/',$chaine,$resultat,PREG_SET_ORDER);
#
# //on remplace toutes les variables par leur valeur
# foreach($resultat as $key => $value) {
# //si on a pas de valeur alors on supprime la variable
# if(!isset($valeur[$value[1]])) {$valeur[$value[1]] = '';}
# $chaine = preg_replace('/{'.$value[1].'}/',$valeur[$value[1]],$chaine);
# }

la syntaxe de tes variables est fixe c'est juste une valeur à insérer contrairement à celle d'un block qui définit une portion de code qui sera réutilisé en boucle il est inutile et surtout couteux en perf d'utiliser les regexp ici... un simple...

foreach($resultat as $key => $value)
   $chaine = str_replace('{'.$key.'}', $value, $chaine);

(au passage un conseil stock tes délimiteurs de tag dans des propriétées ça sera plus facile à gérer si tu es amené à les modifier... ce qui donnerait str_replace($this->sOpenVar.$key.$this->sCloseVar,...)

pareil pour ton...

$chaine = preg_replace('/\['.$nom[1].'\]/',$resultatparse,$chaine);

str_replace() devrait suffire... .. .

Sinon c'est un détail mais pourquoi tu met entre parenthèse tes fonctions dans tes block de condition... tu alourdis ton code pour rien... .. .

if(!(file_exists($chemin)))

php évalue 2 fois le retour de ta fonction c'est pas utile ici...

if(!file_exists($chemin))

suffit... .. .

Voili voilou ce que j'en pense pas grand chose à dire... il serait intéressant d'y intégrer un petit gestionnaire de cache activable ou non en fonction du template... je met 8/10... .. .

@ tchaOo°


Le : 19/10/2008 21:54:57
Source : SÉLECTION D'UNE TABLE MYSQL
Muarf oublié de changer le while dans la dernière portion de code... .. .

Et pour finir... parce que dire de vérifier si une variable est instanciée avant de l'utiliser c'est bien mais le montrer c'est mieux... .. .

if(isset($_POST['test']) && !empty($_POST['test']))
   $test_page = $_POST['test'];
      else
         $test_page = 'aucune table sélectionné';

;o)

@ tchaOo°


Le : 19/10/2008 21:48:27
Source : SÉLECTION D'UNE TABLE MYSQL
Salut Melo... le problème ne réside pas dans le fait que tu sois débutant mais dans l'utilité, ou non, de cette source qui au final n'en est pas une... ce code ne peut pas servir... d'une part parce qu'il n'a aucune utilité et d'autre part parce qu'il n'est pas fonctionnel... .. .

Déja tu ne dois pas passer par une super globale pour sélectionner ta table... la sélection de tes tables se fait au moment de ta requête et si tu veux changer de bdd à la volée fais le via une base de données tiers ou un fichier de conf mais pas via une variable $_POST... d'une part ces variables étant soumise par l'internaute ne sont pas des variables sûr et d'autre part ces variables sont volatile d'une page à l'autre tu perd ta valeur à moins de relancer une requète post via un socket ou de passer le nom de ta table dans l'url ce qui est encore pire... .. .

Bref c'est pas trop viable comme technique... sinon que ce passe t'il si on accède directement à ta page affichage selection (met error_reporting à E_ALL dans ton php.ini) à la limite stock le résultat en session si tu veux juste un stockage temporaire et que tu ne veux pas utiliser de fichier de conf ou autre... .. .

au passage...

while ($row = mysql_fetch_row($result))

=>

while(($row = mysql_fetch_row($result)) !== false)

et d'ailleurs tu ne teste pas le retour de ta requête... .. .

$sql = 'SHOW TABLES FROM '.$bdd;
$result = mysql_query($sql);

if($result !== false)
{
    echo '<select name="table" id="table">';
    
    while ($row = mysql_fetch_row($result))
        echo '    <option value="'.$row[0].'">'.$row[0].'</option>'."\n";
    
     echo '</select>';
    mysql_free_result($result);
}
else echo 'impossible de lister les tables de la base '.$bdd;

Mais bon cette source ne sert malheureusement à rien... il faut poster des sources ayant un minimum d'utilité pour les autres développeur pas forcement des sources compliquée mais qui peuvent être reprise pour d'autres développement et là ça n'est pas le cas... .. .

@ tchaOo°





Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,156 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.