Parties
- Table des matières
- Révisions
- interactions
- balises HTML
- entêtes
- propriétés CSS courantes
- css simple
- sélecteurs CSS simples
- selecteurs css - heritage
- balise php
- php - variables
- tableaux en PHP
- PHP - chaînes de catactères
- Concaténation
- insertion simple de variables
- correction liste
- echappement
- Échappement (suite)
- Échappement (suite) - 2
- formulaires
- formulaire HTML
- Envoyer
- traitement de la saisie
- programation d'un formulaire
- correction programation d'un formulaire
- formulaire et traitement dans le même fichier
- correction formulaire et traitement dans le même fichier
- préremplir un formulaire
- correction pré-remplissage
- affichage liste
- correction liste-personnes.php
- ajouter une personne
- correction ajout liste
- persistance
- correction Persistance des données
- Effacer des lignes
- correction effacer
- Mise en forme
- Fin
- Base de données
- Révision SQL
- revision drop
- revision insert
- creation de la table
- Connection à la base de données
- Affichage du tableau
- formulaire de saisie
1. Table des matières
1.1 Table des matières
Bienvenue au TP-6.
Pour votre progression, c'est
très important de finir le TP précédent avant de commencer celui-ci.
Il
est vivement recommandé de faire ce TP en ayant le cours sous les yeux.
Si vous n'avez pas la version papier, vous pouvez ouvrir la version PDF
dans une autre fenêtre (ou onglet) de votre navigateur.
2. Révisions
2.1 Révisions
Dans ces exercices nous allons réviser quelques concepts vus dans les TP précédents.
2.2 interactions
Interactions
Répondez
à cette question sans regarder votre cours, en réfléchissant bien aux
différents intervenants [A-C] notés [X] et aux actions effectuées (1-5)
- A-C : intervenants
- 1-4 : actions

- oui
- non
- A : [X] Navigateur
- B : [X] Serveur Web (apache)
- C : [X] interpreteur PHP
- D : [X] fichier page.php
- E : [X] Base de données
- 1 : requête demandant une page au serveur
- 2 : l'interpréteur PHP exécute le fichier page.php
- 3 : le programme PHP cherche des informations dans la BDD
- 4 : le HTML généré par le programme PHP est renvoyé
- 5 : le navigateur affiche le HTML reçu
2.3 balises HTML
Balises HTML
- oui
- non
- un paragraphe : p
- une image : img
- balise figurant dans les entêtes, permettant d'indiquer un fichier css (feuille de style) à utiliser : link
- balises délimitant le début et la fin d'une liste non ordonnée : ul
- lien hypertexte vers une autre page web : a
- élément d'une liste : li
- balise indiquant que son contenu doit être mis en valeur (souvent le texte alors affiché en gras) : strong
2.4 entêtes
Premières lignes d'un fichier HTML
(essayez répondre sans regarder votre cours)
- oui
- non
- balise indiquant la norme du HTML dans laquelle est écrite ce document : DOCTYPE
- la racine de la partie non affichable du document : head
- la racine de tout le document : html
- balise indiquant que ce document est du xml et spécifiant l'encodage (caractères) utilisé : xml
- racine de la partie affichable du document : body
- le texte qui appairait dans la barre de la fenêtre de votre navigateur : title
2.5 propriétés CSS courantes
Propriétés CSS courantes
- oui
- non
- couleur du texte : color
- couleur de fond d'un element : background-color
- encadrer un élément : border
- rajouter de l'espace autour d'un élément : padding
- taille du texte : font-size
- police de caractères : font-familly
- largeur d'un élément : width
2.6 css simple
CSS simple
Donnez,
en une seule ligne, la déclaration figurant dans un fichier css
permettant de surligner (couleur de fond) les éléments importants
(strong) en jaune (yellow).- [ ]*strong *{ *background-color *: *yellow *;? *} *
2.7 sélecteurs CSS simples
Sélecteurs CSS simples
- <toto>...</toto>
- <p id="toto">...</p>
- <p class="toto">...</p>
- oui
- non
- 1 : toto {color: red;}
- 2 : #toto {color: red;}
- 3 : .toto {color: red;}
2.8 selecteurs css - heritage
Sélecteurs CSS
On veut que les éléments importants (strong) contenus dans des paragraphes, soient écrits en rouge.
XXXX {color: red;}
Donnez XXXX:2.9 balise php
Un fichier PHP est constitué d'un mélange de programme en PHP et de HTML.
Que faut-il écrire pour commencer un bout de programme PHP?
2.10 php - variables
traduisez du C en PHP:
x=x+5;
- [ ]*\$x *= *\$x *\+ *5 *\;? *
2.11 tableaux en PHP
Tableaux en PHP
$essai est un tableau
print_r($essai) affiche:
Array
(
[Thomas] => rouge
[Ahmed] => vert
[Naima] => bleu
)
Pour afficher 'bleu' on écrit:
echo XXXXX;
Donnez XXXXX
- [ ]*\$essai *\[ *(['"]|")Naima(['"]|") *\] *
3. PHP - chaînes de catactères
3.1 PHP - chaînes de catactères
Dans les exercices suivants nous allons manipuler des chaînes de caractères.
La manipulation de texte occupe une place importante en PHP, l'objectif étant, souvent, de générer du HTML.
3.2 Concaténation
Concaténation
Le fait de coller deux chaînes de caractères ensemble s'appelle la concaténation.
Ça se fait en PHP avec l'opérateur "." (point).
echo "bonjour "."toto";
Si un des éléments de la concaténation n'est pas une chaîne, il sera converti en chaîne:
$x=5;
echo "resultat: ".$x;
Ici $x est converti d'entier en chaîne avant d'être concaténé.
Exercice
Qu'affiche le code suivant?
$x='z';
echo "a".'b'.$x.'c'.$x;
3.3 insertion simple de variables
Insérer une chaîne dans du texte
En PHP on cherche souvent à ajouter des informations à l'intérieur d'un texte.
Par exemple:
- $nom='Ahmed';
- echo '<h1>Page perso de : '.$nom.'</h1>';
- echo "<h1>Page perso de : $nom</h1>";
Les lignes 2 et 3 font la même chose.
La ligne 2. utilise plusieurs concaténations
La ligne 3. utilise les guillemets doubles " dans lesquelles le PHP remplace les variables.
On choisit la méthode la plus pratique selon les cas.
Exercice:
Écrivez un programme PHP qui génère le html qui s'affiche comme ceci:
en utilisant une liste non ordonnée et des
guillemets simples '
- ligne 1
- ligne 2
- ligne 3
- ligne 4
- ...
- ligne 10
Re-écrivez le programme en utilisant des
guillemets doubles " sans concaténation.
N'oubliez pas à chaque fois de:
- regarder votre code HTML généré (ctrl-U)
- rajouter des fins de ligne pour que votre html généré soit lisible
- de valider le HTML généré (web developer toolbar: tools->validate local html)
3.4 correction liste
Correction de l'exercice précédent:
Guillemets simples:
...
echo '<ul>';
for($i=1;$i<=10;$i++)
{
echo '<li>ligne '.$i.'</li>';
}
echo '</ul>';
...
Guillemets doubles:
echo "<ul>";
for($i=1;$i<=10;$i++)
{
echo "<li>ligne $i</li>";
}
echo "</ul>";
3.5 echappement
Echappement
En PHP, on génère souvent du html. Par exemple: echo "<p>";
Il arrive souvent qu'on veuille afficher des guillemets: <a href="page.html">lien</a>
Qu'arrive-il si on utile des guillemet doubles comme suit:
echo "<a href="page.html">lien</a>";- C'est une erreur : Oui, il y a une erreur: le PHP voit une première chaîne: "<a href="
Ensuite il voit page.html, ce qui n'est pas valide en PHP.
- il affiche <a href="page.html">lien</a>
3.6 Échappement (suite)
Échappement (suite)
Une première solution serait d'utiliser des guillemets simples pour echo:
echo '<a href="page.html">lien</a>';
Mais ce n'est pas toujours pratique. Une deuxième solution est d'échaper les guillemets:
echo "<a href=\"page.html\">lien</a>";
En utilisant le caractère \ un dit au PHP de ne pas considérer le
guillemet " qui suit comme un guillemet, mais comme un caractère
ordinaire.
On veut afficher:
<img src="t.gif" alt="ma photo"/>
à l'aide de la ligne suivante:
echo "XXXXX";
que faut-il écrire à la place de XXXXX ?- <img src=\"t.gif\" alt=\"ma photo\"/>
- <img src="t.gif" alt="ma photo"/>
- <img src=""t.gif"" alt=""ma photo""/>
3.7 Échappement (suite) - 2
Le
cas inverse peut se produire. Nous voulons écrire un texte contenant
des guillemets simples (') à l'intérieur d'une chaîne définie avec des
guillemets simples. Dans ce cas, il faut échapper le guillemet simple :
echo 'une chaîne avec un
' guillemet simple';
Par exemple, nous verrons plus tard qu'on peut appeler une fonction javascript lorsqu'on clique sur un élément HTML:
<h1 onclick="ma_fonction('bonjour')">Un titre</h1>
Nous voulons afficher la ligne précédente avec:
echo 'XXXX';
Que faut-il écrire à la place de XXXX ?
- .*ma_fonction\(\\'bonjour\\'\).*
4. formulaires
4.2 formulaire HTML
Formulaire - partie HTML
Nous allons commencer par créer une page HTML contenant un formulaire.
En
vous inspirant de l'exemple donné en cours (ci-dessous), créez un
fichier essai-formulaire.html dans votre répertoire public_html
(important) affichant un champ texte et un bouton pour soumettre
(envoyer) la saisie.
Vous trouverez plus de documentation ici:
http://www.la-grange.net/w3c/html4.01/interact/forms.html
Vérifiez que votre page HTML s'affiche correctement et qu'elle est valide en xhtml 1.0 strict.
- Expérimentez en changeant la valeur de l'attribut "value" de l'élément "input" correspondant à la zone de saisie texte.
- Expérimentez en changeant la valeur de l'attribut "value" de l'élément "input" correspondant au bouton.

4.3 Envoyer
Création du script de traitement de la saisie
Créez un fichier
traiter-saisie.php dans votre répertoire public_html, et faites en sorte qu'il affiche le titre suivant:
<h1>Je traite la saisie du formulaire</h1>
Vérifiez
que ce titre s'affiche bien lorsque vous visitez
http://aquanux/~XXXX/traiter-saisie.php et que le HTML généré est valide
(il faut ajouter les entêtes).
Faire que la soumission du formulaire appelle le script de traitement
Lorsque vous appuyez sur le bouton submit affiché par
essai-formulaire.html le navigateur envoie le texte saisi au serveur
vers la page PHP spécifié par l'attribut "action" de l'élément "form".
Par exemple avec:
<form method="get" action="traiter-saisie.php"> .... </form>les informations saisies dans le formulaire seront envoyés vers la page PHP
traiter-saisie.php en utilisant la méthode GET.
Modifiez votre fichier essai-formulaire.html pour qu'il utilise la méthode get et que l'action soit
traiter-saisie.php comme dans l'exemple ci-dessus.
Vérification du fonctionnement
Ensuite, visitez http://aquanux/~XXXX/essai-formulaire.html , remplissez le champs texte et appuyez sur le bouton.
Vous devriez voir "Je traite la saisie du formulaire"
Regardez
l'URL (adresse) affichée en haut, dans la barre d'adresses de votre
navigateur. Vous devriez voir apparaître (légèrement encodé) le contenu
que vous avez saisi dans le formulaire.
Pour mieux comprendre ce qui se passe essayez de comparer avec ce schéma:

4.4 traitement de la saisie
traitement de la saisie
Le PHP vous fournit les résultats de la saisie dans un tableau:
- $_GET[...] si vous utilisez la méthode GET
- $_POST[...] si vous utilisez la méthode POST
rajoutez le code PHP suivant dans
traiter-saisie.php pour afficher le contenu du tableau $_GET
echo '<pre>Le tableau GET:<br/>';print_r($_GET);echo '</pre>';
Re-envoyez le formulaire: Vous devriez voir le résultat de votre saisie affiché.
Expérimentez, en changeant la valeur de l'attribut "name" du input correspondant au champ texte dans essai-formulaire.html
Attention: n'oubliez pas de recharger "essai-formulaire.html" dans votre navigateur si vous l'avez modifié.
Regardez attentivement l'url (adresse) affichée dans votre navigateur lorsque vous soumettez le formulaire.
elle devrait être du type:
http://aquanux/~XXXXX/traiter-saisie.php?nom=toto
remarquez le "?nom=toto", les arguments GET sont visibles dans l'url
4.5 programation d'un formulaire
On veut écrire un petit programme qui affiche l'age d'une personne lorsqu'on saisit son pseudo.
Pour ca , on peut reprendre et modifier les fichiers essai-formulaire.html et traiter-saisie.php
Par exemple: si on saisit dans un formulaire 'tom' et on appuie sur "envoyer", le programme affiche
L'age de tom est : 12
Utilisez le tableau ci-dessous dans traiter-saisie.php pour obtenir le résultat souhaité.
$personnes=
array(
'tom'=>12,
'jo' =>24,
'zzz'=>31,
'seb'=>11,
);
4.6 correction programation d'un formulaire
Correction
essai-formulaire.html
...
<form method="get" action="traiter-saisie.php">
<p>
<input type="text" name="nom"/>
<input type="submit" value="chercher"/>
</p>
</form>
...
traiter-saisie.php
...
<?php
$personnes=
array(
'tom'=>12,
'jo' =>24,
'zzz'=>31,
'seb'=>11,
);
$nom=$_GET['nom'];
echo "L'age de $nom est : ".$personnes[$nom];
?>
...
4.7 formulaire et traitement dans le même fichier
Le programme précèdent est un peu pénible à utiliser. A chaque saisie, nous devons revenir à essai-formulaire.html
Une
solution est de fusionner les fichiers essai-formulaire.html et
traiter-saisie.php en un seul fichier qu'on pourra appeler personnes.php
Dans personnes.php, il faudra déterminer si on se trouve dans le cas ou une valeur a été saisie ou pas.
Pour ca on peut regarder dans le tableau $_GET voir si la clef 'nom' existe dedans.
Si elle existe, c'est que la saisie a été faite et on doir afficher l'âge de la personne.
Sinon, on doit juste présenter le formulaire.
Pour savoir si une clé d'un tableau existe on peut utiliser la fonction "isset" : par exemple:
if(isset($_GET['nom']))
{
// afficher infos sur la personne
}
Fusionnez les deux fichiers et utilisez isset pour afficher les information sur une personne que si elles ont été demandées.
4.8 correction formulaire et traitement dans le même fichier
Correction
personnes.php
...
<?php
$personnes=
array(
'tom'=>12,
'jo' =>24,
'zzz'=>31,
'seb'=>11,
);
if(isset($_GET['nom']))
{
$nom=$_GET['nom'];
echo "<p>L'age de $nom est : ".$personnes[$nom]."</p>";
}
?>
<form method="get" action="personnes.php">
<p>
<input type="text" name="nom"/>
<input type="submit" value="chercher"/>
</p>
</form>
...
4.9 préremplir un formulaire
Pre-remplir un formulaire:
En html, on peut pré-remplir un champ "text" d'un formulaire en utilisant l'attribut "value".
Par exemple, pour obtenir un champ texte prerempli avec la valeur "tom" on utilise:
<input type="text" name="nom" value="tom" />
Modifiez
le fichier personnes.php pour qu'après une saisie il ré-affiche le
formulaire pré-rempli avec la dernière valeur saisie: Donc, si on saisit
"toto", le formulaire suivant s'affichera avec la valeur "toto".
4.10 correction pré-remplissage
correction pré-remplissage
(seuls les lignes en gras changent)
personnes.php
...
<?php
$personnes=
array(
'tom'=>12,
'jo' =>24,
'zzz'=>31,
'seb'=>11,
);
$nom='';
if(isset($_GET['nom']))
{
$nom=$_GET['nom'];
echo "<p>L'age de $nom est : ".$personnes[$nom]."</p>";
}
?>
<form method="get" action="personnes.php">
<p>
<input type="text" name="nom" value="<?php echo $nom; ?>"/>
<input type="submit" value="chercher"/>
</p>
</form>
...
4.11 affichage liste
Affichage d'une liste
Écrivez un nouveau programme liste-personnes.php qui affiche le tableau PHP suivant sous la forme d'un tableau HTML.
Affichez les noms dans la première colonne du tableau HTML et les ages dans la deuxième.
$personnes=
array(
'tom'=>12,
'jo' =>24,
'zzz'=>31,
'seb'=>11,
);
4.12 correction liste-personnes.php
correction
liste-personnes.php
...
<?php
$personnes=
array(
'tom'=>12,
'jo' =>24,
'zzz'=>31,
'seb'=>11,
);
echo '<table>';
foreach($personnes as $nom=>$age)
{
echo '<tr>';
echo "<td>$nom</td>";
echo "<td>$age</td>";
echo '</tr>';
}
echo '</table>';
?>
...
4.13 ajouter une personne
Ajouter une personne
Nous voulons ajouter au programme précédent un formulaire permettant d'ajouter une personne au tableau.
En vous inspirant de l'exercice d'avant (personnes.php) modifiez liste-personnes.php pour
1. ajouter un formulaire contenant deux champs textes, pour le nom et pour l'age
2.
faites en sorte que lors de la soumission du formulaire, une nouvelle
personne soit ajoutée dans le tableau PHP et qu'elle apparaisse dans le
tableau HTML affiché.
4.14 correction ajout liste
liste-personnes.php
<?php
$personnes=
array(
'tom'=>12,
'jo' =>24,
'zzz'=>31,
'seb'=>11,
);
if(isset($_GET['nom']))
{
$nom=$_GET['nom'];
$age=$_GET['age'];
$personnes[$nom]=$age;
}
echo '<table>';
foreach($personnes as $nom=>$age)
{
echo '<tr>';
echo "<td>$nom</td>";
echo "<td>$age</td>";
echo '</tr>';
}
echo '</table>';
?>
<form method="get" action="liste-personnes.php">
<p>
<label>nom:<input type="text" name="nom"/></label>
<br/>
<label>age:<input type="text" name="age"/>
</label>
<input type="submit" value="ajouter"/>
</p>
</form>
4.15 persistance
Persistance des données
Dans l'exercice précédent, on aurait voulu que la personne ajoutée à la liste reste dans la liste.
Le problème est le suivant:
En PHP les variables ne sont pas conservées d'une requête à la suivante.
ça
peut-être surprenant ou déroutant, si vous êtes habitués à programmer
en C ou en Java (des applications qui ne sont pas dans une optique
client-serveur).
La solution la plus courante est d'enregistrer
les informations dans une base de données, et les relire de la base de
données à la requête suivante. Cela dépasse un petit peu le cadre de
notre TP.
Pour l'instant nous allons travailler avec deux
fonctions enregistrer() et lire() très simples. Pour que ca marche, vous
devez ajouter la ligne suivante au tout début de votre code (avant tout
html). Si vous obtenez un message "headers already sent" c'est que ce
n'est pas au tout début.
<?php session_start();?>
et quelque part dans votre programme ajoutez:
function enregistrer($donnee)
{
$_SESSION['donnee']=$donnee;
}
function lire()
{
return $_SESSION['donnee'];
}
Maintenant,
modifiez liste-personnes.php de manière à ce que le tableau $personnes
soit enregistré et relu à chaque requête. Attention: la première fois
que vous l'executez, vous devez initialiser le tableau $personnes avec
un tableau contenant des personnes. Pour les executions suivantes vous
pouvez mettre en commentaire le code d'initialisation.
4.16 correction Persistance des données
correction Persistance des données
(les changements sont en gras)
liste-personnes.php
<?php session_start();?>
<?php echo '<?xml version="1.0" encoding="UTF-8"?>';?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Un essai</title>
</head>
<body>
<?php
// initialisation, à ne faire qu'une seule fois
// $personnes=
// array(
// 'tom'=>12,
// 'jo' =>24,
// 'zzz'=>31,
// 'seb'=>11,
// );
// enregistrer($personnes);
$personnes=lire();
if(isset($_GET['nom']))
{
$nom=$_GET['nom'];
$age=$_GET['age'];
$personnes[$nom]=$age;
enregistrer($personnes);
}
echo '<table>';
foreach($personnes as $nom=>$age)
{
echo '<tr>';
echo "<td>$nom</td>";
echo "<td>$age</td>";
echo '</tr>';
}
echo '</table>';
function enregistrer($donnee)
{
$_SESSION['donnee']=$donnee;
}
function lire()
{
return $_SESSION['donnee'];
}
?>
<form method="get" action="liste-personnes.php">
<p>
<label>nom:<input type="text" name="nom"/></label>
<br/>
<label>age:<input type="text" name="age"/>
</label>
<input type="submit" value="ajouter"/>
</p>
</form>
</body>
</html>
4.17 Effacer des lignes
Effacer des lignes
Dans cet exercice, nous allons rajouter un lien à chaque ligne pour l'effacer comme ceci:

Nous avons vu dans un exercice précédent que les arguments GET d'un formulaire apparaissaient dans le lien :
http://aquanux/~XXXXX/exemple.php?
nom=totoNous n'avons donc pas toujours besoin de formulaire pour envoyer des arguments GET au programme PHP.
Rajoutez
une case au début de chaque ligne du tableau. Dans ces cases, ajoutez
un lien qui envoie l'argument en GET le nom de la personne à effacer.
Ensuite,
faites en sorte que si vous recevez en argument GET l'ordre d'effacer,
vous supprimez la personne correspondante du tableau PHP.
Pour effacer un élément d'un tableau PHP, vous pouvez utiliser la fonction unset:
unset($montableau[maclef]);
4.18 correction effacer
correction effacer
liste-personnes.php
...
$personnes=lire();
if(isset($_GET['effacer']))
{
unset($personnes[$_GET['effacer']]);
enregistrer($personnes);
}
if(isset($_GET['nom']))
{
$nom=$_GET['nom'];
$age=$_GET['age'];
$personnes[$nom]=$age;
enregistrer($personnes);
}
echo '<table>';
foreach($personnes as $nom=>$age)
{
echo '<tr>';
echo '<td><a href="liste-personnes.php?effacer='.$nom.'">effacer</a></td>';
echo "<td>$nom</td>";
echo "<td>$age</td>";
echo '</tr>';
}
echo '</table>';
...
4.19 Mise en forme
Mise en forme
En utilisant des styles et l'image suivante:

Faites en sorte d'obtenir un affichage plus joli, par exemple comme celui-ci:

L'image doit être dans le lien, pour qu'on puisse cliquer dessus pour effacer la ligne.
5. Fin
Merci de passer au TP suivant (TP-5).
( ne faites pas les questions suivantes de ce TP)
NE FAITS PAS LES QUESTIONS SUIVANTES DE CE TP
(sauf si vous êtes vraiment TRÈS en avance)
6. Base de données
6.1 Base de données
Dans les exercices précédents nous avons appris à utiliser des formulaires et à traiter les saisies.
Entre
deux exécutions d'une page PHP, toutes les informations étaient
perdues, nous ne pouvions pas enregistrer les résultats de la saisie.
Pour pouvoir enregistrer des informations, l'approche la plus courante est d'utiliser une base de données (BDD).
Dans
les exercices suivants nous allons apprendre a se connecter sur votre
base de données postgres et à y effectuer des requêtes.
6.2 Révision SQL
Révision SQL
Quels sont les deux premier mots de la commande SQL vous permettant de générer une nouvelle table ?- [ ]*CREATE *TABLE *
- [ ]*create *table *
6.3 revision drop
Révision:
Quels sont les deux premiers mots de la commande SQL vous permettant de détruire une table?
- [ ]*DROP *TABLE *
- [ ]*drop *table *
6.4 revision insert
Révision:
Quels sont les deux premiers mots de la commande sql vous permettant d'ajouter une nouvelle ligne à une table?
- [ ]*INSERT *INTO *
- [ ]*insert *into *
6.5 creation de la table
Creation d'une table
Vous pouvez accéder directement à votre base de données postgres en tapant la commande suivante dans un terminal:
psql -h aquanux
Quelques commandes utiles:
- \? : aide commandes internes
- \h : aide SQL
- \d : liste de toutes vos tables
- \i : exécuter les commandes SQL contenues dans un fichier
Dans les questions suivantes vous allez avoir besoin d'un mot de
passe pour accèder à votre BDD à partir du PHP. Si vous n'avez pas de
mot de passe ou si vous l'avez oublié, vous pouvez le modifier à l'aide
dela commande postgres suivante:
ALTER USER "votrenomutilisateur" WITH PASSWORD 'nouveaumotdepasse';
1. Créez une table personnes avec les colonnes 'pseudo' 'nom' 'prenom' 'score' 'admin'. La clé primaire sera 'pseudo'.
(doc dans
http://www.postgresql.org/docs/7.1/static/sql-createtable.html )
CREATE TABLE personnes ...Votre table contiendra les colonnes suivantes:
'nom' -> varchar(40)
'prenom' -> varchar(40)
'pseudo' -> varchar(40) (clé primaire)
'score' -> integer
'admin' -> boolean
2. ajoutez quelques lignes à votre table
(doc
http://www.postgresql.org/docs/7.1/interactive/sql-insert.html)
INSERT INTO personnes VALUES ('...','...'...);6.6 Connection à la base de données
Connexion à la base de données et affichage d'un table
En vous inspirant de l'exemple ci-dessous (tiré de la doc PHP), affichez le contenu de la table.
- La BDD de données tourne sur aquanux et votre PHP s'exécute sur
aquanux (la même machine). Donc l'hôte (la machine) est localhost.
- Le nom de votre base de données est le même que votre nom d'utilisateur.
- Le mot de passe est celui que vous avez crée précedement (ALTER USER...).
Vous trouverez la documentation des fonction postgres du PHP ici (aller en bas de la page):
http://www.php.net/manual/fr/ref.pgsql.php
Vous y trouverez l'exemple suivant de code permettant de se connecter à la BDD.
Recopiez cet exemple en modifiant les paramètres de connexion et le nom de la table.
Ceci permettra de vérifier que la connexion à votre BDD fonctionne correctement.
<?php// Connexion, sélection de la base de données$dbconn = pg_connect("host=localhost dbname=publishing user=www password=foo") or die('Connexion impossible : ' . pg_last_error());// Exécution de la requête SQL$query = 'SELECT * FROM auteurs';$result = pg_query($query) or die('Échec requête : ' . pg_last_error());// Affichage des résultats en HTMLecho "<table>\n";while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) { echo "\t<tr>\n"; foreach ($line as $col_value) { echo "\t\t<td>$col_value</td>\n"; } echo "\t</tr>\n";}echo "</table>\n";// Libère le resultsetpg_free_result($result);// Ferme la connexionpg_close($dbconn);?>6.7 Affichage du tableau
Affichage du tableau
Fusionnez
le programme précédent avec le programme d'affichage de tableau que
vous avez crée plus tôt dans le TP (avec les formulaires).
6.8 formulaire de saisie
Formulaire de saisie d'une personne
1.
Écrivez un formulaire HTML permettant de saisir tous les champs d'une
personne. L'attribut "action" du formulaire enverra vers un fichier
"ajout-personne.php". Vous utiliserez la méthode post.
2. Créez un fichier ajout-personne.php et ajoutez-y le code permettant de se connecter à la BDD (pg_connect...)
3. Avec le contenu du tableau $_POST, générez une chaîne de caractères ($query) contenant requête SQL ("INSERT INTO personnes VALUES ('tom',..." )
qui permettra d'insérer la nouvelle personne. Affichez cette requête
(echo $query;) sans l'exécuter pour vérifier qu'elle est correcte.
4.
Utilisez la fonction pg_query pour exécuter la requête et ensuite
vérifiez (sur la ligne de commande psql) que votre table a bien été
modifiée.
$result = pg_query($query) or die('Échec requête : ' . pg_last_error());