Problème script de recherche avec fichier
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour, j'ai un script qui permet d'écrire un article et qui stocke son contenu dans un fichier, mais je n'arrive pas à voir comment je peux modifier mon ancien code pour qu'il recherche dans le fichier : (j'ai enlever la colonne 'contenu' de ma bdd)
Juste pour info, les fichiers créés sont sous cette forme : article_numDeLarticle.txt
Merci d'avance
Nils0
$articleParPage = 5;
$articleTotalesReq = $bdd->prepare('SELECT * FROM article_articles WHERE verif = 1 AND CONCAT(titre, contenu) LIKE :queryString');
$articleTotalesReq->execute(array(':queryString' => '%'.$q.'%'));
$articleTotales = $articleTotalesReq->rowCount();
$pagesTotales = ceil($articleTotales/$articleParPage);
if(isset($_GET['page']) AND !empty($_GET['page']) AND intval($_GET['page']) > 0 AND $_GET['page'] <= $pagesTotales) {
$_GET['page'] = intval($_GET['page']);
$pageCourante = $_GET['page'];
} else {
$pageCourante = 1;
}
$depart = ($pageCourante-1)*$articleParPage;
$articles = $bdd->prepare('SELECT * FROM article_articles WHERE titre AND verif = 1 LIKE CONCAT("%", :query, "%") ORDER BY id DESC LIMIT :debut, :nombre');
$articles->bindParam(':debut', $depart, PDO::PARAM_INT);
$articles->bindParam(':nombre', $articleParPage, PDO::PARAM_INT);
$articles->bindParam(':query', $q, PDO::PARAM_STR);
$articles->execute();
if($articles->rowCount() == 0) {
$articles = $bdd->prepare('SELECT * FROM article_articles WHERE verif = 1 AND CONCAT(titre, contenu) LIKE CONCAT("%", :query, "%") ORDER BY id DESC LIMIT :debut, :nombre');
$articles->bindParam(':debut', $depart, PDO::PARAM_INT);
$articles->bindParam(':nombre', $articleParPage, PDO::PARAM_INT);
$articles->bindParam(':query', $q, PDO::PARAM_STR);
$articles->execute();
}
Juste pour info, les fichiers créés sont sous cette forme : article_numDeLarticle.txt
Merci d'avance
Nils0
A voir également:
- Problème script de recherche avec fichier
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
1 réponse
Bonjour,
Pour ça .. tu peux lire le fichier ligne par ligne jusqu'à trouver l'info cherchée
https://www.php.net/manual/fr/function.fgets.php
NB : EN PDO .. on place les requêtes dans des blocs TRY/CATCH pour intercepter les éventuelles erreurs
NB² : EN PDO .. on n'utilise pas ROWCOUNT avec une requête SELECT. A la place on fera un FETCHALL puis un COUT sur la variable
NB" : On récupère PROPREMENT les variables AVANT de les utiliser !
Par exemple :
S'écrit plus proprement :
pour qu'il recherche dans le fichier
Pour ça .. tu peux lire le fichier ligne par ligne jusqu'à trouver l'info cherchée
https://www.php.net/manual/fr/function.fgets.php
NB : EN PDO .. on place les requêtes dans des blocs TRY/CATCH pour intercepter les éventuelles erreurs
NB² : EN PDO .. on n'utilise pas ROWCOUNT avec une requête SELECT. A la place on fera un FETCHALL puis un COUT sur la variable
NB" : On récupère PROPREMENT les variables AVANT de les utiliser !
Par exemple :
if(isset($_GET['page']) AND !empty($_GET['page']) AND intval($_GET['page']) > 0 AND $_GET['page'] <= $pagesTotales) {
$_GET['page'] = intval($_GET['page']);
$pageCourante = $_GET['page'];
} else {
$pageCourante = 1;
}
S'écrit plus proprement :
$pageCourante = !empty($_GET['page']) && intval($_GET['page'])>0 && intval($_GET['page'])<= $pagesTotales ? intval($_GET['page']) : 1;
<?php $mot = 'usb'; foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator('groups/contenu/')) as $file){ if(is_file($file)){ $handle = fopen($file, 'r'); if($handle) { while(($buffer = fgets($handle, 4096)) !== false) { if(preg_match("#$mot#", $buffer)){ echo $file.' : mot trouvé<br />'; } } fclose($handle); } } } ?>