«13_PHP MySQL Synthèse»

Documents pareils
CREATION WEB DYNAMIQUE

Stockage du fichier dans une table mysql:

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

PHP 4 PARTIE : BASE DE DONNEES

PHP 5. La base de données MySql. A. Belaïd 1

Les BASES de DONNEES dans WampServer

Pratique et administration des systèmes

Olivier Mondet

Mysql avec EasyPhp. 1 er mars 2006

SUPPORT DE COURS / PHP PARTIE 3

PHP et les Bases de données - Généralités

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

1 Position du problème

Installation d'un serveur FTP géré par une base de données MySQL

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Création et Gestion des tables

Guide Enseignant de l application OpenERP

Gestion de base de données

Modélisation et Gestion des bases de données avec mysql workbench

I. MySQL : Serveur et SGBD

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Le protocole FTP (File Transfert Protocol,

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Attaques applicatives

RÉALISATION D UN SITE DE RENCONTRE

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

DOM - Document Object Model

SQL Historique

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Bases de données relationnelles

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Introduction à JDBC. Accès aux bases de données en Java

Créer une connexion entre Sage CRM et Sage Etendue pour émettre directement des devis et commandes

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

1. Base de données SQLite

Bases de Données relationnelles et leurs systèmes de Gestion

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin

Encryptions, compression et partitionnement des données

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

OpenPaaS Le réseau social d'entreprise

Application web de gestion de comptes en banques

Utilisation du BDE pour la maintenance des fichiers DBF de l'application TopoCad:

Installation / Sauvegarde Restauration / Mise à jour

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Atelier n 12 : Assistance à distance

Thomas LETELLIER. BTS Informatique de Gestion Option Développeur d Application

Sommaire. I.1 : Alimentation à partir d un fichier Access (.mdb)...2

Comment mettre en ligne un site WordPress local

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Mode operatoire Reseau pedagogique

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

SECURIDAY 2013 Cyber War

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

Mysql. Les requêtes préparées Prepared statements

Rapport d audit de sécurité

Historisation des données

Gestion de stock pour un magasin

UwAmp. Serveur d'evaluation

Les bases de données

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

ISPConfig Documentation

Note : Ce tutoriel a été réalisé sur GNU/Linux (Ubuntu) avec un serveur LAMP installé en local.

Manuel de l administrateur

WordPress :: Migrer son site du local vers le serveur en ligne

L installation a quelque peu changée depuis les derniers tutos, voici une actualisation.

Le langage SQL (première partie) c Olivier Caron

I4 : Bases de Données

Utiliser Access ou Excel pour gérer vos données

Rapport de stage Nicolas PLAZE Licence Pro A2I. Rapport de Stage LICENCE PRO A2I. Société INFHOTIK. Nicolas PLAZE

Support de cours. Introduction à SQL et MySQL. 2003, Sébastien Namèche

SYSTÈMES D INFORMATIONS

INSTALLATION ET CONFIGURATION D'UN SERVEUR WEB SUR MAC OS X

Notes de cours : bases de données distribuées et repliquées

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

TP3 : Creation de tables 1 seance

Configurer la supervision pour une base MS SQL Server Viadéis Services

Cours: Administration d'une Base de Données

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

Cours Bases de données 2ème année IUT

Documentation FOG. 3. Choisir le nom de la machine, le nom d utilisateur et le mot de passe correspondant (par exemple : fog, password)

Notice d installation et d utilisation du blog nomade avec un nouveau blog

2 Formation utilisateur

Raja Bases de données distribuées A Lire - Tutoriel

STID 2ème année : TP Web/PHP

Thème : Création, Hébergement et référencement d un site Web

POVERELLO KASONGO Lucien SIO 2, SISR SITUATION PROFESSIONNELLE OCS INVENTORY NG ET GLPI

SQL Server et Active Directory

1. Installation du Module

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Sécurité des applications web. Daniel Boteanu

Transcription:

«13_PHP MySQL Synthèse» Dans cet exercice nous allons voir comment alimenter une ou plusieurs tables avec les données qui proviennent d'un même formulaire. Alimenter une table Pour commencer vous allez créer la table infos_tbl dans phpmyadmin comme suit : requête SQL: (fichier creation infos_tbl.txt) CREATE TABLE infos_tbl (id INT (11) not null AUTO_INCREMENT, nom VARCHAR (35) not null, prenom VARCHAR (35) not null, email VARCHAR (70) not null, civ VARCHAR (12) null, titre VARCHAR (70) not null, url VARCHAR (255) not null, PRIMARY KEY (id), INDEX (id), UNIQUE (id)) Ensuite nous allons utiliser le formulaire ci dessous qui va alimenter la table : (fichier form1.html) Code HTML <html> <form method="post" action="add.php"> <center> <input type="text" name="nom" size="20" value="nom" maxlength="35"> <input type="text" name="prenom" size="20" value="prenom" maxlength="35"><br> <input type="text" name="email" size="20" value="email" maxlength="70"> <input type="text" name="civ" size="20" value="civilite" maxlength="11"><br> <input type="text" name="titre" size="20" value="titre du site" maxlength="70"> <input type="text" name="url" size="20" value="url du site" maxlength="255"><br> <input type="submit" value="envoyer" name="envoyer"> </center> </form> </html> Donne à l'écran nom prenom email civilite titre du site url du site Envoyer Vous noterez les "maxlength" dans chacun des champs, ceci permet de brider le nombre de caractères maximum que le visiteur peut entrer dans le champ, bien sûr ici le "maxlength" correspond au nombre de caractères spécifié dans la création de la table infos_tbl. Cela a un intérêt, celui d'être sûr que le visiteur ne tapera pas plus de caractères que prévu. TIC UIAD Création de site internet 2 ème année Daniel Gaudin Jean Claude Chêne page 1/5

Voyons maintenant le script PHP en lui-même, celui-ci sera contenu dans le fichier add.php auquel fait référence le POST du formulaire : (fichier add1.php) Code PHP de "add.php" // On commence par récupérer les champs if(isset($_post['nom'])) $nom=$_post['nom']; else $nom=""; if(isset($_post['prenom'])) else $prenom=""; if(isset($_post['email'])) else $email=""; if(isset($_post['civ'])) else $civ=""; if(isset($_post['titre'])) else $titre=""; if(isset($_post['url'])) else $url=""; $prenom=$_post['prenom']; $email=$_post['email']; $icq=$_post['civ']; $titre=$_post['titre']; $url=$_post['url']; // On vérifie si les champs sont vides if(empty($nom) OR empty($prenom) OR empty($email) OR empty($titre) OR empty($url)) echo '<font color="red">attention, seul le champs <b>civ</b> peut rester vide!</font>'; // Aucun champ n'est vide, on peut enregistrer dans la table else // connexion à la base $db = mysql_connect('localhost', 'login', 'password') or die('erreur de connexion '.mysql_error()); mysql_select_db('nom_de_la_base',$db) or die('erreur de selection '.mysql_error()); // on écrit la requête sql $sql = "INSERT INTO infos_tbl(id, nom, prenom,email, civ, titre, url) VALUES('','$nom','$prenom','$email','$civ','$titre','$url')"; // on insère les informations du formulaire dans la table // on affiche le résultat pour le visiteur echo 'Vos infos on été ajoutées.'; mysql_close(); // on ferme la connexion TIC UIAD Création de site internet 2 ème année Daniel Gaudin Jean Claude Chêne page 2/5

Explication : La requête INSERT INTO permet donc l'insertion des champs du formulaire dans la table. Dans notre cas le premier champ reste vide car il s'agit de l'id (identifiant) qui s'incrémente automatiquement à chaque nouvelle requête INSERT. Notez que dans le cas ou vous ne voudriez insérer que les champs Nom et Prénom dans la table vous pouvez très bien spécifier dans la requête le nom de chaque champ, comme suit : $sql = "INSERT INTO infos_tbl(nom,prenom) VALUES('$nom','$prenom')"; Mais attention dans ce cas les autres champs de la table devront avoir l'attribut NULL et non pas NOT NULL, Null indique au champ qu'il pourra rester vide. Et si vous essayez d'insérer un nombre de valeurs différent du nombre des champs, MySQL vous fera un joli message d'erreur! Bien sûr, l'idéal et de tester si l'url existe dans la table pour éviter les doublons, si celle-ci existe déjà on indique au visiteur qu'il ne peut pas valider son formulaire. J'ai pris l'exemple ici de l'url mais il va sans dire que vous pouvez vérifier les champs de votre choix, cela dépend des doublons que vous ne souhaitez pas avoir dans votre table. Voici le code : (fichier form2.html & add2.php) Code PHP de "add.php" avec la vérification de doublon sur l'url // On récupère les champs (voir plus haut) // On vérifie si les champs sont vides if(empty($nom) OR empty($prenom) OR empty($email) OR empty($titre) OR empty($url)) echo '<font color="red">attention, seul le champs <b>civ</b> peut rester vide!</font>'; // Aucun champ n'est vide, on peut enregistrer dans la table else $db = mysql_connect('localhost', 'login', 'password'); // connexion à la base mysql_select_db('nom_de_la_base',$db); // on regarde si l'url existe déjà $sql = "SELECT id FROM infos_tbl WHERE url='$url'"; $req = // on compte le nombre de résultats $res = mysql_num_rows($req); if($res!=0) // l'url existe déjà, on affiche un message d'erreur echo '<font color="red">désolé, mais cette URL existe déjà dans notre base.</font>'; else // L'url n'existe pas, on insère les informations du formulaire dans la table $sql = "INSERT INTO infos_tbl(id, nom, prenom,email, civ, titre, url) VALUES('','$nom','$prenom','$email','$civ','$titre','$url')"; // on affiche le résultat pour le visiteur TIC UIAD Création de site internet 2 ème année Daniel Gaudin Jean Claude Chêne page 3/5

echo 'Vos infos on été ajoutées.'; mysql_close(); // on ferme la connexion Alimenter deux tables et créer une liaison Voyons maintenant comment ces mêmes informations peuvent être enregistrées dans deux tables différentes en gardant une liaison entre les deux. Le principe est en fait tout bête, admettons que nous ayons une première table qui va nous servir à stocker les coordonnées du visiteur ($nom, $prenom, $email, $civ) et une seconde dans laquelle ne seront sauvegardées que les informations du site ($titre et $url). Voyez ce petit schéma qui va vous éclairer sur la manière de créer une liaison entre 2 tables : civ Monsieur Examinons la méthode à employer : 1. On commence par insérer $titre et $url dans la table 2 (sites_tbl). 2. Une fois l'insertion effectuée, on utilise la fonction PHP mysql_insert_id() pour connaître l'id_site qui a été affecté à notre nouvel enregistrement. 3. On insère le reste du formulaire dans la table 1 (infos_tbl), soit : $nom, $prenom, $email, $civ et $id_site. Nous avons maintenant un liaison entre la table 1 et 2 via l'id_site. Ci-dessous le code PHP de cette manipulation : (fichiers form3.php & add3.php) Code PHP avec création de la liaison entre les 2 tables // On récupère les champs (voir plus haut) $db = mysql_connect('localhost', 'login', 'password'); // connexion à la base mysql_select_db('nom_de_la_base',$db); TIC UIAD Création de site internet 2 ème année Daniel Gaudin Jean Claude Chêne page 4/5

// on regarde dans la table SITES_TBL si l'url existe déjà $sql = "SELECT id FROM sites_tbl WHERE url='$url'"; $req = $res= mysql_num_rows($req); if($res!=0) // l'url existe déjà, on affiche un message d'erreur echo '<font color="red">désolé, mais cette URL existe déjà dans notre base.</font>'; else // L'url n'existe pas, on insère d'abord les infos dans SITES_TBL $sql = "INSERT INTO sites_tbl(id_site, titre, url) VALUES('','$titre','$url')"; // on récupère l'id_site qui vient d'être généré $id_site = mysql_insert_id(); // ci-dessous on insère les infos dans INFOS_TBL $sql = "INSERT INTO infos_tbl(id, nom, prenom,email, civ, id_site) VALUES('','$nom','$prenom','$email','$civ','$id_site')"; mysql_close($db); // on ferme la connexion Important : L'id_site de la table 2 (sites_tbl) doit être en auto_incrément automatique au même titre que l'id de la table 1 (infos_tbl). Je ne vous donne "volontairement" pas la requête SQL pour créer les deux tables, et ce pour vous faire travailler un peu tout de même ;) Conclusion : Vous pouvez créer autant de liaisons que vous le voulez entre vos tables, cela a pour but de les alléger ce qui permet une plus grande rapidité lorsque vous souhaitez les interroger. TIC UIAD Création de site internet 2 ème année Daniel Gaudin Jean Claude Chêne page 5/5