Cours PHP-MySQL
|
Matthias Meusburger |
Sommaire :
<?php
// Instructions php
?>
Vous pouvez ouvrir et fermer des blocs autant de fois que vous le désirez
dans une page PHP.
Quand vous vous situez en dehors d'un bloc PHP, vous pouvez taper directement
du HTML.
De plus, le fait de fermer un bloc PHP ne détruit pas l'environnement.<!-- Code HTML -->
<?php
// Instructions php
?>
<!-- Code HTML -->
Plus fort encore, fermer un bloc PHP ne rompt pas les conditions et itérations :<?php
$test = "toto";
?>
<!-- Code HTML -->
<?php
echo $test;
?>
<?php
$test = true;
if ($test) {
?>
<!-- Code HTML -->
<?php
}
?>
Les chaînes de caractères sont entourées par des
délimiteurs qui indiquent leur début et leur fin. Vous
pouvez utiliser au choix la simple-quote ( ' ) ou la double-quote :
( " ).
Quel délimiteur choisir?
Si la chaîne de caractère va comporter des double-quotes,
utilisez les simple-quotes.
A l'inverse, si la chaîne de caractères va comporter des
simple-quotes, utilisez des double-quotes.
Veillez simplement a utiliser le même délimiteur pour le
début et pour la fin d'une chaîne.
<?php
// Instructions valides :
echo "La table toto a bien été supprimée!";
echo 'La table toto a bien été supprimée!';
echo "La table 'toto' a bien été supprimée!";
echo 'La table "toto" a bien été supprimée!';
// Instructions invalides :
echo "La table toto a bien été supprimée!';
echo 'La table 'toto' a bien été supprimée!';
echo "La table "toto" a bien été supprimée!";
?>
Si vous devez utiliser en même temps des simple-quotes et des double-quotes au sein d'une chaîne de caractères, choisissez un délimiteur que vous devrez protéger avec le caractère "\" au sein de la chaîne pour qu'il ne soit pas interprété.
<?php
// Ces deux instructions sont équivalentes :
echo "Le champ 'titi' de la table \"toto\" a bien été supprimé!";
// ou
echo 'Le champ \'titi\' de la table "toto" a bien été supprimé!';
?>
Insérer des variables dans des chaînes de caractères
:
Vous pouvez insérer des variables dans une chaîne de
caractères, à condition que le délimiteur choisi
soit les double-quotes ( " ).
<?php
$champ = "titi";
echo "Le champ $champ a bien été supprimé!";
?>
Affichera :
Le champ titi a bien été supprimé!
Par contre, vous ne pouvez pas de cette manière accoler la valeur
d'une variable à du texte :
<?php
/*
Déclaration valide, mais incorrecte :
PHP ne sait pas où s'arrête le nom de variable et où commence le texte.
Il cherchera à afficher la valeur de la variable "jourème", qui n'existant pas, sera vide.
*/
$jour = "7";
echo "Et le $jourème jour, il se reposa.";
Pour cela, il faut utiliser l'opérateur de concaténation
de chaînes de caractères : "."
<?php
// Déclaration valide :
$jour = "7";
echo "Et le ".$jour."ème jour, il se reposa.";
On peut envisager deux cas différents pour faire cohabiter PHP
et HTML suivant le cas dans lequel on se trouve :
- Produire du HTML dans du PHP
<?php
$nom = "Vers l'index!";
$page = "index.php";
echo ("<a href=\"$page\">$nom</a>");
?>
- Utiliser du PHP dans du HTML
<?php
$nom = "Vers l'index!";
$page = "index.php";
?>
<a href="<?php echo $page ?>"><?php echo $nom ?></a>
Quelle méthode choisir?
En fait, les deux méthodes sont valides. Le choix portera sur
le contenu du bloc dans lequel vous vous trouvez.
Si vous êtes dans un bloc comportant beaucoup de HTML, comme un
formulaire, il vaudra mieux utiliser du PHP au sein du HTML.
Par contre, si vous vous trouvez dans un bloc où vous effectuez
beaucoup de traitements en PHP, il vaudra mieux produire du HTML au
sein du PHP.
Vous écrivez ceci dans votre code PHP :
echo ("un<br>deux<br>trois");
Votre page HTML ressemblera à ceci :
un
deux
trois
mais son code source ressemblera à ça :
un<br>deux<br>trois
Par contre, si vous écrivez ceci dans votre code PHP :
echo ("un\ndeux\ntrois");
Votre page HTML ressemblera à ceci :
un deux trois
et votre code source à ceci :
un
deux
trois
Finalement, la bonne solution consiste à mélanger <br> et \n :
En PHP :
echo ("un<br>\ndeux<br>\ntrois");
A l'affichage de la page HTML :
un
deux
trois
Le code source HTML :
un<br>
deux<br>
trois
<?php
echo ("<table>\n");
echo ("<tr>\n");
echo ("<td>\n");
echo ("Hello \n");
echo ("</td>\n");
echo ("<td>\n");
echo ("World!\n");
echo ("</td>\n");
echo ("</tr>\n");
echo ("</table>\n");
?>
Donnera le code source HTML suivant, peu lisible :
<table>
<tr>
<td>
Hello
</td>
<td>
World!
</td>
</tr>
</table>
Vous pouvez pour remédier à cela utiliser le caractère
spécial "\t" ou tabulation à chaque fois que
vous ouvrez une nouvelle balise HTML.
<?php
echo ("<table>\n");
echo ("\t<tr>\n");
echo ("\t\t<td>\n");
echo ("\t\t\tHello \n");
echo ("\t\t</td>\n");
echo ("\t\t<td>\n");
echo ("\t\t\tWorld!\n");
echo ("\t\t</td>\n");
echo ("\t</tr>\n");
echo ("</table>\n");
?>
Le code HTML produit aura cette apparence :
<table>
<tr>
<td>
Hello
</td>
<td>
World!
</td>
</tr>
</table>
Si vous trouvez que les tabulations créent des espaces trop importants, vous pouvez utiliser des espaces :
<?php
echo ("<table>\n");
echo (" <tr>\n");
echo (" <td>\n");
echo (" Hello \n");
echo (" </td>\n");
echo (" <td>\n");
echo (" World!\n");
echo (" </td>\n");
echo (" </tr>\n");
echo ("</table>\n");
?>
Cela donnera :
<table>
<tr>
<td>
Hello
</td>
<td>
World!
</td>
</tr>
</table>
Attention, le fichier à inclure doit également comporter les balises de début et de fin de bloc PHP.include ('nom_du_fichier');
Dans la page de destination, on pourra écrire :<input type="text" name="nom_utilisateur">
echo $nom_utilisateur;
nom_de_la_page.php?variable_1=valeur_1&variable_2=valeur_2[...]&variable_n=valeur_n
Les valeurs sont alors accessibles dans la page de destination par :
echo $variable_n;
Exemple sur un lien hypertexte :
Dans la page de départ :
<a href="afficher_champs.php?nomdelabase=mabase&nomdelatable=matable> Afficher les tables </a>
Dans la page de destination :
echo $nomdelabase;
echo $nomdelatable;Attention cependant à prendre quelques précautions :
Dès lors que les valeurs sont susceptibles de comporter des caractères autres que les caractères alpha-numérique et "_", il faut encoder la chaîne avec une des fonctions d'encodage de PHP.
Exemple :
Si la valeur à transmettre comporte un "&", il faut encoder la chaîne pour que ce caractère ne soit pas interprété comme étant la fin de la valeur mais bien comme partie de celle-ci.<?php
$valeur = "mielpops&chocobiscuits";
?>
<a href="petit_dej.php?petit_dej="<?php echo urlencode($valeur) ?>"> En avant pour le petit déjeuner! </a>
page.php?var_1=val_1...&PHPSESSID=$PHPSESSID
La méthode par URL présente un avantage indéniable : si PHP a été compilé avec l'option "enable-trans-sid", celui-ci se chargera de transmettre l'identifiant à toutes les pages concernées de manière complètement transparente! L'identifiant n'apparaîtra même pas dans la barre d'adresses! De cette manière, vous n'aurez à vous préoccuper ni de son utilisation, ni même de sa valeur!
session_start();
Cette fonction ouvre une nouvelle session, ou si la session existe déjà, l'environnement précédent sera recrée.
session_register("nom_de_la_variable");
Exemple :
Dans page.php :
session_start();
$ma_variable = toto;
session_register("ma_variable");Dans page2.php :
session_start();
echo $ma_variable; // Affichera toto
Attention :
Quand vous modifiez une variable de session, la modification est
locale. C'est à dire que la variable de session ne sera pas
modifiée tant que vous ne l'aurez pas ré-enregistrée
avec session_register("ma_variable");.
session_unregister("nom_de_la_variable");
session_unset();
Pour terminer une session sans rien sauvegarder :session_write_close();
session_destroy();