« SPARQL Protocol and RDF Query Language/Travail pratique/PHP avec MySQL » : différence entre les versions
Contenu supprimé Contenu ajouté
Aucun résumé des modifications |
m Relecture |
||
Ligne 1 :
{{Travail pratique présentation
{{ébauche informatique}}▼
| objectif1 = établir une connexion à une base de données MySQL
| objectif2 = modifier des données
| objectif3 = afficher des données
| objectif4 = rechercher des données
| durée = 1,5 heure
| matériel1 = un serveur Web Linux avec PHP.
}}
<div style="float:right; padding: 0 0 0 1em;">__TOC__</div>
{{Travail pratique
| titre = MySQL
Ligne 9 ⟶ 16 :
| précédent = [[../PHP les fonctions/]]
| suivant = [[../PHP avec SPARQL/]]
| niveau =
}}
== Introduction ==
Dans ce TP, nous allons enregistrer nos CV dans la base de données MySQL que nous avons
Ce TP a pour objectif de comprendre comment une base de données est utilisée par un langage comme PHP, pour pouvoir appliquer ensuite cette méthode avec SPARQL.
== A savoir avant de commencer ==
Pour rappel:
*
* Le code PHP sert à créer un HTML dynamique.
Cependant, PHP n'a pas le "pouvoir" de mémoriser des données entre deux chargements de page. A moins que vous
Si vous voulez conserver sur la durée les données entrées par les visiteurs de votre site via votre formulaire, de manière automatique et sans plus vous occuper de rien, vous devrez
== TP Base de données ==
De même que PHP vous permet de créer un langage HTML plus dynamique et personnalisé, il
Pour le démontrer, nous allons créer un formulaire qui permettra de stocker les CV dans votre
▲De même que PHP vous permet de créer un langage HTML plus dynamique et personnalisé, il permettra aussi de créer vos requêtes SQL de façon à automatiser l'alimentation de vos bases.
▲Pour le démontrer, nous allons créer un formulaire qui permettra de stocker les CV dans votre BDD.
=== Connexion ===
Pour utiliser une base de données, il faut se connecter à celle-ci. Chaque base de données SQL a sa propre méthode de connexion. Ici, nous n'allons étudier que la méthode avec une base de données MySQL.
==== Configurer la connexion ====
On met les paramètres de connexion dans une fonction, dans notre fichier fonctions.php par exemple :
<source lang="php">
<?php
Ligne 52 ⟶ 50 :
?>
</source>
* la variable $base contient l'objet de connexion à votre base de données (
** le nom du serveur (ici localhost ou 127.0.0.1 c'est équivalents),
** le nom de l'utilisateur (ici root qui signifie administrateur de votre BDD)
**
* La ligne suivante lance la commande de sélection avec le nom de votre BDD et l'objet de connexion...
==== Ouvrir la connexion ====
Pour appeler la fonction, il vous faudra :
# dans le fichier form.php : écrire un include du fichier fonctions.php
# placer la fonction à l'endroit opportun
<source lang="php">
<?php
Ligne 69 ⟶ 67 :
==== Fermer la connexion ====
Quand on rédige une commande SQL via PHP, on procède ainsi:
# on se connecte à la base (en utilisant notre fonction de connexion)
# on prépare la commande SQL en la stockant dans la variable $sql
# on l'exécute
# on ferme la connexion avec la fonction PHP suivante
<source lang="php">
<?php
Ligne 81 ⟶ 79 :
=== Insérer des données ===
Dans le fichier php, pour faire une insertion, on écrira par exemple :
<source lang="php">
<?php
Ligne 88 ⟶ 86 :
$age=$_POST['age'];
$sexe=$_POST['sexe'];
//On
$today = date("d.m.y");
//On se connecte
Ligne 110 ⟶ 108 :
?>
</source>
* La première valeur est laissée vide, car c'est la place de l'ID qui doit s'auto-incrémenter.
** Si vous l'oubliez,
* Les autres définitions de valeurs de type texte sont
'''Exercice :''' SANS COPIER COLLER, vous allez :
* Reprendre votre projet Eclipse pour que le CV soit enregistré
* Pour récupérer l’ID généré après un insert SQL, utiliser la fonction : mysql_insert_id()
*N’oubliez pas de tester après chaque ajout dans le code.
* Si vous ne trouvez pas l’erreur, utilisez les commentaires et le débuggueur.
{{solution|contenu=
Avec la nouvelle fonction connectMaBase, voici le fichier fonctions.php :
Ligne 207 ⟶ 205 :
/*on lance la commande (mysql_query) et au cas où,
on rédige un petit message d'erreur si la requête ne passe pas (or die)
(Message qui
mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
//
$last_CV_ID = mysql_insert_id();
Ligne 245 ⟶ 243 :
=== Afficher des données ===
On a déjà utilisé la syntaxe SQL d'une simple requête pour récupérer des données dans un TP précédent
<source lang="sql">
SELECT * FROM CVs WHERE nom= "Toto"
Ligne 257 ⟶ 255 :
</source>
'''On récupère ainsi un tableau associatif qui a pour indice : le nom de chaque champ.'''
Ligne 264 ⟶ 262 :
# On prépare la commande SQL en la stockant dans la variable $sql.
# On exécute la requête, en récupérant le résultat dans une variable que nous appellerons $req.
# Si c'est un tableau :
#*
#* chaque champ de l'enregistrement est accessible via la commande : $data['champ']
# Maintenant qu'on a tout récupéré dans des variables PHP, on libère la mémoire de MySQL mobilisée par cette requête.
Ligne 301 ⟶ 299 :
=== Rechercher des données ===
Nous avons un formulaire qui enregistre des
Pour notre TP, nous allons laisser à l'utilisateur le choix de son critère de recherche :
Cela signifie que l'on veut obtenir une variable $sql du type :
Ligne 310 ⟶ 308 :
</source>
* Il faut pouvoir proposer un formulaire où l'utilisateur entrera son choix de champ et la valeur attendue...
* Il faut donc construire la liste de champs sous forme de liste déroulante en lisant le contenu de la BDD une première fois
<source lang="php">
Ligne 338 ⟶ 336 :
</source>
'''Exercice''' :
Vous allez maintenant <source lang="text">
Rechercher dans [liste champs]|V| [________] [Chercher]
</source>
#
#* [liste champs]|V| est un champ Select qui contient la liste des champs de la table Expériences.
#* [________] est un champ texte
#* [Chercher] est un bouton pour lancer la recherche
# Vous afficherez les résultats en dessous du formulaire sous forme de lien pour afficher le CV correspondant
#* Pour faire une recherche dans un texte, vous devrez utiliser non pas une égalité en SQL, mais la fonction LIKE comme ci-dessous :
<source lang="php">
$sql = 'SELECT * FROM Experiences WHERE '.$champ. ' LIKE "%'.$critere. '%"';
Ligne 417 ⟶ 416 :
[[Catégorie:SPARQL Protocol and RDF Query Language]]
{{Bas de page
| leçon = TP SPARQL
| précédent = [[../PHP les fonctions/]]
| suivant = [[../PHP avec SPARQL/]]
}}
|