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

Contenu supprimé Contenu ajouté
Ligne 305 :
 
===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.
Vous souhaitez laisser à l'utilisateur le choix de son critère de recherche :
 
*Un utilisateur entre dans un formulaire les critères choisis, et votre code fait le reste.
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.
 
Cela signifie que l'on veut obtenir une variable $sql du type :
Ligne 312 ⟶ 313 :
$sql = 'SELECT * FROM utilisateurs WHERE '.$champ.' ="'.$critere.'"';
</source>
*Il faut pouvoir proposer un formulaire où l'utilisateur entrera son choix de champ et dela critèrevaleur attendue...
*Il faut donc construire la liste de champs sous forme de liste déroulante en "tapant"lisant dansle contenu de la baseBDD une première fois : car l’utilisateur n'est pas censé connaître 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 PHP
-->
<form method="post" action="admin.php">
<select name="champ">
<?php
connectMaBase(); //On se connecte
$sql = 'Show fields from utilisateurs'; //On prépare la requête SQL qui récupère les champs
/* On lance la requête (mysql_query) et on impose un message d'erreur si la requête ne passe pas (or die) */
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
//On scanne le résultat et on construit chaque option avec
while($data = mysql_fetch_array($req)){
echo '<option name="'.$data['Field'].'">'.$data['Field'].'</option>'; // on affiche chaque champ
}
mysql_free_result ($req); //On libère mysql de cette première requête
?>
<!-- On ferme le select -->
</select>
Entrez votre critère de sélection sur ce champ : <input type="text" name="critere"/>
<input type="submit" name="Valider" value="OK"/>
</form>
<!-- On ferme le formulaire -->
</source>
 
'''Exercice''' : Vous allez maintenant faire une page pour rechercher un CV. Dans une page PHP index.php, vous allez faire le formulaire :
*Faire le formulaire :
<source lang="text">
Rechercher dans [liste champs]|V| [________] [Chercher]
[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
</source>
#Faire le formulaire ci-dessus dont voici la description :
*Vous afficherez les résultats en dessous du formulaire sous forme de lien pour afficher le CV correspondant
#*[liste champs]|V| est un champ Select qui contient la liste des champs de la table Expériences.
**Pour faire une recherche dans un texte vous devrez utiliser non pas une égalité en SQL mais la fonction LIKE comme ci-dessous :
#*[________] 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 355 ⟶ 357 :
 
{{solution|contenu=
Voici leun exemple du fichier index.php que vous devez avoir développé :
<source lang="php">
<html>