Différences entre les versions de « SPARQL Protocol and RDF Query Language/Travail pratique/PHP avec MySQL »

aucun résumé de modification
m (Robot : Remplacement de texte automatisé (-numero +numéro))
Dans ce TP, nous allons enregistrer nos CV dans la base de données MySQL que nous avons créé dans le [[SPARQL Protocol and RDF Query Language/Travail pratique/Initiation à MySQL|TP Initiation à MySQL]]
 
Ce TP a pour objectif de comprendre comment une base données est utilisée par un langage comme PHP pour pouvoir appliquer ensuite cette méthode avec SPARQL.
 
=== Durée du TP ===
Il vous faut avoir fait tous les TPs précédent.
 
== A savoir pouravant de commencer ==
Pour rappel:
* le code HTML ne sert qu'à l'affichage.
* 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 transmettez des données d'une page web à l'autre, via un formulaire HTML !
en dehors de celles que vous transmettez à chaque fois d'une page web à l'autre, via un formulaire HTML !...
 
Si vous voulez conserver sur la durée les données entrées par les visiteurs de votre site via votre formulaire, de façonmanière automatique et sans plus vous occuper de rien, ilvous vadevrez falloirl'alimentation intégrer des notionsde desvos bases de données.
 
== TP Base de données ==
?>
</source>
* la variable $base contient l'objet de connexion à votre base de données (ou BDD) avec :
** le nom du serveur (ici localhost ou 127.0.0.1 c'est la même choseéquivalents),
** le nom de l'utilisateur (ici root qui signifie administrateur de votre base de donnéesBDD)
** Et enfin le mot de passe : remplacer le texte VOTRE_MOT_DE_PASSE par votre mot de passe.
* La ligne suivante lance la commande de sélection à votre BDD avec le nom de votre BDD et l'objet de connexion...
 
==== Ouvrir la connexion ====
Pour convoquerappeler la fonction, il vous faudra :
# surdans le fichier form.php faireécrire un include du fichier fonctions.php,
# lancerplacer la fonction auà momentl'endroit opportun par la ligne suivante :
<source lang="php">
<?php
 
==== Fermer la connexion ====
Quand on rédige une commande SQL via PHP, on procède ainsi :
# Onon se connecte à la base (en utilisant notre fonction de connexion).,
# Onon prépare la commande SQL en la stockant dans la variable $sql,
# Onon l'exécute.,
# Onon ferme la connexion avec la fonction PHP suivante.
<source lang="php">
<?php
/*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 intègreraaffichera les causes d'erreur sql)*/
mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
// on ferme la connexion
<?php
//On prépare la commande sql d'insertion
$sql = 'INSERT INTO Utilisateurs VALUES(""NULL,"'.$pseudo.'","'.$sexe.'","'.$age.'","'.$today.'")';
?>
</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, il vous renverra un message d'erreur sqlSQL disant que le nombre de données insérées ne coïncident pas avec le nombre de champs...
* lesLes autres définitions de valeurs de type texte sont contruit à l'aide de variable PHP d'où l'utilisation de simple quote (comme pour le HTML).
** la requête SQL est définie à l'aide de simple quote car dans du PHP (comme pour le HTML).
** les valeurs dans SQL sont définies entre des double quotes.
 
 
'''Exercice :''' SANS COPIER COLLER, vous allez :
* Reprendre votre projet Eclipse pour que le CV soit enregistré dan votre nouvelle BDD.
* Pour récupérer l ’IDl’ID généré après un insert SQL utiliser la fonction : mysql_insert_id()
* N’oubliez pas tester, tester...après chaque ajout dans le code.
* Si vous ne trouvez pas l’erreur, utilisez les commentaires et le débuggueur
{{solution|contenu=
</source>
 
Et voici les modificationmodifications du fichier monCV.php pour l'enregistrement des CVs :
<source lang="php">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 
=== 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: pour récupérer tous les CVs concernant Toto par exemple.
* pour récupérer tous les CVs concernant Toto par exemple.
<source lang="sql">
SELECT * FROM CVs WHERE nom= "Toto"
</source>
 
Pour chaque CV, PHP va nous envoyer plusieurs infosplusieurs informations (l'ID, le prénom, l’adresse...). Chaque enregistrement récupéré de la BDD sera utilisable sous la forme d'un tableau associatif.
 
On va utiliser la fonction suivante pour récupérer ce tableau :
# 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 : On scanneparcourt $req avec une boucle while (car on ne sait pas toujours le nombre de champs, ni d'enregistrements envoyer par notre base de données)
#* A chaque itération la fonction mysql_fetch_array($req) instancie la variable $data
#* chaque champ de l'enregistrement est accessible via la commande : $data['champ']
 
=== Rechercher des données ===
Nous avons un formulaire qui enregistre des CVs et une page page qui peut les afficher. Il nous faut maintenant une page pour retrouver des CVs. Cette page se nomme un formulaire de recherche et ce formulaire peut contenir un ou plusieurs critérescritères de recherche. Un critère peut être la mobilité d'un candidat, son niveau en langue ou encore son expérience.
 
Pour notre TP, nous allons laisser à l'utilisateur le choix de son critère de recherche : un utilisateur entrera dans un formulaire son critère. C'est une option peu ergonomique car cela peut troubler les utilisateurs non informaticiens. Cependant, cela sera un bon exemple pour l'utilisation de SQL.
</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 : car l’utilisateur n'est pas censé connaître le contenu de la BDD
 
<source lang="php">
<!-- Commentaires HTML
On construit une liste déroulante ( un select et plusieurs options)
Chaque option sera remplie par une donnée SQL récupérée par notre requête PHPSQL
-->
<form method="post" action="admin.php">
#* [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 :
700

modifications