<?php
et ?>
;
{ }
// Commentaires de fin de ligne
/* Commentaires
longs */
$x != $X
). <?php
$var = 'Jean';
$Var = 'Paul';
echo ('$var, $Var'); // affiche 'Jean, Paul'
$4site = 'pas encore'; // invalide : commence par un nombre
$_4site = 'pas encore'; // valide : commence par un souligné
$maïs = 'jaune'; // valide; 'ï' est ASCII 239.
?>
<?php
phpinfo();
?>
$a = 1; /* portée globale */
function test() {
echo $a; /* portée locale */
}
test(); /* n'affichera rien car utilise la variable locale $a */
global
permet de référencer localement dans un bloc des variables globales :
$a = 1; /* portée globale */
function test() {
global $a; /* $a référence la variable globale $a */
echo $a;
}
test(); /* affichera 1 car utilise la variable globale $a */
<?php
define('CONSTANTE', 'Bonjour le monde.');
echo CONSTANTE; // affiche 'Bonjour le monde.'
echo Constante; /* affiche 'Constante' et une note
d'exécution (message d'erreur). */
defined(CONSTANTE); // retourne TRUE
// pour afficher les constantes déjà définies
print_r(get_defined_constants());
?>
bool
pour les booléens TRUE, FALSE
(i.e. 0,'','0')int
pour les entiers float
pour les flottants string
pour les chaînes de caractères (entre " ou ') array
pour les tableaux object
pour les objets de classe indeterminée $varInt = 42;
$chaine = "L'âge du capitaine est $varInt ans !"
La valeur de $$chaine
est L'âge du capitaine est 42 ans !
$varInt = 42;
$chaineBis = 'L\'âge du capitaine est $varInt ans !'
La valeur de $chaineBis
est L'âge du capitaine est $varInt ans
!
\
)\'
et \\
sont
utilisables ;\n, \t, ...
sont à réserver aux chaînes interpolables.
<?php
$tab1 = array(1,2,3,4); // automatique
$tab2 = array('couleur' => 'rouge',
'gout' => 'sucre', // associative
'forme' => 'rond',
'nom' => 'pomme');
echo ($tab1[0]); // affiche 1
echo ($tab2['gout']); // affiche sucre
echo ($tab2[0]); // Ne fonctionne pas (plus depuis un certain temps...)
?>
Opérateur | Opération | Description |
---|---|---|
+ | Addition | Somme des 2 opérandes |
- | Soustraction | Différence des 2 opérandes |
* | Multiplication | Produit des 2 opérandes |
/ | Division | Quotient des 2 opérandes |
% | Modulo | Reste de la division entière |
Opérateur | Nom |
---|---|
== | égal |
!= | différent |
<> | |
< | inférieur |
<= | inférieur ou égal |
> | supérieur |
>= | supérieur ou égal |
=== | identique (valeur et type) |
!== | différent |
<=> | combiné (spaceship) |
$int3 = 3; // variable associée à une valeur de type entier
$str3 = '3'; // variable associée à une valeur de type string
echo "<h3>évaluation de l'expression ($int3 == $str3)</h3>";
if ($int3 == $str3) {
echo "<p>Le test a réussi car PHP a automatiquement transformé le type
d'une des deux variables !</p>";
}
echo "<h3>évaluation de l'expression ($int3 != $str3)</h3>";
if ($int3 != $str3) {
echo "<p>C'est l'effet inverse, le test échoue à cause du transtypage
automatique réalisé par PHP.</p>";
}
else {
echo "<p>Le test ($int3 != $str3) a échoué !</p>";
}
Résultat :évaluation de l'expression (\$int3 == \$str3)"; if ($int3 == $str3) { echo "Le test a réussi car PHP a automatiquement transformé le type d'une des deux variables !
"; } echo "évaluation de l'expression (\$int3 != \$str3)
"; if ($int3 != $str3) { echo "C'est l'effet inverse, le test échoue à cause du transtypage automatique réalisé par PHP.
"; } else { echo "Le test (\$int3 != \$str3) a échoué !
"; } ?>
===
et !==
permettent d'éviter les conversions de types indésirables.echo "<h3>évaluation de l'expression ($str3 === $int3)</h3>";
if ($str3 === $int3) {
echo "<p>Ce test ne réussira pas car les deux valeurs ne sont pas du même type.</p>";
}
else {
echo "<p>Le test ($str3 === $int3) a échoué car les variables comparées
n'ont pas le même type</p>";
}
echo "<h3>évaluation de l'expression ($str3 !== $int3)</h3>";
if ($str3 !== $int3) {
echo "<p>Le test réussit, un entier et une chaîne sont différents</p>";
}
Résultat :évaluation de l'expression (\$str3 === \$int3)"; if ($str3 === $int3) { echo "Ce test ne réussira pas les deux valeurs ne sont pas du même type.
"; } else { echo 'Le test ($str3 === $int3) a échoué car les variables comparées n\'ont pas le même type
'; } echo "évaluation de l'expression (\$str3 !== \$int3)
"; if ($str3 !== $int3) { echo "Le test réussit, un entier et une chaîne sont différents
"; } ?>
<=>
retourne un entier positif, nul ou négatif dont le signe correspond à celui de la différence des deux termes :$var = 10<=>2; // $var vaut 1
$var = 2<=>10; // $var vaut -1
$var = 2<=>"2"; // $var vaut 0
Opérateur | Nom |
---|---|
and | et |
&& | |
or | ou |
|| | |
xor | ou exclusif |
! | non |
Opérateur | Nom |
---|---|
$a++ | post-incrémentation |
++$a | pré-incrémentation |
$a-- | post-décrémentation |
--$a | pré-décrémentation |
Opérateur | Nom |
---|---|
= | Affectation (de droite à gauche) |
. | Concaténation |
+= -= *= /= .= | Assignation combinés |
@ | Opérateur de contrôle d'erreur |
Lorsque @ est ajouté en préfixe d'une expression PHP, les éventuels messages d'erreurs générés sont ignorés.
if
et switch
if-then-else
:
<?php
if ($i == 0) {
print 'i vaut 0';
}
elseif ($i == 1) {
print 'i vaut 1';
} elseif ($i == 2) {
print 'i vaut 2';
}
else {
print 'i différent';
}
?>
switch
:
<?php
switch ($i) {
case 0: print 'i vaut 0';
break;
case 1: print 'i vaut 1';
break;
case 2: print 'i vaut 2';
break;
default: print 'i différent';
}
?>
for
for
dans tous ses états !for($i=1;$i<=10;$i++){
print $i;
} // fin du for
for ($i=1;;$i++) {
if ($i > 10) { // traitement de la condition d'arrêt
break;
} // fin du if
print $i;
}
$i = 1;
for (;;) {
if ($i > 10) {break;}
print $i;
$i++;
}
for ($i = 1; $i <= 10; print $i, $i++);
foreach
foreach
on peut itérer automatiquement sur une tableau (entre autres...)
$tab=array('a','b','c');
foreach($tab as $val) {
echo "valeur:$val\n" ;
}
for($i=0;$i<sizeof($tab);$i++) {
echo("valeur:$tab[$i]\n");
}
$assoc=array('Entrée' => 'Crudités' ,'Plat' => 'Steack frites' ,
'Dessert' => 'Tiramisu');
foreach($assoc as $key => $val) {
echo "$key : $val\n";
}
'Crudités' ,'Plat' => 'Steack frites' , 'Dessert' => 'Tiramisu'); foreach($assoc as $key => $val) { echo "$key : $val\n"; } ?>
while
et do while
while
$tab=['a','b','c'];
$i = 0;
while ($i < sizeof(tab)) {
echo $tab[$i]."\n";
$i++;
}
do while
$i = 0;
do {
echo "$tab[$i]\n";
$i++;
} while ($i < sizeof($tab))
echo
<?php
/* Construction d'une chaîne de caractères contenant
* tout le code HTML d'une page */
$codeHTML = '<html>
<head>
<title>Exemple code PHP</title>
</head>
';
$codeHTML .= '<body>
<h1>Titre</h1>
</body>
</html>';
/* envoie la chaîne de caractères dans le flux de sortie
* du script (par défaut la sortie standard) */
echo $codeHTML;
?>
php -f coursPHP20.php
<html> <head> <title>Exemple code PHP</title> </head> <body> <h1>Titre</h1> </body> </html>
php -f coursPHP20.php > page1.html
<html>
<head>
<title>Exemple code PHP</title>
</head>
<body>
<h1>Titre</h1>
</body>
</html>
<?php
function nom_fonction ([[type_1] $param_1, ..., [type_n] $param_n]) [: type] {
instruction_1;
// ...
instruction_m;
[return $resultat;]
}
?>
function
: mot clé annonçant la définition d'une fonction,nom_fonction()
: nom de la fonction, servira à son appel,type_i
: type du paramètre d'entrée numéro i (optionel),: type
: le type de retour de la fonction (optionel),return
: mot clé permettant d'associer un résultat à la
fonction.function alea()
{
$choix = rand(0,100);
return $choix;
}
function aleaN($Nombre)
{
$choix = rand(0,$Nombre);
return $choix;
}
// Utilisation :
$valalea = alea();
printf("%d \n",$valalea);
printf("%d \n",alea());
$max = 20;
$valeuralea = aleaN($max);
printf("%d \n",$valeuralea);
printf("%d \n",aleaN(50));
4 41 1 39
array, bool, int, float, string
NULL
comme valeur par défaut à un paramètre permet de le rendre facultatif.void
depuis PHP 7.1) sont disponibles pour exprimer le type de retour d'une fonction.// alea retourne un entier
function alea() : int
{
$choix = rand(0,100);
return $choix;
}
// aleaN prend un entier entrée et retourne un entier
function aleaN(int $Nombre) : int
{
$choix = rand(0,$Nombre);
return $choix;
}
<?php
// À Marseille la fonction servir_apero est définie ainsi :
function servir_apero (string $type = "Pastis"): string {
return "Servir un verre de $type.\n";
}
echo servir_apero();
echo servir_apero("Jus de fruits");
?>
Description | Action |
---|---|
strlen( string $str): int | Retourne la longueur de la chaîne. |
explode( string $delimiteur, string $string [, int $limit]): array | Retourne une tableau de chaînes : chacune d'entre elle est une sous-chaîne de string découpée selon le délimiteur. |
substr( string $string, int $offset [, int $length]): string | Retourne un morceau d'une chaîne en fonction d'une position de départ et d'une éventuelle longueur. |
ltrim( string $str):string rtrim( string $str): string trim( string $str): string | Retire les espaces blancs de début ou/et de fin de chaîne, et retourne la chaîne nettoyée. Les espaces blancs sont : "\n", "\r", "\t", "\v", "\0", et " " (espace). |
http://www.php.net/manual/fr/ref.strings.php |
Description | Action |
---|---|
sizeof( array $array): int | Retourne le nombre d'éléments d'un tableau. |
sort( array &$array): void | Trie le tableau array dans l'ordre croissant. |
array_pop( array &$array): mixed | Dépile et retourne le dernier élément du tableau array, le raccourcissant d'un élément. |
array_push ( array &$array, mixed $var [, mixed ...]): int | Empile les variables passées en paramètres à la fin de array. |
http://www.php.net/manual/fr/ref.array.php |
<?php
$a='old';
$b=&$a;
$a='new';//La valeur de $b devient new
$c=$b;// copie de valeur simple
$a='new new';//$b devient 'new new, $c reste 'new'
$a[0]='old';
$b=&$a;
$c=$b;//copie simple
$a[0]='new';/* $b[0] devient new $c[0] reste 'old' */
?>
<?php
function ajouteDuBlahblah(&$string) {
$string .= ', et du blahblah.';
}
$str = 'Ceci est une chaîne';
ajouteDuBlahblah($str); // le symbole & n'est pas nécessaire, la passage par référence
// est défini une fois pour toute lors de la déclaration de la fonction
echo $str; /* affiche 'Ceci est une chaîne, et du blahblah. */
?>
<?php
function fctBlah2 ($bar) {
$bar .= ', et blah blah.';
}
$str = 'Ceci est une chaîne';
fctBlah2 ($str);
echo $str;// affiche 'Ceci est une chaîne'
fctBlah2 (&$str);
echo $str; /* affiche 'Ceci est une chaîne, et blah blah. */
?>
require(string nom_fichier)
se remplace elle-même par le contenu du fichier.require_once
évite de charger plusieurs fois le même fichier.include(string nom_fichier)
inclus et évalue le fichier spécifié en argument.fopen(string nom_fichier, string mode): resource
fopen()
fclose( resource fp): bool
fopen()
fgets( resource fp [, int length]): string
retourne une chaîne contenue dans le fichier pointé par fp.
feof( resource fp): bool
fgets()
.file_get_contents( string filename [, int use_include_path [,...]]): string
file( string filename [, int use_include_path]): array
fread(resource $stream, int $length): string|false
fgets()
mais dédiée aux flux binaires (voir détail).fwrite( resource $fp, string $string [, int $length]): int
écrit le contenu de la chaîne string dans le fichier pointé par fp.
fputs( resource $fp, string $str [, int $length]): int
idemfile_put_contents( string $filename, mixed $data [, ...]): int
écrit le contenu de $data dans le fichier, $data peut être une chaîne de caractères ou un tableau ; retourne le nombre d'octet écrit ou FALSE en cas d'échec. Pour en savoir plus.fgets
fgets
$fp=fopen('fichier.txt','r');
$codeHTML ='';
if(! $fp) { // vérifie que le pointeur de fichier est valide
exit('Impossible d\'ouvrir fichier.txt');
}
else {
while (!feof($fp)) { // répète jusqu'à la fin de fichier
$ligne = fgets($fp); // lit une ligne
$ligne = rtrim($ligne); // enlève le retour chariot de fin de ligne
$codeHTML .= "$ligne<br />";
}
fclose($fp);
}
echo $codeHTML;
file
file
$tabLignes=file('fichier.txt');
$extraitHTML = '<pre>';
if(is_array($tabLignes)) { // vérifie que le traitement du fichier s'est bien passé
foreach ($tabLignes as $ligne) { // traitement itératif de chaque ligne
$ligne = rtrim($ligne); // enlève le retour chariot de fin de ligne
$extraitHTML .= "$ligne\n";
}
}
$extraitHTML .= '</pre>';
print $extraitHTML;
$variable = ' Albus';
$chSimple = '$variable\tdans\n une chaîne entre simple quote';
$chDouble = "$variable\tdans\n une chaîne entre double quote';";
echo "<pre>".$variable."<br />".$chSimple."<br />".$chDouble."</pre>";
Résultat :
".$variable."$chaines1 = $chSimple.$chDouble;
$chaines2 = implode(array(" Albus", ' Percival', "Wulfric"));
$chaines3 = implode(' ; ',array(" Albus", ' Percival', "Wulfric"));
echo implode(array("<p>",$chaines1,"<br />", $chaines2,"<br />",$chaines3,"</p>"));
$implodeCh = implode(array("<p>",$chaines1,"<br />", $chaines2,"<br />",$chaines3,"</p>"));
Résultat :
",$chaines1,"",$chaines1,"
", $chaines2,"
",$chaines3,"
$stringArray = explode(';', $chaines3);
foreach($stringArray as $ch) {
echo "*".$ch."*"; // pas de traitement des espaces
}
echo "<br />";
foreach($stringArray as $ch) {
echo "*".trim($ch)."*"; // suppression des espaces en début et fin de chaine
}
Résultat :/* création d'un tableau indexé automatiquement */
$tableauStr = array ('un', 'ensemble', 'de', 'chaînes', 'de', 'caractères');
$tableauInt = array (12, 54, 658, 16);
$tableauMixte = array (1, 'ensemble', 2, 'données', 2, '!=', 'types');
/* ou encore */
$tableau = ['azer', 'qsdf', 'wxcv'];
/* création d'un tableau associatif (indexation clé/valeur) */
$tableauAssoc = array ('entree' => 'Tomate Moza',
'plat' => 'Pizza Vivaldi',
'dessert' => 'Tiramisu');
echo $tableauStr[0]; // affiche 'un'
echo $tableauAssoc['dessert']; // affiche 'Tiramisu'
/* Modification d'un élément de tableau */
$tableauMixte[5] = 'différents';
$tableauAssoc['plat'] = 'Pizza Calzone';
/* Extension du tableau (par la fin) */
$tableau[3] = 'tyui';
$tableau[count($tableau)] = 'ghjk';
$tableau[] = 'oplm';
array_push($tableau, 'bn', '1234', '5678','90');
/* insertion en tête */
array_unshift($tableau, 'AZER');
/* Suppression/récupération de la queue */
$queue = array_pop($tableau);
/* Suppression/récupération de la tête */
$tete = array_shift($tableau);
/* tri d'un tableau dans l'ordre croissant */
/* (voir ksort et asort pour les tableaux associatifs) */
sort($tableauInt);
/* tri d'un tableau dans l'ordre décroissant*/
rsort($tableauInt);
/* Clés d'un tableau associatif (ou pas) */
$tableauCles = array_keys($tableauAssoc);
/* Valeurs contenues dans un tableau */
$tableauValeurs = array_values($tableauAssoc);
$pageHTML = file_get_contents('debutFichier.html');
$pageHTML .= '<h1>Titre</h1>';
$pageHTML .= '...';
// Suite du code PHP alimentant $pageHTML
$pageHTML .= file_get_contents('finFichier.html');
echo $pageHTML
<!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8" /> </head> <body>
<?php echo '<h1>Bonjour, je suis un script PHP!</h1>'; ?>
</body> </html>
Pour tester ce script en ligne de commande s'il est contenu dans un fichier bonjour.php
dominique@HAL9000:~/public_html/PHP/src$ php -f bonjour.php
<!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8" /> </head> <body> <h1>Bonjour, je suis un script PHP!</h1> </body> </html>
dominique@HAL9000:~/public_html/PHP/src$
Accès par l'url : http://localhost/~dominique/PHP/src/bonjour.php
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8" />
</head>
<body>
<h1>Bonjour, je suis un script PHP!</h1>
</body>
</html>
<?php phpinfo(); ?>
:$GLOBALS, $_SERVER, $_GET, $_POST, $_FILES, $_COOKIE, $_SESSION, $_REQUEST, $_ENV
$_SERVER['QUERY_STRING']
: récupère l'ensemble des informations transmises depuis une url (visibles au niveau du navigateur en utilisant la méthode GET)$_SERVER['REQUEST_METHOD']
: GET ou POST$_POST
ou $_GET
: Tableaux associatifs globaux contenant les données transmises$_REQUEST
: tableau associatif constitué du contenu de $_GET, $_POST
et $_COOKIE
http://URL/prog?name1=value1&name2=value2&name3=value3
<form action="prog" method="post|get" enctype="type" target="nom">...</form>
action
indique l'URL du programme utilisé pour traiter le données transmise par le formulaire.method
indique la méthode utilisée pour envoyer les données au programme (paires nom/valeur). enctype
donne la méthode d'encodage MIME (valable uniquement avec POST) qui sera utilisée pour envoyer les données au programme. Par défaut sa valeur est application/x-www-form-urlencoded.target
désigne dans quelle fenêtre ou frame le résultat du traitement du formulaire sera affiché (optionel).<form>...</form>
peut contenir un ensemble d'éléments : input, select, textarea
.<form action="coursPHP40.php" method="get">
<p><b>Nom : </b>
<input type="text" name="nom" size="10" /></p>
<p><b> Prénom : </b>
<input type="text" name="prenom" size="10" /></p>
<p><input type="submit" name="envoi"
value="Clic" /></p>
</form>
<html> <body>
<?php echo('QUERY_STRING: '); echo($_SERVER['QUERY_STRING']); echo("<br />\n"); echo('Nom: '.$_GET['nom']." <br />\n"); echo('Prenom: '.$_GET['prenom']." <br/> \n"); echo('Envoi: '.$_GET['envoi']." <br /> \n"); ?>
</body> </html>
QUERY_STRING: nom=Ripley&prenom=Hellen&envoi=Clic Nom : Ripley Prenom : Hellen Envoi : Clic
<form action="coursPHP42.php" method="get">
<p>Nom : <input type="text" name="nom" value="Dupond" size="10" />
Ville : <select size="3" name="ville">
<option value="Amiens" > Amiens </option>
<option value="Bordeaux" selected="selected" > Bordeaux</option>
<option value="Caen"> Caen</option>
<option value="Lille"> Lille</option>
</select>
<input type="submit" name="enregistrement" value="Envoyer" />
<input type="reset" name="annuler" value="Effacer" />
</p></form>
<?php
echo('Nom : '.$_GET['nom']);
echo(" <br /> \n");
echo('Ville : '.$_GET['ville']);
echo("<br />\n");
?>
Nom : Dupond Ville : Amiens
<form action="coursPHP44.php" method="get">
<p>Nom : <input type="text" name="nom" size="10" /> </p>
<p>Département :
Calvados <input type="radio" name="dpt"
value="14" checked="checked" />
Manche <input type="radio" name="dpt"
value="50" />
Orne <input type="radio" name="dpt"
value="61" /> </p>
<p><input type="submit" name="enregistrement" value="Envoyer" /> </p>
</form>
<?php
echo('Nom : '.$_GET['nom']);
echo("<br /> \n");
echo('Département : '.$_GET['dpt']);
echo("<br />\n");
?>
Nom : Département : 14
<form action="coursPHP46.php" method="get">
<p>Nom : <input type="text" name="nom" size="10" /> <br />
Cadeaux : <br />
Livre <input type="checkbox" name="cadeaux[]"
value="livre" checked="checked" />
Tee-shirt <input type="checkbox" name="cadeaux[]"
value="tee-shirt" />
Sac <input type="checkbox" name="cadeaux[]"
value="sac" checked="checked" />
Sweat <input type="checkbox" name="cadeaux[]"
value="sweat" /></p>
<p><input type="submit" name="enregistrement" value="Envoyer" /></p>
</form>
<?php
echo('Nom : '.$_GET['nom']." <br />");
if (isset($_GET['cadeaux']) and is_array($_GET['cadeaux'])) {
$cadeaux = $_GET['cadeaux']; // pour alléger l'utilisation de la variable
echo('Liste des cadeaux:<ul>');
foreach($cadeaux as $elem) {
echo("<li> $elem </li>\n");
}
echo("</ul>\n");
}
?>
<form action="coursPHP48.php" method="get">
<p>Nom : <input type="text" name="nom" size="10" /></p>
<p>Musique : <select multiple="multiple" size="5" name="musique[]">
<option value="Electro" selected="selected"> Electro</option>
<option value="Indus"> Indus</option>
<option value="Pop" selected="selected"> Pop</option>
<option value="Rap" selected="selected"> Rap</option>
<option value="Rock"> Rock</option>
</select></p>
<p><input type="submit" name="enregistrement" value="Envoyer" /></p>
</form>
<?php
echo 'Nom : '.$_GET['nom'].' <br />';
if (isset($_GET['musique']) && is_array($_GET['musique'])) {
$musique = $_GET['musique'];
echo('Gouts musicaux :<ul>');
foreach($musique as $elem) {
echo("<li> $elem </li>\n");
}
echo("</ul>\n");
}
?>
Warning: Invalid argument supplied
for foreach() in
/.../src_form4_erreur.php
on line 18
<form action="coursPHP50.php" method="get">
<p> <b>Message : </b>
<textarea cols="14" rows="4" name="nom" /></p>
<p> <input type="submit" name="envoi"
value="Clic" /></p>
</form>
<?php
echo('<p>');
echo(htmlentities($_GET['nom']));
echo("\n</p>");
?>
Texte avec des voyelles accentuées à côté du symbole €
<p>Texte avec des voyelles accentuées à côté du symbole € </p>
<form action="coursPHP52.php" enctype="multipart/form-data" method="post">
<p> <b>Fichier : </b>
<input type="file" name="nom" size="10" /><br />
<input type="submit" name="envoi"
value="Clic" /></p>
</form>
if (isset($_FILES['nom'])) {
echo 'Nom d'origine : '.$_FILES['nom']['name'];
echo '<br />';
echo 'Stockage temporaire : '.$_FILES['nom']['tmp_name'];
echo '<br />';
$nomF = $_FILES['nom']['tmp_name'];
print_r(file($nomF));
}
$_FILES
$_FILES['nom']['name']
$_FILES['nom']['type']
$_FILES['nom']['size']
$_FILES['nom']['tmp_name']
$_FILES['nom']['error']
is_uploaded_file()
et move_uploaded_file()
type="hidden"
type="password"
type="image"
label
pour associer des étiquettes aux composants du formulaire.fieldset
pour regrouper des champs de formulaire.legend
pour étiqueter un fieldset
.required
)$_GET
ou $_POST
function valideForm($method, $tabCles) {
foreach ($tabCles as $cle) {
if (!isset($method[$cle]))
return FALSE;
}
return TRUE;
}
<?php
// noms des champs obligatoires
$tab = array('nom', ...);
if (valideForm($_GET, $tab)) {
// script de traitement des données
include('traite_formulaire.php');
}
else {
// retour au formulaire avec récupération des saisies
include('formulaire.php');
}
?>
<form action='script.php' method='get'>
Nom (*): <input type='text' name='nom'
<?php if(isset($_GET['nom'])) echo("value='".$_GET['nom']."'"); ?>
size='10' /> ... </form>
pg_connect( string $connection_string [, int $connect_type ]): resource
false
en cas d'échecinclude 'connex.php'; /* Par sécurité, il ne faut pas écrire directement
les informations de connexions dans la chaine $strConnex. Il est
préférable d'inclure ces variables depuis un script séparé même
si ça ne résout pas tout les risques.*/
$strConnex="host=$dbHost dbname=$dbName user=$dbUser password=$dbPassword";
$ptrDB = pg_connect($strConnex);
if ($ptrDB) {
print '<p>Connexion établie !</p>';
} else {
print '<p>Erreur lors de la connexion ...</p>';
exit;
}
$dbHost='localhost';
$dbName='xy123456';
$dbUser='xy123456';
$dbPassword='**************';
pg_pconnect( string $connection_string [, int $connect_type ]): resource
établit une connexion persistante (non refermée à la fin du script)pg_query([ resource $connection ], string $query ): resource
$ptrQuery=pg_query($ptrDB, $query);
le résultat de la requête n'est pas
stocké dans $ptrQuery
mais est accessible via la variable $ptrQuery
.pg_fetch_row( resource $ptrQuery [, int $row ] ): array
$Tableau[$Indice]
où les indices
correspondent aux champs utilisés dans la requête
$ptrDB = pg_connect($strConnex);
if (!$ptrDB) { exit('pb de connection'); }
else {
$requete = 'select * from collectivite';
$ptrQuery = pg_query($ptrDB,$requete);
$blocHTML = "<div>\n";
if ($ptrQuery) {
$numLig = 0;
while($ligne = pg_fetch_row($ptrQuery,$numLig)) {
$blocHTML .= '<p>';
for ($j=0;$j<count($ligne);$j++) {
$blocHTML .= $ligne[$j].' ';
}
$numLig++;
$blocHTML .= "</p>\n";
}
}
$blocHTML .= '</div>';
echo $blocHTML;
}
Warning: pg_fetch_row(): Unable to jump to row 101 on PostgreSQL result
index 139711950000216 in /path/pgFetchRowSample.php on line 14
<div> <p>1 Ain 588853 5762 Rhône-Alpes </p> <p>10 Aube 303298 6004 Champagne-Ardenne </p> <p>11 Aude 353980 6139 Languedoc-Roussillon </p> <p>12 Aveyron 277048 8735 Midi-Pyrénées </p> <p>13 Bouches-du-Rhône 1967299 5087 Provence-Alpes-Côte d'Azur </p> ... </div>
pg_fetch_assoc( resource $result [, int $row ] ): array
$Tableau["Nom_colonne"]
$ptrDB = pg_connect($strConnex);
if (!$ptrDB) { exit('pb de connection'); }
else {
$requete = 'select * from collectivite';
$ptrQuery = pg_query($ptrDB,$requete);
$blocHTML = "<div>\n";
if ($ptrQuery) {
while($ligne = pg_fetch_assoc($ptrQuery)) {
$blocHTML .= '<p>';
$blocHTML .= $ligne['col_code'].'; '.$ligne['col_nom'].'; '.$ligne['col_region'];
$blocHTML .= "</p>\n"; // retour à la ligne pour plus de lisibilité du code html produit
}
}
$blocHTML .= '</div>';
}
pg_fetch_row()
on peut se passer du numéro de ligne.<div> <p>1; Ain; Rhône-Alpes</p> <p>10; Aube; Champagne-Ardenne</p> <p>11; Aude; Languedoc-Roussillon</p> <p>12; Aveyron; Midi-Pyrénées</p> <p>13; Bouches-du-Rhône; Provence-Alpes-Côte d'Azur</p> <p>14; Calvados; Basse-Normandie</p> <p>15; Cantal; Auvergne</p> <p>16; Charente; Poitou-Charentes</p> <p>17; Charente-Maritime; Poitou-Charentes</p> ... </div>
pg_fetch_array( resource $result [, int $row [, int $result_type = PGSQL_BOTH ]] ): array
$Tableau["Nom_Colonne"]
ou $Tableau[$Num_Colonne]
$ptrDB = pg_connect($strConnex);
if (!$ptrDB) { echo('pb de connection'); }
else {
$requete = 'select * from collectivite';
$ptrQuery = pg_query($ptrDB,$requete);
if ($ptrQuery) {
while($ligne = pg_fetch_array($ptrQuery)) {
echo '<p>';
echo $ligne['code'].' '.$ligne[1].' '.$ligne['region'];
echo '</p>';
}
}
}
pg_fetch_all( resource $result ): array
$requete = 'select * from region';
$ptrQuery = pg_query($ptrDB,$requete);
if ($ptrQuery) {
$resultat = pg_fetch_all($ptrQuery);
foreach ($resultat as $ligne) {
foreach ($ligne as $colonne)
echo $colonne.',';
echo "<br />\n";
}
}
SELECT
pg_num_rows( resource $result ): int
pg_num_fields( resource $result ): int
$requete = 'select * from region';
$ptrQuery = pg_query($ptrDB,$requete);
if ($ptrQuery) {
$numRows = pg_num_rows ( $ptrQuery );
$nbColonnes= pg_num_fields ( $ptrQuery);
echo '<p>La requête a retourné $numRows lignes décrites par $nbColonnes champs;</p>';
}
pg_affected_rows( resource $result ): int
renseigne sur le nombre de lignes concernées par un UPDATE, INSERT
ou un DELETE
$requete = "DELETE from departement WHERE region='Neustrie'";
$ptrQuery = pg_query($ptrDB,$requete);
$nbLignes= pg_affected_rows ( $ptrQuery);
echo '<p>La requête a supprimé $nbLignes ligne(s).</p>';
pg_last_error([ resource $connection ] ): string
$requete = 'select id, nom_region from region';
$ptrQuery = pg_query($ptrDB,$requete);
if (!$ptrQuery) {
echo pg_last_error($ptrDB);
}
ERROR: column "id" does not exist LINE 1: select id, nom_region from region ^
pg_free_result( resource $result ): bool
: libère la mémoire allouée au résultat d'une requête. L'identifiant ne peut plus être employé.pg_close([ resource $connection ] ): bool
: ferme la connexion associée à $connection
ou par défaut la dernière connexion ouverte.$i
directement intégrés dans la chaîne de caractères mémorisant la requête SQL.pg_prepare([ resource $connection ], string $stmtname , string $query ): resource
pg_execute([ resource $connection ], string $stmtname , array $params ): resource
$requete = 'SELECT * FROM departement WHERE nom LIKE $1 OR region LIKE $2';
pg_prepare($ptrDB,'reqPrep1',$requete);
$ptrQuery = pg_execute($ptrDB, 'reqPrep1', array('S%', '%Nor%'));
if ($ptrQuery) {
$resultat = pg_fetch_all($ptrQuery);
foreach ($resultat as $ligne) {
foreach ($ligne as $colonne)
echo $colonne.',';
echo "<br />\n";
}
}
echo "<br />\n";
$ptrQuery = pg_execute($ptrDB, 'reqPrep1', array('D%', '%oi%'));
if ($ptrQuery) {
$resultat = pg_fetch_all($ptrQuery);
foreach ($resultat as $ligne) {
foreach ($ligne as $colonne)
echo $colonne.',';
echo "<br />\n";
}
}
27,Eure,582822,6040,Haute-Normandie,<br /> 50,Manche,497762,5938,Basse-Normandie,<br /> 59,Nord,2571940,5743,Nord-Pas-de-Calais,<br /> 61,Orne,292210,6103,Basse-Normandie,<br /> 62,Pas-de-Calais,1461257,6671,Nord-Pas-de-Calais,<br /> 71,Saône-et-Loire,554720,8575,Bourgogne,<br /> 72,Sarthe,561050,6206,Pays de Loire,<br /> 73,Savoie,411007,6028,Rhône-Alpes,<br /> 76,Seine-Maritime,1250120,6278,Haute-Normandie,<br /> 77,Seine-et-Marne,1313414,5915,Ile-de-France,<br /> 80,Somme,569775,6170,Picardie,<br /> 93,Seine-Saint-Denis,1515983,236,Ile-de-France,<br /> <br /> 16,Charente,351563,5956,Poitou-Charentes,<br /> 17,Charente-Maritime,616607,6864,Poitou-Charentes,<br /> 24,Dordogne,412082,9060,Aquitaine,<br /> 25,Doubs,525276,5234,Franche-Comté,<br /> 26,Drôme,482984,6530,Rhône-Alpes,<br /> 44,Loire-Atlantique,1266358,6815,Pays de Loire,<br /> 49,Maine-et-Loire,780082,7166,Pays de Loire,<br /> 53,Mayenne,305147,5175,Pays de Loire,<br /> 58,Nièvre,220199,6817,Poitou-Charentes,<br /> 72,Sarthe,561050,6206,Pays de Loire,<br /> 79,Deux-Sèvres,366339,5999,Poitou-Charentes,<br /> 85,Vendée,626411,6720,Pays de Loire,<br /> 86,Vienne,426066,6990,Poitou-Charentes,<br />
pg_meta_data( resource $connection , string $table_name [, bool $extended ] ): array
$tabDpt = pg_meta_data($ptrDB, 'departement', false);
echo '<ul>';
foreach ($tabDpt as $key => $val) {
echo "<li><b>$key</b> => (";
foreach ($val as $k => $v)
echo $k.'='.$v.',';
echo ')</li>';
}
echo '</ul><br />';
$tabReg = pg_meta_data($ptrDB, 'region', true);
echo '<ul>';
foreach ($tabReg as $key => $val) {
echo "<li><b>$key</b> => (";
foreach ($val as $k => $v)
echo $k.'='.$v.',';
echo ')<li>';
}
echo '</ul>';
$ptrDB = pg_connect($strConnex);
if (!$ptrDB) {
echo('pb de connection');
}
else {
$requete = 'select * from region';
$ptrQuery = pg_query($ptrDB,$requete);
if ($ptrQuery) {
$numLig = 0;
$tabReg = pg_meta_data($ptrDB, 'region', true);
$colnames = array_keys($tabReg);
echo '<table><tr>';
foreach ($colnames as $col){
echo '<th>$col</th>';
}
echo "</tr>\n";
while($ligne = pg_fetch_array($ptrQuery)) {
echo '<tr>';
foreach($colnames as $col)
echo '<td>'.$ligne[$col]."</td>\n";
echo "</tr>\n";
}
echo '</table>';
pg_free_result($ptrQuery);
}
else { echo(pg_last_error($ptrDB)); }
pg_close($ptrDB);
}
id_region | nom_region | nom_2016 |
---|---|---|
0 | Nords-Pas de Calais | Hauts-de-France |
1 | Picardie | Hauts-de-France |
2 | Haute-Normandie | Normandie |
3 | Basse-Normandie | Normandie |
4 | Ile de France | Ile de France |
5 | Champagne-Ardenne | Grand Est |
7 | Lorraine | Grand Est |
8 | Alsace | Grand Est |
9 | Bretagne | Bretagne |
10 | Pays de la Loire | Pays de la Loire |
11 | Centre | Centre-Val de Loire |
12 | Bourgogne | Bourgogne Franche-Comté |
13 | Franche-Comté | Bourgogne Franche-Comté |
14 | Poitou-Charentes | Nouvelle-Aquitaine |
15 | Limousin | Nouvelle-Aquitaine |
16 | Aquitaine | Nouvelle-Aquitaine |
17 | Midi-Pyrénées | Occitanie |
18 | Languedoc-Roussillon | Occitanie |
19 | Auvergne | Auvergne Rhône-Alpes |
20 | Rhône-Alpes | Auvergne Rhône-Alpes |
21 | Provence-Alpes-Côte d’Azur | Provence-Alpes-Côte d’Azur |
22 | Corse | Corse |
23 | Guadeloupe | DROM |
24 | Guyane | DROM |
25 | Martinique | DROM |
26 | Mayotte | DROM |
27 | La Réunion | DROM |
session_start(): bool
(renvoie toujours TRUE)SID
(identifiant de session généré automatiquement).SID
est une chaîne vide si les cookies sont activéssession_start()
doit être appel avant tout affichage dans le navigateur (utilise l'en-tête de requête HTTP).
$_SESSION
$_SESSION['nomVariable'] = valeur
bool isset(nom)
permet de vérifier si une variable est définie.
void unset(nom)
détruit une variable.void session_unset(void)
détruit toutes les variables de
session.unset($_SESSION['nomvariable']
<?php
session_start();
$nom = &$_SESSION['nom'];
?>
<?php
if (!isset($_SESSION['heure'])) {
$date = getdate();
$heure = $date['hours'].":".$date['minutes'];
$_SESSION['heure']= $heure;
}
echo $_SESSION['heure']; ?>
<?php
if (isset($_SESSION['heure']))
echo $_SESSION['heure']; ?>
session_destroy()
détruit toutes les données associées à la session courante.
<?php
session_destroy();
if (isset($_SESSION['heure']))
echo 'Les variables de session restent accessibles malgré le session_destroy ! '. $_SESSION['heure'];
else
echo "Plus de date en mémoire après le reload.";
?>
session_id()
ou parfois avec la constante SID
session_id(string $identifiant)
remplace l'identifiant généré automatiquement par l'argument. session_start()
session_cache_expire ( [int new_cache_expire]): int
session_cache_limiter(string cache_policy): string
pour identifier le limiteur de cache utilisé par le navigateur (none, nocache, private, private_no_expire, public)session_get_cookie_params(void): array
: retourne un tableau contenant
les données associé au cookie de la session courante
session_set_cookie_params(int lifetime [,string path [,string domain [,bool secure]]]): void
session_start()
session_write_close()
: mémorise les données de session et termine la session courante.session_encode()
: retourne une chaine linéarisée des variables de sessionsession_decode()
: décode une chaine et alimente $_SESSIONsession_abort()
httpd
: nom du processus UNIX (d pour daemon)$ sudo apt install apache2
apache2-bin ...
(accepter l'installation des éventuels packages dépendants)$ sudo service apache2 status
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-02-27 17:03:33 CET; 1 week 0 days ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 897 (apache2)
Tasks: 11 (limit: 38054)
Memory: 49.5M
CPU: 20.138s
CGroup: /system.slice/apache2.service
├─ 897 /usr/sbin/apache2 -k start
├─205694 /usr/sbin/apache2 -k start
├─205696 /usr/sbin/apache2 -k start
├─205697 /usr/sbin/apache2 -k start
├─205698 /usr/sbin/apache2 -k start
├─205699 /usr/sbin/apache2 -k start
├─209570 /usr/sbin/apache2 -k start
├─209571 /usr/sbin/apache2 -k start
├─210307 /usr/sbin/apache2 -k start
├─210308 /usr/sbin/apache2 -k start
└─210314 /usr/sbin/apache2 -k start
/var/www/html
et correspond à cette URL : http://localhost/ qui accède au fichier
index.html/etc/apache2
$ sudo a2ensite
default-ssl
$ sudo a2enmod ssl
$ sudo service apache2 restart
a2enmod
, a2ensite
et a2enconf
génèrent simplement les liens symboliques dans les
dossiers mods-enabled/
, sites-enabled/
et conf-enabled/
a2dismod
, a2dissite
et a2disconf
suppriment ces liensphp, php-common
$ sudo apt install
libapache2-mod-php
/etc/apache2/mods-available/php8.x.conf
si on a activé les
dossiers /home/*/public_html
via le module userdir/etc/php/8.x/apache2/php.ini
à l'aide des versions de bases disponibles
dans /usr/lib/php/8.1/
$ sudo a2enmod php8.x
$ sudo service apache2 restart
/var/www/html
qui contient une fichier index.html
/var/www/html/index.html
index.html
(ou index.php
s'il
existe)root
, il n'est pas utilisable par un
utilisateur lambda
lambda
de publier des ressources sur le serveur web il faut lui
donner le droit d'écriture sur un dossier accessible par le serveur HTTP/var/www/html
: sudo mkdir www-lambda
lambda
la propriété
de www-lambda
: sudo chown lambda.lambda
www-lambda
lambda
est libre de publier sur http://localhost/www-lambda/home/lambda/public_html
/etc/apache2/mods-available/userdir.conf
permet de configurer plus finement le dossier associé aux pages
perso$ sudo apt install apache2 apache2-bin ...
(accepter l'installation des éventuels packages dépendants) dominique@hal9000:~$ sudo su postgres
postgres@hal9000:/home/dominique/$ psql
psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1))
Type "help" for help.
postgres=# CREATE USER lambda;
CREATE ROLE
postgres=# ALTER ROLE lambda WITH CREATEDB;
ALTER ROLE
postgres=# CREATE DATABASE lambda OWNER lambda;
CREATE DATABASE
postgres=# ALTER USER lambda WITH ENCRYPTED PASSWORD 'lambdapassword';
ALTER ROLE
postgres=# postgres=# \q
postgres@hal9000:/home/dominique/$
exit
dominique@hal9000:~/$ psql -h localhost -U lambda -d lambda
Password for user lambda:
psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1))
Type "help" for help.
lambda=>
/etc/apache2/mods-available
, parmi ceux-ci les modules activés sont visibles dans /etc/apache2/mods-enabled
, il s'agit juste d'un lien symbolique vers les fichiers accessibles via le premier répertoire. Pour activer un module on peut soit créer à la main les liens symbolique avec la commande ln -s
soit utiliser la commande a2enmod
$ sudo a2enmod php8.1
(adapter le numéro de version de php si besoin) $ sudo cp /usr/lib/php/8.1/php.ini-development /etc/php/8.1/apache2/php.ini
: pour avoir les messages d'erreurs php qui remontent dans le navigateur $ sudo service apache2 restart
/var/www/html
et sont accessibles par http://localhost/var/www/html
appartient à root, il est donc préférable de se créer un dossier perso pour travailler :
$ sudo mkdir /var/www/html/perso
$ sudo chown login.login /var/www/html/perso
avec perso un nom de répertoire de votre choix et login remplacé par votre login ubuntu
apt install
GET /fichier.html
et qui retourne exclusivement une page HTMLGET
demande une représentation de la ressource spécifiée. Les requêtes GET doivent uniquement être utilisées afin de récupérer des données.POST
est utilisée pour envoyer une entité vers la ressource indiquée. Cela entraîne généralement un changement d'état ou des effets de bord sur le serveur.HEAD
demande une réponse identique à une requête GET pour laquelle on aura omis le corps de la réponse (on a uniquement l'en-tête).PUT
remplace toutes les représentations actuelles de la ressource visée par le contenu de la requête.DELETE
supprime la ressource indiquée.CONNECT, OPTIONS, TRACE, PATCH
... nomEntete: valeur
Host: tools.ietf.org User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate, br Referer: http://localhost/~dominique/PHP/coursHTTP.php?page=3 Connection: keep-alive Upgrade-Insecure-Requests: 1
Date: Sun, 18 Feb 2018 20:17:01 GMT Server: Apache/2.2.22 (Debian) Content-Location: rfc4229.html Vary: negotiate,Accept-Encoding TCN: choice Last-Modified: Sun, 11 Feb 2018 09:01:19 GMT ETag: "3ca206-220af-564ec013715c0;56582426c5330" Accept-Ranges: bytes Cache-Control: max-age=604800 Expires: Sun, 25 Feb 2018 20:17:01 GMT Content-Encoding: gzip Strict-Transport-Security: max-age=3600 X-Frame-Options: SAMEORIGIN X-Xss-Protection: 1; mode=block X-Content-Type-Options: nosniff X-Clacks-Overhead: GNU Terry Pratchett Content-Length: 16953 Content-Type: text/html; charset=UTF-8
$ telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
HEAD /~dominique/PHP/index.php HTTP/1.0
Accept-language: fr,en
Accept-Encoding: utf-8
HTTP/1.1 200 OK Date: Sun, 18 Feb 2018 21:19:05 GMT Server: Apache/2.4.18 (Ubuntu) Connection: close Content-Type: text/html; charset=UTF-8 Connection closed by foreign host.
404
...100 Continue
Jusqu'ici tout va bien...101 Switching Protocol
200 OK
201 Created
204 No Content
301 Moved Permanently
304 Not Modified
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
405 Method Not Allowed
418 I'm a teapot
Voir RFC 2324500 Internal Server Error
502 Bad Gateway
503 Service Unavailable
void header ( string $header [, bool $replace = TRUE [, int $http_response_code ]] )
if (isset($_GET['coffee'])) {
header("HTTP/1.1 418 I'm a teapot");
echo "\n<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">
<html><head>
<title>418 I'm a teapot</title>
</head><body>
<h1>I'm a teapot</h1>
<p>The requested URL <b>". $_SERVER['SCRIPT_NAME']."?". $_SERVER['QUERY_STRING']. "</b> tried to brew coffee with a teapot !</p>
</body></html>";
}
else {
header("HTTP/1.1 301 Moved Permanently");
if (isset($_GET['page'])) {
header('Location: /~dominique/PHP/coursHTTP.php?page=' . $_GET['page']);
}
else
header('Location: /~dominique/PHP/coursHTTP.php?page=0');
}
try {
if (isset($_GET['action'])) {
$dbs1 = $dbh->prepare('INSERT INTO nom(nom) VALUES(:nom)');
$dbs1->bindValue(':nom', $_GET['nom']);
$dbs1->execute();
}
else {
$dbs1 = $dbh->query('DROP TABLE IF EXISTS nom ');
$dbs1 = $dbh->query('CREATE TABLE nom (id integer auto_increment PRIMARY KEY,
nom varchar(25))');
$dbs1 = $dbh->query("INSERT INTO nom(nom) VALUES ('nom 1'),('nom 2'),('nom 3')");
}
$dbs1 = $dbh->query('SELECT * from nom');
$tab = $dbs1->fetchAll($fetch_style = PDO::FETCH_ASSOC);
echo "<h1>Contenu de la table nom</h1>";
echo "<table border='1'>\n";
$colnames = array_keys($tab[0]);
echo "<tr>\n";
foreach ($colnames as $col) {
echo "<th>" . $col . "</th>";
}
echo "</tr>\n";
foreach ($tab as $ligne) {
echo "<tr>\n";
foreach ($ligne as $col) {
echo "<td>" . $col . "</td>";
}
echo "</tr>\n";
}
echo "</table>\n";
} catch (PDOException $e) {
print "<br />Erreur !: " . $e->getMessage() . "<br/>";
die();
}
echo "<h2>Formulaire utilisant la méthode GET</h2>";
echo "<form action='' method=get>
<input type='text' name='nom' />
<input type='submit' name='action' value='inserer'/>
</form>";
switch($_POST['action']) {
case 'action1' :
// TODO réalisation des éditions nécessaires à l'action 1...
$_SESSION['état'] = 'etat1';
break;
case 'action2' :
// TODO réalisation des éditions nécessaires à l'action 2...
break;
default :
// ...
}
switch($_SESSION['état']) {
case 'état1':
// TODO affichage de la page correspondante...
break;
case 'état2':
// TODO affichage de la page correspondante...
break;
default:
// ...
}
header('HTTP/1.1 303 See Other');
header('Location: fichierTraitantLesEtats.php');
exit;
try {
echo file_get_contents('util/debutSkelHtml5.html');
if (!isset($_GET['message'])) {
$dbs1 = $dbh->query('DROP TABLE IF EXISTS nom ');
$dbs1 = $dbh->query('CREATE TABLE nom (id integer auto_increment PRIMARY KEY, nom varchar(25))');
$dbs1 = $dbh->query("INSERT INTO nom(nom) VALUES ('nom 1'),('nom 2'),('nom 3')");
}
$dbs1 = $dbh->query('SELECT * from nom');
$tab = $dbs1->fetchAll($fetch_style = PDO::FETCH_ASSOC);
echo '<h1>Contenu de la table nom</h1>';
echo '<table border='1'>';
$colnames = array_keys($tab[0]);
echo '<tr>';
foreach ($colnames as $col) {
echo '<th>' . $col . '</th>';
}
echo '</tr>';
foreach ($tab as $ligne) {
echo '<tr>';
foreach ($ligne as $col) {
echo "<td> $col </td>";
}
echo '</tr>';
}
echo '</table>\n';
} catch (PDOException $e) {
print '<br />Erreur !: ' . $e->getMessage() . '<br/>';
die();
}
echo '<h2>Formulaire utilisant la méthode POST et traitement par script tiers</h2>';
echo "<form action='actionInserer.php' method='post'>
<input type='text' name='nom' />
<input type='submit' name='action' value='inserer'/>
</form>";
echo file_get_contents('util/finSkelHtml5.html');
try {
if (isset($_POST['action'])) {
$dbs1 = $dbh->prepare('INSERT INTO nom(nom) VALUES(:nom)');
$dbs1->bindValue(':nom', $_POST['nom']);
$dbs1->execute();
}
header('HTTP/1.1 303 See Other');
header('Location: insererForm_v3.php?message=Coucou de la part de actionInserer.php');
exit;
} catch (PDOException $e) {
print '<br />Erreur !: ' . $e->getMessage() . '<br/>';
die();
}
~/snap/firefox/common/.mozilla/firefox/i5wa0smb.default
cookies.sqlite
Cookie: _hjSessionUser_3827639=eyJpZCI6IjE4Y2RkMGJhLTdkYWEtNTRhMi04YTU3LWMxY2VlOTc3M2JjNiIsImNyZWF0ZWQiOjE3MTAxODgxNjE5NDYsImV4aXN0aW5nIjpmYWxzZX0=; _hjSession_3827639=eyJpZCI6ImRkNmNlMDYxLTVjNjItNGRhMS04NzRhLWMxZjNlMDY5ZDU5OCIsImMiOjE3MTAxODgxNjE5NDcsInMiOjAsInIiOjAsInNiIjowLCJzciI6MCwic2UiOjAsImZzIjoxLCJzcCI6MH0=
Cookie: cookieyes-consent=consentid:aXZ6WGd2YmRNZk5sb2tIbVhpUUN3V0RZZUF3YVVNNWw,consent:yes,action:yes,necessary:yes,functional:no,analytics:no,performance:no,advertisement:no; _hjSessionUser_3827639=eyJpZCI6IjE4Y2RkMGJhLTdkYWEtNTRhMi04YTU3LWMxY2VlOTc3M2JjNiIsImNyZWF0ZWQiOjE3MTAxODgxNjE5NDYsImV4aXN0aW5nIjp0cnVlfQ==; _hjSession_3827639=eyJpZCI6ImRkNmNlMDYxLTVjNjItNGRhMS04NzRhLWMxZjNlMDY5ZDU5OCIsImMiOjE3MTAxODgxNjE5NDcsInMiOjAsInIiOjAsInNiIjowLCJzciI6MCwic2UiOjAsImZzIjoxLCJzcCI6MH0=; wp-wpml_current_language=fr
header('Set-Cookie: monCookie=chocolat-noisette; path=/~dominique/PHP/; domain=localhost');
setCookie('monCookie2', 'chocolat-amande', time()+24*3600, '/~dominique/PHP/', 'localhost');
$_COOKIE
echo $_COOKIE['monCookie'];
affiche
chocolat-noisette
print_r($_COOKIE);
affiche
Array ( [monCookie] => chocolat-noisette [monCookie2] => chocolat-amande [PHPSESSID] => 3aipgbdk654kbj9ukvq70m4gk7 )
http://localhost/~dominique/PHP/
SELECT * FROM Collectivite;
function getAllCollectivite() : array
SELECT * FROM Collectivite WHERE col_code=$1;
function getCollectiviteById(string $id) : array
SELECT * FROM Collection WHERE condition
INSERT INTO collectivite VALUES($1, $2, $3, $4, $5);
function insertCollectivite(array $collectivite) : array
INSERT INTO ville(vil_nom, vil_population, vil_statut, col_code) VALUES($1, $2, $3, $4);
function insertVille(array $ville) : array
UPDATE collectivite SET col_nom=$2, col_population=$3, col_superficie=$4,
col_region=$5 WHERE col_code=$1;
function updateCollectivite(array $collectivite): void
DELETE FROM collectivite WHERE col_code=$1;
function deleteCollectivite(string $id): void
choisirTable | |
---|---|
Origine | état Accueil |
Destination | état afficheTable |
Paramètre | nom de la table à afficher |
Traitement(s) | mémoriser le nom de la table dans la session |
insérerElement | |
---|---|
Origine | état afficheTable |
Destination | état afficheFormulaireInsertion |
Paramètre | Aucun (le nom de la table concernée est dans la session) |
Traitement(s) | Aucun |
modifierElement | |
---|---|
Origine | état afficheTable |
Destination | état afficheFormulaireModification |
Paramètre | identifiant de l'élément à éditer |
Traitement(s) | Aucun |
sauverElement | |
---|---|
Origine | état afficheFormulaireModification |
Destination | état afficheTable |
Paramètre | Aucun (tout ce qui est utile est dans la session) |
Traitement(s) |
|