Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
bdenligne [2022/11/17 21:01] qcbs [Partie 1 - Formulaire HTML] |
bdenligne [2024/03/11 16:51] (current) qcbs [Utilisation de dplyr] |
||
|---|---|---|---|
| Line 5: | Line 5: | ||
| ===== Presentation ===== | ===== Presentation ===== | ||
| [[http://prezi.com/tcks6siw8q-u/introduction-a-la-gestion-des-bases-de-donnees-avec-des-logiciels-libres/|Lien vers la présentation Prezi]] | [[http://prezi.com/tcks6siw8q-u/introduction-a-la-gestion-des-bases-de-donnees-avec-des-logiciels-libres/|Lien vers la présentation Prezi]] | ||
| - | |||
| - | [[http://prezi.com/tcks6siw8q-u/present/?auth_key=wt03qbs&follow=GuillaumeLarocque&kw=present-tcks6siw8q-u&rc=ref-19631691|Lien vers la présentation simultanée]] | ||
| ===== Ressources utiles ===== | ===== Ressources utiles ===== | ||
| - | * [[http://www.postgresql.org/docs/current/static/reference.html|PostgreSQL 9.6 Reference Manual]] | + | * [[http://www.postgresql.org/docs/current/static/reference.html|PostgreSQL Reference Manual]] |
| * [[http://link.springer.com/book/10.1007%2F978-1-4302-0018-5|Beginning databases with PostgreSQL]] | * [[http://link.springer.com/book/10.1007%2F978-1-4302-0018-5|Beginning databases with PostgreSQL]] | ||
| * [[https://wiki.postgresql.org/wiki/Main_Page|PostgreSQL wiki]] | * [[https://wiki.postgresql.org/wiki/Main_Page|PostgreSQL wiki]] | ||
| - | * [[http://www.pgsql.ru/db/pgsearch/|PGSearch pour chercher des sites web en lien avec PostgreSQL.]] | + | * [[https://www.postgresqltutorial.com/|PostgreSQL Tutorial]] |
| + | * [[https://mystery.knightlab.com/|SQL Murder Mystery]] | ||
| ====== Installation de PostgreSQL ====== | ====== Installation de PostgreSQL ====== | ||
| Line 185: | Line 184: | ||
| ^fonction^description^exemple^ | ^fonction^description^exemple^ | ||
| |int|integer|5| | |int|integer|5| | ||
| + | |real|nombre avec précision de 5 décimales|31.65973| | ||
| |decimal(,)|decimal(longueur totale, nombre de décimales)|122.52| | |decimal(,)|decimal(longueur totale, nombre de décimales)|122.52| | ||
| |varchar()|character(longueur maximale)| 'hirondelle bicolore'| | |varchar()|character(longueur maximale)| 'hirondelle bicolore'| | ||
| |text|texte d'une longueur non-définie| 'Il était une fois une hirondelle...'| | |text|texte d'une longueur non-définie| 'Il était une fois une hirondelle...'| | ||
| |timestamp|date et heure| '2012-10-21 10:03:21'| | |timestamp|date et heure| '2012-10-21 10:03:21'| | ||
| + | |date|date seulement| '2012-10-21'| | ||
| [[http://www.postgresql.org/docs/current/static/datatype.html|Liste complète des type de données PostgreSQL.]] | [[http://www.postgresql.org/docs/current/static/datatype.html|Liste complète des type de données PostgreSQL.]] | ||
| Line 203: | Line 204: | ||
| obs_time timestamp,espece text,nombre integer,lat real,"long" real); | obs_time timestamp,espece text,nombre integer,lat real,"long" real); | ||
| </file> | </file> | ||
| - | Note: nous utilisons les doubles guillements "" pour marquer l'utilisation d'un mot réservé, d'un mot avec des caractères spéciaux ou des espaces dans le nom d'une table ou d'une colonne. | + | Note: nous utilisons les doubles guillements "" pour marquer l'utilisation d'un mot réservé, d'un de caractères spéciaux ou d'espaces dans le nom d'une table ou d'une colonne. |
| Insérer une nouvelle ligne dans la table | Insérer une nouvelle ligne dans la table | ||
| Line 213: | Line 214: | ||
| Pour visualiser la table | Pour visualiser la table | ||
| - | <file> | + | <file postgresql> |
| SELECT * FROM obs_oiseaux; | SELECT * FROM obs_oiseaux; | ||
| </file> | </file> | ||
| Line 243: | Line 244: | ||
| tmax_ann DEC(10,2), tmean_an DEC(10,2), vpann_me DEC(10,2)); | tmax_ann DEC(10,2), tmean_an DEC(10,2), vpann_me DEC(10,2)); | ||
| </file> | </file> | ||
| - | |||
| - | |||
| - | ++++ MySQL | | ||
| - | <file> | ||
| - | CREATE TABLE lakes (lake_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,numero INT, lake_name text, | ||
| - | province text, latitude DEC(10,5),longitude DEC(10,5), number_of_species INT, ecoprov VARCHAR(50), | ||
| - | ecozone VARCHAR(50), gss DEC(10,2),gse DEC(10,2), gsl DEC(10,2), gdd10 DEC(10,2), egdd DEC(10,2), | ||
| - | mean_ele DEC(10,2), pe_ann_p DEC(10,2), totp_ann DEC(10,2), srann_me DEC(10,2), shann_me DEC(10,2), | ||
| - | tmax_ann DEC(10,2), tmean_an DEC(10,2), vpann_me DEC(10,2)); | ||
| - | </file> | ||
| - | ++++ | ||
| Charger le fichier CSV dans cette table. | Charger le fichier CSV dans cette table. | ||
| Line 283: | Line 273: | ||
| </file> | </file> | ||
| + | ==== Importation depuis DBeaver ==== | ||
| - | Pour la troisième table: | ||
| + | Pour la **troisième table**, nous allons utiliser l'interface de **DBeaver**. Cliquez avec le bouton de gauche de la souris sur Tables dans Schemas>public dans le menu de gauche, et sélectionnez Import Data. Cliquez sur Next et choisissez le fichier CSV species_acro.csv sur votre ordinateur. Dans Tables mapping, assurez-vous que le nom de la table, le nom des colonnes et le format des colonnes est adéquat. Après avoir cliqué sur Next à nouveau, cliquez sur Proceed. | ||
| + | |||
| + | ++++ Commande PostgreSQL correspondante | | ||
| <file postgresql> | <file postgresql> | ||
| CREATE TABLE species_acro (species_id INT NOT NULL, full_name varchar(100), short_name varchar(25)); | CREATE TABLE species_acro (species_id INT NOT NULL, full_name varchar(100), short_name varchar(25)); | ||
| COPY species_acro FROM 'C:/bdlibre/species_acro.csv' WITH csv HEADER DELIMITER AS ','; | COPY species_acro FROM 'C:/bdlibre/species_acro.csv' WITH csv HEADER DELIMITER AS ','; | ||
| </file> | </file> | ||
| + | ++++ | ||
| ===== RÉFÉRENCES ===== | ===== RÉFÉRENCES ===== | ||
| Line 609: | Line 603: | ||
| - | ===== Stylisation avec le CSS ===== | ||
| - | |||
| - | [[http://www.w3schools.com/cssref/|Guide de référence CSS]] | ||
| - | |||
| - | On peut donner un "id" à n'importe quel élément html. Important: il ne peut y avoir qu'un id unique par élément | ||
| - | <file html> | ||
| - | <input type="text" name="nom_texte" id="nom_texte"> | ||
| - | </file> | ||
| - | |||
| - | Et on peut y faire référence dans l'entête de style css du fichier html avec le dièse "#" | ||
| - | <file html> | ||
| - | <head> | ||
| - | <style> | ||
| - | #nom_texte { | ||
| - | width:300px; | ||
| - | height:30px; | ||
| - | color:red; | ||
| - | background-color:#ffff00; | ||
| - | font-family:verdana,arial; | ||
| - | font-size:14px; | ||
| - | font-weight:bold; | ||
| - | padding:0px 5px 0px 5px; #top right bottom left | ||
| - | } | ||
| - | </style> | ||
| - | </head> | ||
| - | </file> | ||
| - | |||
| - | On peut aussi donner une "class" à n'importe quel élément html. Cette classe peut se répeter sur plusieurs éléments | ||
| - | <file html> | ||
| - | <input type="text" name="nom_texte1" class="classe_texte"> | ||
| - | <input type="text" name="nom_texte2" class="classe_texte"> | ||
| - | <input type="text" name="nom_texte3" class="classe_texte"> | ||
| - | </file> | ||
| - | |||
| - | Et on peut y faire référence dans l'entête de style css du fichier html avec le point "." | ||
| - | <file html> | ||
| - | <head> | ||
| - | <style> | ||
| - | .classe_texte { | ||
| - | width:300px; | ||
| - | height:30px; | ||
| - | color:red; | ||
| - | background-color:#ffff00; | ||
| - | font-family:verdana,arial; | ||
| - | font-size:14px; | ||
| - | font-weight:bold; | ||
| - | padding:0px 5px 0px 5px; #top right bottom left | ||
| - | } | ||
| - | </style> | ||
| - | </head> | ||
| - | </file> | ||
| ====== Partie 2 - Création de la base de données associée ====== | ====== Partie 2 - Création de la base de données associée ====== | ||
| Line 666: | Line 609: | ||
| - | ====== Partie 3 - Bases du langage PHP ====== | ||
| - | Tous les fichiers doivent commencer par: | ||
| - | <file php> | ||
| - | <?php | ||
| - | Le code PHP est ici. | ||
| - | ?> | ||
| - | </file> | ||
| - | Commentaires | ||
| - | <file php> | ||
| - | <?php | ||
| - | // Commentaire sur une ligne | ||
| - | /* | ||
| - | Section de commentaires | ||
| - | */ | ||
| - | ?> | ||
| - | </file> | ||
| - | |||
| - | <file php> | ||
| - | <?php | ||
| - | // Création de variables | ||
| - | $myvar=5; | ||
| - | $myvar='ceci est du texte'; | ||
| - | |||
| - | // Création d'un array | ||
| - | $myarray=array('valeur1','valeur2','valeur3'); | ||
| - | |||
| - | echo $myarray[0]; | ||
| - | //valeur1 | ||
| - | |||
| - | $myarray=[]; | ||
| - | $myarray[0]='valeur1'; | ||
| - | $myarray[1]='valeur2'; | ||
| - | |||
| - | // Création d'un array "key-value" | ||
| - | $myarray=array( | ||
| - | 'cle1'=>'valeur1', | ||
| - | 'cle2'=>'valeur2', | ||
| - | 'cle3'=>'valeur3', | ||
| - | ); | ||
| - | |||
| - | echo $myarray['cle1']; | ||
| - | //valeur1 | ||
| - | ?> | ||
| - | </file> | ||
| - | |||
| - | Boucles et if/else | ||
| - | <file php> | ||
| - | <?php | ||
| - | if ($f==5){ | ||
| - | //Do something | ||
| - | }else{ | ||
| - | //Do something else | ||
| - | } | ||
| - | |||
| - | for ($i=0;$i<10;$i++){ | ||
| - | echo 'i='.$i; | ||
| - | } | ||
| - | //i=0 | ||
| - | //i=1 | ||
| - | //... | ||
| - | //i=9 | ||
| - | |||
| - | |||
| - | foreach ($myarray as $my){ | ||
| - | //Faire quelque chose avec $my | ||
| - | ?> | ||
| - | </file> | ||
| - | |||
| - | ====== Partie 4 - Insertion dans PostgreSQL via PHP ====== | ||
| - | |||
| - | [[http://php.net/manual/en/book.pgsql.php|Fonctions PostgreSQL dans PHP]] | ||
| - | |||
| - | Ce fichier PHP est celui qui est spécifié dans le champ "ACTION" du formulaire html. | ||
| - | <file php> | ||
| - | <?php | ||
| - | // Connexion et sélection de la base de données | ||
| - | $dbconn = pg_connect("host=localhost dbname=base_donnees user=nom_usager password=mot_de_passe"); | ||
| - | |||
| - | // L'array $_POST contient toutes les données du formulaire. Chaque 'clé' de cet array correspond au nom donné à chacun des type d'entrées html. | ||
| - | $element1=$_POST['nom_element1']; | ||
| - | $element2=$_POST['nom_element2']; | ||
| - | $element1=pg_escape_string($element1); | ||
| - | $element2=pg_escape_string($element2); | ||
| - | |||
| - | // Insertion dans la base de données | ||
| - | $query = "INSERT INTO ma_table (colonne1,colonne2) VALUES ($element1,$element2)"; | ||
| - | $result = pg_query($query); | ||
| - | // Fermer la connexion | ||
| - | pg_close($dbconn); | ||
| - | echo "Formulaire entré dans la base de données avec succès!"; | ||
| - | ?> | ||
| - | </file> | ||
| - | |||
| - | Accéder à différents types d'éléments | ||
| - | <file php> | ||
| - | //Check boxes | ||
| - | foreach ($_POST['checkbox'] as $check){ | ||
| - | //Faire quelque chose ici avec $check | ||
| - | } | ||
| - | //Convertir les valeurs en liste séparée par des virgules | ||
| - | $check=implode(',',$_POST['checkbox']); | ||
| - | |||
| - | </file> | ||
| - | |||
| - | |||
| - | Retrouver des éléments dans la base de données | ||
| - | <file php> | ||
| - | // Connexion et sélection de la base de données | ||
| - | $dbconn = pg_connect("host=localhost dbname=base_donnees user=nom_usager password=mot_de_passe"); | ||
| - | |||
| - | $query="SELECT * FROM nom_table"; | ||
| - | // Insertion dans la base de données | ||
| - | $result = pg_query($query); | ||
| - | while ($t=pg_fetch_array($result)){ | ||
| - | echo $t['prenom'].' '.$t['nom_famille']; | ||
| - | } | ||
| - | |||
| - | // Fermer la connexion | ||
| - | pg_close($dbconn); | ||
| - | </file> | ||
| ====== Lier R avec PostgreSQL ====== | ====== Lier R avec PostgreSQL ====== | ||
| Dans R: | Dans R: | ||
| lors de la première utilisation seulement : | lors de la première utilisation seulement : | ||
| - | <file rsplus | installer le paquet RMySQL> | + | <file rsplus | installer le paquet RPostgreSQL> |
| install.packages('RPostgreSQL') | install.packages('RPostgreSQL') | ||
| </file> | </file> | ||
| Line 809: | Line 632: | ||
| </file> | </file> | ||
| - | ===== Using the dplyr package===== | + | ===== Utilisation de dbplyr + dplyr ===== |
| <file rsplus> | <file rsplus> | ||
