Fonction recherche pour base procédure
Posté : lun. 31 août 2015 10:28
Bonjour à tous,
Dans l’optique d’utiliser en production la base procédure du GestSup, il nous manquait une fonction recherche donc voici un petit script simple et basic mais qui fait le job :
Créer un fichier rechercher.php (pensez a modifier renseignement de la BDD) :
<head>
<?php header('x-ua-compatible: ie=edge'); //disable ie compatibility mode ?>
<meta charset="UTF-8" />
<?php if (($rparameters['auto_refresh']!=0)&&($_GET['page']=='dashboard')&&($_GET['searchengine']==0)) echo '<meta http-equiv="Refresh" content="'.$rparameters['auto_refresh'].';">'; ?>
<title>GestSup | Gestion de Support</title>
<link rel="shortcut icon" type="image/ico" href="./images/favicon.ico" />
<meta name="description" content="gestsup" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!-- basic styles -->
<link href="./template/assets/css/bootstrap.min.css" rel="stylesheet" />
<link rel="stylesheet" href="./template/assets/css/font-awesome.min.css" />
<!-- timepicker styles -->
<link rel="stylesheet" href="template/assets/css/bootstrap-timepicker.css" />
<!--[if IE 7]>
<link rel="stylesheet" href="./template/assets/css/font-awesome-ie7.min.css" />
<![endif]-->
<!-- page specific plugin styles -->
<!-- fonts -->
<link rel="stylesheet" href="./template/assets/css/ace-fonts.css" />
<link rel="stylesheet" href="./template/assets/css/jquery-ui-1.10.3.full.min.css" />
<!-- ace styles -->
<link rel="stylesheet" href="./template/assets/css/ace.min.css" />
<link rel="stylesheet" href="./template/assets/css/ace-rtl.min.css" />
<link rel="stylesheet" href="./template/assets/css/ace-skins.min.css" />
<!--[if lte IE 8]>
<link rel="stylesheet" href="./template/assets/css/ace-ie.min.css" />
<![endif]-->
<!-- inline styles related to this page -->
<!-- ace settings handler -->
<script src="./template/assets/js/ace-extra.min.js"></script>
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="./template/assets/js/html5shiv.js"></script>
<script src="./template/assets/js/respond.min.js"></script>
<![endif]-->
<style type="text/css">
body {
background-color: white }
</style>
</head>
<body>
<?
if(isset($_POST['requete']) && $_POST['requete'] != NULL) // on vérifie d'abord l'existence du POST et aussi si la requete n'est pas vide.
{
mysql_connect('localhost','root','votremotdepasseBDD');
mysql_select_db('bsup'); // on se connecte à MySQL. Je vous laisse remplacer les différentes informations pour adapter ce code à votre site.
$requete = htmlspecialchars($_POST['requete']); // on crée une variable $requete pour faciliter l'écriture de la requête SQL, mais aussi pour empêcher les éventuels malins qui utiliseraient du PHP ou du JS, avec la fonction htmlspecialchars().
$query = mysql_query("SELECT * FROM tprocedures WHERE `name` LIKE '%$requete%' ORDER BY id DESC") or die (mysql_error()); // la requête
$nb_resultats = mysql_num_rows($query); // on utilise la fonction mysql_num_rows pour compter les résultats pour vérifier par après
if($nb_resultats != 0) // si le nombre de résultats est supérieur à 0, on continue
{
// maintenant, on va afficher les résultats et la page qui les donne ainsi que leur nombre, avec un peu de code HTML pour faciliter la tâche.
?>
<h3>Résultats de la recherche.</h3>
<p>Nous avons trouvé <? echo $nb_resultats; // on affiche le nombre de résultats
if($nb_resultats > 1) { echo ' résultats'; } else { echo ' résultat'; } // on vérifie le nombre de résultats pour orthographier correctement.
?>
dans notre base de données Procédure:<br/>
<br/>
<?
while($donnees = mysql_fetch_array($query)) // on fait un while pour afficher la liste des fonctions trouvées, ainsi que l'id qui permettra de faire le lien vers la page de la fonction
{
?>
<a href="index.php?page=procedure&id=<? echo $donnees['id']; ?>&action=edit" target="_blank"><? echo $donnees['name']; ?></a><br/>
<?
} // fin de la boucle
?><br/>
<br/>
<a href="rechercher.php">Faire une nouvelle recherche</a></p>
<?
} // Fini d'afficher les résultats ! Maintenant, nous allons afficher l'éventuelle erreur en cas d'échec de recherche et le formulaire.
else
{ // de nouveau, un peu de HTML
?>
<h3>Pas de résultats</h3>
<p>Nous n'avons trouvé aucun rêsultat pour votre requête "<? echo $_POST['requete']; ?>". <a href="rechercher.php">Rêessayez</a> avec autre chose.</p>
<?
}// Fini d'afficher l'erreur ^^
mysql_close(); // on ferme mysql, on n'en a plus besoin
}
else
{ // et voilà le formulaire, en HTML de nouveau !
?>
<br />
<p>Tapez une requête pour réaliser une recherche dans le titre d'une procédure:</p>
<form action="rechercher.php" method="Post">
<input type="text" name="requete" size="10">
<input type="submit" value="Ok">
</form>
<?
}
// et voilà, c'est fini !
?>
</body>
Vous pouvez l’insérer en iframe dans la page procédure.php sa rend pas trop mal !
L’idée ici est de ne rien modifier au code sur de Gestsup, mais juste de rajouter un petit bout, comme sa le jour ou l’admin rajoute cette fonction nativement il suffira de supprimé ce qui a été ajouté.
Dans l’optique d’utiliser en production la base procédure du GestSup, il nous manquait une fonction recherche donc voici un petit script simple et basic mais qui fait le job :
Créer un fichier rechercher.php (pensez a modifier renseignement de la BDD) :
<head>
<?php header('x-ua-compatible: ie=edge'); //disable ie compatibility mode ?>
<meta charset="UTF-8" />
<?php if (($rparameters['auto_refresh']!=0)&&($_GET['page']=='dashboard')&&($_GET['searchengine']==0)) echo '<meta http-equiv="Refresh" content="'.$rparameters['auto_refresh'].';">'; ?>
<title>GestSup | Gestion de Support</title>
<link rel="shortcut icon" type="image/ico" href="./images/favicon.ico" />
<meta name="description" content="gestsup" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!-- basic styles -->
<link href="./template/assets/css/bootstrap.min.css" rel="stylesheet" />
<link rel="stylesheet" href="./template/assets/css/font-awesome.min.css" />
<!-- timepicker styles -->
<link rel="stylesheet" href="template/assets/css/bootstrap-timepicker.css" />
<!--[if IE 7]>
<link rel="stylesheet" href="./template/assets/css/font-awesome-ie7.min.css" />
<![endif]-->
<!-- page specific plugin styles -->
<!-- fonts -->
<link rel="stylesheet" href="./template/assets/css/ace-fonts.css" />
<link rel="stylesheet" href="./template/assets/css/jquery-ui-1.10.3.full.min.css" />
<!-- ace styles -->
<link rel="stylesheet" href="./template/assets/css/ace.min.css" />
<link rel="stylesheet" href="./template/assets/css/ace-rtl.min.css" />
<link rel="stylesheet" href="./template/assets/css/ace-skins.min.css" />
<!--[if lte IE 8]>
<link rel="stylesheet" href="./template/assets/css/ace-ie.min.css" />
<![endif]-->
<!-- inline styles related to this page -->
<!-- ace settings handler -->
<script src="./template/assets/js/ace-extra.min.js"></script>
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="./template/assets/js/html5shiv.js"></script>
<script src="./template/assets/js/respond.min.js"></script>
<![endif]-->
<style type="text/css">
body {
background-color: white }
</style>
</head>
<body>
<?
if(isset($_POST['requete']) && $_POST['requete'] != NULL) // on vérifie d'abord l'existence du POST et aussi si la requete n'est pas vide.
{
mysql_connect('localhost','root','votremotdepasseBDD');
mysql_select_db('bsup'); // on se connecte à MySQL. Je vous laisse remplacer les différentes informations pour adapter ce code à votre site.
$requete = htmlspecialchars($_POST['requete']); // on crée une variable $requete pour faciliter l'écriture de la requête SQL, mais aussi pour empêcher les éventuels malins qui utiliseraient du PHP ou du JS, avec la fonction htmlspecialchars().
$query = mysql_query("SELECT * FROM tprocedures WHERE `name` LIKE '%$requete%' ORDER BY id DESC") or die (mysql_error()); // la requête
$nb_resultats = mysql_num_rows($query); // on utilise la fonction mysql_num_rows pour compter les résultats pour vérifier par après
if($nb_resultats != 0) // si le nombre de résultats est supérieur à 0, on continue
{
// maintenant, on va afficher les résultats et la page qui les donne ainsi que leur nombre, avec un peu de code HTML pour faciliter la tâche.
?>
<h3>Résultats de la recherche.</h3>
<p>Nous avons trouvé <? echo $nb_resultats; // on affiche le nombre de résultats
if($nb_resultats > 1) { echo ' résultats'; } else { echo ' résultat'; } // on vérifie le nombre de résultats pour orthographier correctement.
?>
dans notre base de données Procédure:<br/>
<br/>
<?
while($donnees = mysql_fetch_array($query)) // on fait un while pour afficher la liste des fonctions trouvées, ainsi que l'id qui permettra de faire le lien vers la page de la fonction
{
?>
<a href="index.php?page=procedure&id=<? echo $donnees['id']; ?>&action=edit" target="_blank"><? echo $donnees['name']; ?></a><br/>
<?
} // fin de la boucle
?><br/>
<br/>
<a href="rechercher.php">Faire une nouvelle recherche</a></p>
<?
} // Fini d'afficher les résultats ! Maintenant, nous allons afficher l'éventuelle erreur en cas d'échec de recherche et le formulaire.
else
{ // de nouveau, un peu de HTML
?>
<h3>Pas de résultats</h3>
<p>Nous n'avons trouvé aucun rêsultat pour votre requête "<? echo $_POST['requete']; ?>". <a href="rechercher.php">Rêessayez</a> avec autre chose.</p>
<?
}// Fini d'afficher l'erreur ^^
mysql_close(); // on ferme mysql, on n'en a plus besoin
}
else
{ // et voilà le formulaire, en HTML de nouveau !
?>
<br />
<p>Tapez une requête pour réaliser une recherche dans le titre d'une procédure:</p>
<form action="rechercher.php" method="Post">
<input type="text" name="requete" size="10">
<input type="submit" value="Ok">
</form>
<?
}
// et voilà, c'est fini !
?>
</body>
Vous pouvez l’insérer en iframe dans la page procédure.php sa rend pas trop mal !
L’idée ici est de ne rien modifier au code sur de Gestsup, mais juste de rajouter un petit bout, comme sa le jour ou l’admin rajoute cette fonction nativement il suffira de supprimé ce qui a été ajouté.