« SPARQL Protocol and RDF Query Language/Travail pratique/PHP avec MySQL » : différence entre les versions

Contenu supprimé Contenu ajouté
mAucun résumé des modifications
m Robot : Changement de type cosmétique
Ligne 26 :
== A savoir pour 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
Ligne 34 :
Si vous voulez conserver sur la durée les données entrées par les visiteurs de votre site via votre formulaire, de façon automatique et sans plus vous occuper de rien, il va falloir intégrer des notions des bases de données.
 
== TP Base de données ==
 
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.
Ligne 40 :
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">
Ligne 53 :
?>
</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),
** le nom de l'utilisateur (ici root qui signifie administrateur de votre base de données)
** 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 convoquer la fonction, il vous faudra
# sur form.php faire un include du fichier fonctions.php,
# lancer la fonction au moment opportun par la ligne suivante :
<source lang="php">
<?php
Ligne 68 :
</source>
 
==== 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 :
</source>
 
=== Insérer des données ===
Dans le fichier php pour faire une insertion, on écrira par exemple :
<source lang="php">
Ligne 112 :
</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 sql disant que le nombre de données insérées ne coïncident pas avec le nombre de champs...
* les autres définitions de valeurs
** la requête SQL est définie à l'aide de simple quote car dans du PHP (comme pour le HTML).
Ligne 119 :
 
'''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 ’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=
Avec la nouvelle fonction connectMaBase, voici le fichier fonctions.php :
Ligne 164 :
}
echo ' : ';
echo '<b>'.$arrayExperience['poste'].' ('.$arrayExperience['societe'].')</b><br />';
echo '<b>'.nl2br($arrayExperience['description']).'</b><br />';
echo 'Mots clés : <b>'. implode(', ',explode(' ',$arrayExperience['mots_cles'])) .'</b><br /><br />';
}
 
Ligne 231 :
//affichage
?>
<b><?php echo $nom.' '.$prenom; ?></b><br />
<b><?php echo $adresse; ?></b><br />
<b><?php echo $code_postal.' '.$ville; ?></b><br />
Tel : <b><?php echo $telephone; ?></b><br />
<br />
Expériences : <br />
<hr/>
<?php
Ligne 247 :
}}
 
=== 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.
Ligne 265 :
 
Voici la méthode pour afficher des données depuis une base de données :
# 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 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 scanne $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']
# 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.
# On ferme la connexion SQL.
 
 
Ligne 293 :
echo 'Pseudo : <strong>‘. $data['Pseudo'] .'</strong><br />';
echo 'Son âge : '.$data['Age'].'<br />';
echo 'Sa date d\'inscription : '.$data['DateInscription'].'<br /><br />';
}
//On libère la mémoire mobilisée pour cette requête dans sql $data de PHP lui est toujours accessible !
Ligne 304 :
</source>
 
=== 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éres de recherche. Un critère peut être la mobilité d'un candidat, son niveau en langue ou encore son expérience.
 
Ligne 313 :
$sql = 'SELECT * FROM utilisateurs WHERE '.$champ.' ="'.$critere.'"';
</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 la BDD
 
<source lang="php">
Ligne 346 :
Rechercher dans [liste champs]|V| [________] [Chercher]
</source>
# Faire le formulaire ci-dessus dont voici la description :
#* [liste champs]|V| est un champ Select qui contient la liste des champs de la table Expériences.
#* [________] est un champ texte
#* [Chercher] 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 364 :
</head>
<body>
<a href="formMonCV.html">Créer un nouveau CV</a><br />
<h2>Chercher un CV :</h2>
<form method="post" action="index.php">
Ligne 388 :
<input type="text" name="critere"/>
<input type="submit" name="valider" value="Chercher"/>
<br />
</form>
 
Ligne 402 :
//On scanne le résultat et on construit la liste des candidats
echo 'Liste des candidats :<br />';
while($data = mysql_fetch_array($req)){
echo '<a href="javascript:alert(\'Faire : Afficher un CV !\')">'.$data['ID'].' '.$data['nom'].' '.$data['prenom'].'</a><br />';
}