ste
-
Compteur de contenus
167 -
Inscrit(e) le
-
Dernière visite
Messages postés par ste
-
-
Gestion de menus
dans PHP
Bonjour,
Je suis l'auteur du site suivant,, dans les sections j'ai un menu correspondant au nombre "d'articles", cf pour l'exemple ...
Celui qui survole les liens de ce menu se rendra compte que les liens sont gérés ainsi :
-http://nom_de_domaine.net/ecrit/section/0/15/titre/#titre
Le problème de cette gestion est qu'un "article" peut avoir plusieurs URL.
Ce que je voudrais arriver à faire est de gèrer un menu, si possible en PHP, qui me permette une gestion de "pages" et de "nombres de liens par page" (presque comme l'existant) sans les implémenter dans l'URL afin d'avoir une et une seule URL par "article".
(-http://nom_domaine.net/ecrit/section/titre/#titre)
(Très possible que je ne sois pas très clair, sur ce coup !)
Bref, je ne vois pas comment réécrire un code en PHP.
Quelle astuce puis-je utiliser pour garder une gestion de page et de nombres de liens par page sans l'implémenter dans l'écriture des URLs ?
-
gestion de caractères
dans PHP
La sous-chaîne (substr) est effectivement plus rapide, mais cela présume que c'est toujours au même emplacement que se trouve la date.J'avais toutefois dit "... serait plus rapide ? A essayer !" C'était donc "sous réserve de vérification"
Si c'est toujours précédé par "fichier_" ... on est d'accord. Sinon, c'est peut-être plus rapide mais cela ne donnera pas la bonne valeur
Disons que la chaine de caractères précédant la date est connue et est toujours la meme...
Néanmoins ta remarque sur la valeur retournée est exact au cas où ela chaine de caractères serait différente !
merci à tous deux ...
-
gestion de caractères
dans PHP
Peut-être que:$var=ereg_replace(".*_(.*)\.ext","\\1",$var);
serait plus rapide ? A essayer !
Dan
meric, Dan...
je penchais assez pour une solution de ce genre, mais je doutais
Et merci pour avoir supprimer le doublon involontaire !
Si les dates sont toujours codees sur 6 chiffres, la methode suivante est plus rapide :$date = substr($var, 8, 6);
(...)
Et la proposition de Dan est plus lente que la formulation de depart
Eh, beh là je suis bluffé ...
je retiens ton petit script assez intéressant au demeurant.
Ensuite que substr dans ce contexte soit plus rapide que ereg ne m'étonne pas ...
D'autant que pour mémoire, le site php.net recommande justement d'utiliser de préférence les fonctions *str* que *reg* car moins gourmand en ressources.
Un petit script en fournit une preuve ... chapeau !
-
gestion de caractères
dans PHP
bonjour ...
je cherche à améliorer un certain code php qui me fait un "tri" sur une chaine de caractères, qui se trouve être un nom de fichier.
Le nom de fichier est écrit ainsi : fichier_AAAAMM.ext
Le code que j'ai créé pour récupèrer la valeur AAAAMM est celui-ci (mais je le trouve trop lourd...) :
$xploz = explode("_", $var);
$xplod = explode('.', $xploz[1]);
$date = $xplod[0];Je suis sûr qu'il y a bien mieux (ayant peu dormi, j'ai du mal, j'avoue )
N'est-ce pas ?
-
Pour ton <a>, essaie plutot une synthaxe comme celle-ci :
...
En fait, j'y suis arrivé avec cette syntaxe XSLT :
<xsl:template match="info">
=> <a href="{url}" title="{nom}"><xsl:value-of select="nom"/></a><br />
</xsl:template>Maintenant, ma question est : si mon code XML est celui-ci :
<info xlink:href="/changelog/">changelog</info>
meme l'écriture que tu me donnes ne fonctionne pas puisque retourne une erreur Sablotron.
comment je puis faire pour implémenter l'écriture XSLT afin d'avoir une restitution correcte de l'élément a ?!
-
bonjour all,
j'avoue avoir un peu de mal avec le traitement de fichier XML, XSLT ...
Bref, j'ai un fichier XML :
<?xml version="1.0" encoding="UTF-8"?>
<distrib>
<info>
<nom>changelog</nom>
<url>/changelog/</url>
</info>
<info>
<nom>download</nom>
<url>/download/</url>
</info>
<info>
<nom>commander</nom>
<url>http://ikarios.com/form#knoppix</url>
</info>
</distrib>voici le fichier XSL :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="info">
=> <a href=""><xsl:value-of select="nom"/></a><br />
</xsl:template>
</xsl:stylesheet>le code PHP dont je me sers pour traiter les deux :
<p>
<?php
$xml_entry = xslt_create();
$xml_out = xslt_process($xml_entry, XMLS.'/version.xml', XMLS.'/version.xsl');
xslt_free($xml_entry);
echo $xml_out;
?>
</p>Mon premier soucis est qu'il me restitue la déclaration d'encodage xml ( <?xml version="1.0" encoding="UTF-8"?> ), juste avant le retour du flux xml ; résultat ma page xhtml est en erreur (cf la page de dev )
Deuxième point, je n'arrive pas à intégrer le champ url dans le traitement xsl. Je ne vois vraiment pas comment faire.
Merci par avance à ceux qui m'aideront.
-
Bon, eh bien, j'y suis enfin arrivé à le faire fonctionner.
Voici le code :
function __delete_tmp($path)
{ //var_dump($path);
chmod($path, 0777);
$dir_tmp = opendir($path);
/*** tant que la condition est juste en type alors on lit ***/
while(false !== ($file_tmp = readdir($dir_tmp)))
{
if($file_tmp != '.' && $file_tmp != '..')
{
$path_tmp = $path.'/'.$file_tmp;
if(!empty($path_tmp) && is_file($path_tmp))
{
unlink($path_tmp);
}
else
{
$this->__delete_tmp($path_tmp);
}
}
}
closedir($dir_tmp);
rmdir($path);
}Pour ceux qui se demandent ce que cela change au fond, j'ai usé dans ce script de variable normale et non de variable array ...
ainsi la méthode fonctionne.
Et, pour info, et pour répondre à Anonymous, l'usage d'une variable globale dans l'appel de la méthode n'est en rien génant.
Une fois le script fonctionnel, j'ai testé avec et sans, et ça roule !!!
++
-
D'un coté, tu as function __delete_tmp($path)
et de l'autre, tu appelles : $this->__undelete_tmp(DIR.'/.')'
Cherches tu au bon endroit ?
oui, oui ... enfin il me semble bien ...
arfff, pardon : je l'appelle bien par $this->__delete_tmp(DIR.'/.')'; et non $this->__undelete_tmp(DIR.'/.');
-
Bon, ça ne me dit pas pourquoi il ne fonctionne pas correctement !
???
il descend au répertoire le plus profond ...
et ne supprime strictement rien !
-
Bon, je me répons à moi-même :
j'ai oublié de gérer les fichiers '.' et '..' et je ne retournais pas sur le bon répertoire !
(erreurs de débutants ... tsss)
le bon code est celui-ci :
function __delete_tmp($path)
{
$this->dir = opendir($path);
/*** tant que la condition est correct en type alors on lit ***/
while(false !== ($this->file['del'] = readdir($this->dir)))
{
if($this->file['del'] != '.' && $this->file['del'] != '..')
{
$this->path = $path.'/'.$this->file['del'];
if(is_dir($this->path))
{
$this->__delete_tmp($this->path);
}
else
{
unlink($this->path);
}
}
}
closedir($this->dir);
rmdir($path);
} -
Bonjour, all...
je travaille sur un class dans laquelle j'implémente une méthode de destruction recursive qui me pose soucis à-priori :
code de la méthode :
function __delete_tmp($path)
{
$dir['tmp'] = dir($path);
while($this->file['del'] = $dir['tmp']->read())
{
if(is_dir($this->file['del']))
{
$this->__delete_tmp($path.'/'.$this->file['del']);
rmdir($this->file['del']);
}
else unlink($this->file['del']);
}
$dir['tmp']->close();
}quand je l'appelle ainsi '$this->__undelete_tmp(DIR.'/.')' où DIR est une constante, il me retourne Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 3496 bytes) in /directory/script.php on line 125
la ligne 125 étant $this->__delete_tmp($path.'/'.$this->file['del']); dans la condition if(is_dir(...))
voili, voilou ... y'a certainement quelque chose qui cloche, mais là, je ne le vois pas.
merci d'avance.
-
C'est sûr que c'est plus simple ...
L'usage de la variable permettant de la réutiliser, sans parler que je trouve plus lisible !
-
En php, c'est quand même mieux
déclare en début de page :
<?php
$date_du_jour = date("Ymd");
?>après à toi d'inclure la variable $date_du_jour au bon endroit dans ta page PHP (et non plus HTML, sinon ça ne fonctionnera pas), au moment de l'appel de ton script, du style :
13h_<?php echo $date_du_jour; ?>.wmv
Voilà, c'est une idée comme une autre ...
-
Personnellement, je ne me suis pas tracassé autant ...
chaque vers est une nouvelle ligne, donc usage de l'élèment p
-
Bonjour,
je tatonne XML, tant bien que mal...
j'ai réussi à créer une classe pour parser du XML en PHP, dont voici les sources.
Ce que je ne comprends pas, et donc n'arrive pas à faire, et de parser le XML au final, non pas en echo, mais dans une variable multidimensionnelle, un tableau PHP...
Des conseils, svp ?!
-
Salut,
Je cherche à analyser l'url ayant servie à accéder à une page afin de savoir s'il y a dedans un #nomDuneAncre à la fin.
Et j'ai beau fouiller dans $_SERVER et consorts, je ne vois nulle part de #, même si j'en tape moi même dans l'url.
Quelqu'un saurait comment récupérer ça, svp ?
regarde du côté de la function parse_url en php !
-
encadre donc ta boucle foreach par un 'if( is_array($matprem) ) {', ainsi si ta variable $matperm est bien un tableau (multi)dimensionnel, elle s'exécutera...
un début de piste ... pour ce que ca vaut
-
kikooo all
j'ai un flux xhtml, auquel je cherche à détecter tous les liens pour leur appliquer un zeste de functions avant de les réinjecter dans le flux.
mon code :
function recodeURL($html) {
preg_match_all('!href="(.+)"!isU', $str, $href);
$this->xploz = explode('"', $href[0][1]);
/*** traitement url ***/
$url = parse_url($this->xploz[1]);
if( !empty($url['user']) && !empty($url['password']) ) $url['xhtml2pdf']['user_pass'] = $url['user'].':'.$url['password'].'@';
else $url['xhtml2pdf']['user_pass'] = '';
$url['xhtml2pdf']['href'] = $url['scheme'].'://'.$url['xhtml2pdf']['user_pass'].$url['host'];
if( !empty($url['path']) ) $url['xhtml2pdf']['href'] = $url['xhtml2pdf']['href'].$url['path'];
if( !empty($url['query']) ) $url['xhtml2pdf']['href'] = $url['xhtml2pdf']['href'].'?'.urlencode($url['query']);
if( !empty($url['fragment']) ) $url['xhtml2pdf']['href'] = $url['xhtml2pdf']['href'].'#'.$url['fragment'];
/*** pattern ***/
$search = '!href="(.+)"!isU';
$replace = 'href="'.$url['xhtml2pdf']['href'].'"';
$str = preg_replace($search, $replace, $str);
return($str);
unset($href, $url, $search, $replace);
}sauf que dans l'état, la méthode prend la valeur de l'attribut href et la restitue à l'ensemble des liens qui peut exister dans mon flux html...
au lieu d'appliquer celle qui correspond à son lien !
J'ai certainement loupé quelque chose ... mais quoi ?!
-
Tu as raison de mettre le tiret au début, c'est là qu'il faut le mettre.
Par contre, il n'est pas utile de faire précéder le _ par un \ ... ce caractère n'ayant aucune signification particulière
Dan
<{POST_SNAPBACK}>
Dan, merci pour ces précisions ... je vais modifier en conséquence.
Pour le caractère underscore, j'avais compris qu'il fallait l'échapper.
Merci encore.
-
Dans une règle de réécriture, le point (.) en premier argument correspond à n'importe quel caractère.
Pour comparer avec un point décimal, il faut le faire précéder d'un backslash: \.
Dan
<{POST_SNAPBACK}>
Dan, merci ... à ne pas me répondre, tu m'aurais étonné... l'est trop calé ce Dan
J'avais bien compris ce point ... sauf que quand je mets à la fin de l'expression, cela ne voulait pas fonctionner correctement - donc, je le mets en début de mon expression et ça marche :
([-\_\.a-zA-Z0-9]+)
-
RewriteRule ^([-a-zA-Z]+)/([-a-zA-Z\.]+)/?$ index.php?variable1=$1 [L]
Marche pas ça ??
Quels sont les valeurs possibles des valeurUne et valeur1.2.3 ??
<{POST_SNAPBACK}>
Justement 'valeur1.2.3' peut être une valeur comportant un voire plusieurs '.' (points) !
Et, apparement, tu as répondu à ma question ... merci.
-
pour une url de ce type http://www.mondomaine.com/valeurUne/valeur1.2.3/
comment je puis écrire l'URL rewriting dans le .htaccess ?
car en essayant ça, ca ne fonctionne pas
RewriteRule ^([a-zA-Z\-]+)\/?$ index.php?variable1=$1 [L]
RewriteRule ^([a-zA-Z\-]+)\/?(.*)\/?$ index.php?variable1=$1&variable2=$2 [L]Apparement ce sont les point qui ne sont pas appréciés : comment faire ?
merci d'avance...
-
Et, tu as bien raison de me le rappeller ...
Je le corrigerais au plus tôt !
Merci a toi, Azon.
EDIT : c'est fait !
-
Salut
Justement en UTF-8 non Et tant mieux d'ailleurs ..
<{POST_SNAPBACK}>
En effet, tu as raison, seulement la pratique m'a démontré que c'était préférable !
Ca évite bien des soucis de sauvegarde et de lecture hors-ligne.
Maintenant, après, ce que j'en dis...
probleme avec FPDF
dans PHP
Posté
C'est parce que dans ton cas, tu as renseigné un nom de fichier,
Or, dans ce cas-là, et s'il n'existe pas de chaine de destination, le fichier est sauvegardé en local.
(lire pour cela la page sur la sortie Ouput de FPDF ... afin de mieux comprendre )
Tout est de savoir où ? Certainement dans le même répertoire que ta classe FPDF...