phpInfo.netLes ArchivesLes éléPHPants

  
  Accueil
  Trucs & Astuces
  Scripts
  Regex
  Annuaire
  Articles

.
      
 Astuces   PHP  Structures


Automatiser l'inclusion conditionnelle sous PHP3[09-12-2001]
Posté par Pauline

Pour généraliser l'astuce Ne pas inclure deux fois le même fichier, il y a un moyen encore plus systématique qui est INDEPENDANT du nom du fichier :

<?
if ( !defined($_inc_ = ereg_replace("[^a-zA-Z0-9_]", "", __FILE__)) )
{
  
define($_inc_,1);

  
// contenu du fichier
  // ....
}
?>


Cette astuce est utile si vous avez de nombreux fichiers d'include et que le suivi des define devient lourd. Le if (...) ci-dessus crée automatiquement le nom de la variable defined sans que vous ayez à vous soucier à la nommer.

NB 1: A utiliser seulement sur les GROS projets, étant donné le coût du ereg_replace.
NB 2: Inutile sous PHP4 ou +, qui intègre include_once()

Inclure des page de répertoires différents[09-09-2001]
Posté par Yves Fleury

Lorsque vous entrez profondémment dans un site web comme ceci www.monsite.com/recherche/resultat/mapage.php vous savez qu'il peut être difficie d'inclure une page PHP qui est à la racine du site www.monsite.com/ ou dans un autre répertoire comme www.monsite.com/inscription/.

Surtout si la page à inclure inclut elle-même d'autres éléments comme une page ou des images qui sont contenues dans d'autres répertoires.

Voici mon truc : dans la page qui sera appelée par le navigateur, placez ceci.

<?
$racine
= str_repeat("../", substr_count(dirname($SCRIPT_NAME),"/"));
?>

La variable $racine contient le nombre de ../ pour revenir à la racine du site web. A partir de la, vous pouvez aller vers le répertoire et le fichier de votre choix.

Toujours dans la page appelée par le navigateur, vous pouvez inclure les fichiers d'un autre répertoire comme ceci :
<?
include ($racine."status/status.php");
?>

Même les liens HTML <a href=... et <img src=... peuvent le faire comme ceci :
<a href="<? echo $racine?>home/deny/ren.htm>... et
<img src="<? echo $racine?>images/monimage.gif>...


Parcourir proprement un tableau[14-05-2001]
Posté par Clément HERBO

Voici deux méthodes pour parcourir rigoureusement un tableau. L'une utilise l'instruction for() et l'autre foreach(), propre à PHP 4. Les deux donnent strictement le même résultat.

<?
$utilisateur
["nom"] = "Clément";
$utilisateur["age"] = 17;
$utilisateur["ville"] = "Paris";

for(
reset($utilisateur);$index = key($utilisateur);next($utilisateur))
{
$valeur = pos($utilisateur);
echo
"L'index $index indique la valeur $valeur<br>\n";
}

$utilisateur["nom"] = "Clément";
$utilisateur["age"] = 17;
$utilisateur["ville"] = "Paris";

foreach(
$utilisateur as $index=>$valeur)
{
echo
"L'index $index indique la valeur $valeur<br>\n";
}
?>


[1 commentaire]

Eviter les echo "<html>" etc... dans l'instruction IF, c'est possible ![08-05-2001]
Posté par Dinesh

On ne voit que très rarement dans les tutoriaux, livres, etc... cette façon d'exploiter l'instruction If. Elle est extrêmenent pratique car cela évite de devoir inscrire des echo "<html>"; , echo "<body bgcolor=\"red\">"; , etc etc...

Un exemple :

<? if( $variable ) { ?>

<HTML>
<BODY>
Une valeur a été donnée à $variable. (valeur: <? echo "$variable"; ?>
</BODY>
</HTML>

<? } else { ?>

<HTML>
<BODY>
Aucune valeur n'a été donnée à $variable !
</BODY>
</HTML>

<? } ?>

On peut donc sans problème mélanger le code PHP et HTML. Toutefois, je vous recommande de laisser de lignes vides comme sur l'exemple afin de toujours vous y retrouver !

Enfin, cette astuce fonctionne aussi pour d'autres fonctions qui se présentent comme if().

[4 commentaires]

Ne pas inclure 2 fois un même fichier[31-10-2000]

Pour être sûr de ne pas inclure 2 fois un même fichier, vous pouvez utiliser la méthode suivante :

<?
if ( !defined( "_CONFIG_PHP" ) ) {
  
define( "_CONFIG_PHP", 1 );
  include(
"config.inc.php3" );
  ....
}
?>

_CONFIG_PHP est une constante arbitraire qui vous permet de savoir si le fichier config.inc.php3 a déjà été inclus.

A noter que depuis la version 4.0.1 il est possible d'utiliser les fonctions include_once() et require_once() qui font exactement le même travail. [Merci à C. Lauer pour la précision]

Opérateur ?[21-05-2000]

A l'instar du C, il est possible en PHP d'utiliser l'opérateur ternaire ? pour remplacer une instruction if :
  condition ? instruction-vraie : instruction-fausse;
Exemple :

<?
echo $Adieu == "oui" ? "Au revoir" : "Bonjour !";
?>


Include et if[29-04-2000]

Parce que include n'est pas une fonction, il faut l'entourer d'accolades quand on l'utilise dans des blocs conditionnels if.

Syntaxe incorrecte :
<?
if ($condition)
  include(
$fichier1);
else
  include(
$fichier2);
?>


Syntaxe correcte :
<?
if ($condition) {
  include(
$fichier1);
} else {
  include(
$fichier2);
}
?>


[1 commentaire]

Synseo