begin process at 2012 05 27 18:15:09
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > RECHERCHE PAR MOT CLÉ DANS TOUS LES CHAMPS DE TOUTES LES TABLES D'UNE BASE DE DONNÉE

RECHERCHE PAR MOT CLÉ DANS TOUS LES CHAMPS DE TOUTES LES TABLES D'UNE BASE DE DONNÉE


 Information sur la source

Note :
4,5 / 10 - par 2 personnes
4,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de données Classé sous :recherche, mot clé, mysql, php Niveau :Débutant Date de création :19/03/2011 Vu :4 605

Auteur : gabay

Ecrire un message privé
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Bonjour, voilà j'ai cherché un script qui fait une recherche par mot clé sur tous les champs de toute les table d'une base de donnée et j'en ai pas trouvé, alors j'ai créer cette source, à vous de juger et si quelqu'un connais un autre moyen plus simple ca sera aimable de sa part de m'en faire part.

Merci
WJH

Source

  • <?php
  • $host = 'localhost';
  • $user = 'root';
  • $pass = 'root';
  • $dbase = 'nom_de_la_base_de_donnee';
  • $db = mysql_connect($host,$user,$pass) or die("Erreur de connexion au serveur");
  • mysql_select_db($dbase,$db) or die("Erreur de connexion a la base de donnees");
  • $table_name = mysql_query('show tables');
  • while($data = mysql_fetch_array($table_name)) {// on boucle sur les noms de chaque table
  • $columns_name = mysql_query('show columns from '.$data[0]);
  • while($data1 = mysql_fetch_array($columns_name)) {// on boucle sur les noms de tous les champs de chaque table
  • $res= mysql_query('select * from '.$data[0].' where '.$data1[0].' like "%Mot_clé%"');
  • while($data3 = mysql_fetch_array($res)) {// on affiche le resultat de la requete pour chaque champ de chaque table
  • echo "&nbsp;&nbsp;&nbsp;".$data3[0].'<br/>';
  • echo "&nbsp;&nbsp;&nbsp;".$data3[1].'<br/>';
  • //etc ......
  • }
  • }
  • }
  • ?>
<?php
$host = 'localhost';
$user = 'root';
$pass = 'root';
$dbase = 'nom_de_la_base_de_donnee';
    
	$db = mysql_connect($host,$user,$pass) or die("Erreur de connexion au serveur");
	mysql_select_db($dbase,$db) or die("Erreur de connexion a la base de donnees");

$table_name = mysql_query('show tables');
while($data = mysql_fetch_array($table_name)) {// on boucle sur les noms de chaque table
	 $columns_name = mysql_query('show columns from '.$data[0]);
	 while($data1 = mysql_fetch_array($columns_name)) {// on boucle sur les noms de tous les champs de chaque table
	 	$res= mysql_query('select * from '.$data[0].' where '.$data1[0].' like "%Mot_clé%"');
	 	while($data3 = mysql_fetch_array($res)) {// on affiche le resultat de la requete pour chaque champ de chaque table
     	        echo "&nbsp;&nbsp;&nbsp;".$data3[0].'<br/>';
		echo "&nbsp;&nbsp;&nbsp;".$data3[1].'<br/>';
                //etc ......
		}
	 }
}
?>



 Sources du même auteur

Source avec Zip CALENDRIER

 Sources de la même categorie

Source avec Zip ORM : DAO, ACTIVERECORD ET DBLIST par Reldan
Source avec une capture CET EXTRAIT PERMET D'AJOUTER DANS UN TABLEAU UNE AGRÉGATION ... par Denis007
EXPORT DE BASE AU FORMAT CSV par remib74
Source avec Zip RECHERCHE DES DOUBLONS DANS UNE TABLE MYSQL EN SÉLECTIONNANT... par aladec2007
[CRON] INSERT ON DUPLICATE KEY UPDATE par pierreSabatier

 Sources en rapport avec celle ci

Source avec Zip RECHERCHE DES DOUBLONS DANS UNE TABLE MYSQL EN SÉLECTIONNANT... par aladec2007
Source avec Zip Source avec une capture EL COYOTOS LIVRE D'OR PHP 5 par elcoyotos
Source avec Zip CLASS MYSQL 5/PHP5 AVEC GESTION DES EXCEPTION ET DES REQUÊTE... par devil_may_cry
Source avec Zip GESTION_ENSEIGNANTS par Elmarzougui
RECHERCHE DANS UNE BASE MYSQL par haryou

Commentaires et avis

Commentaire de phpAnonyme le 20/03/2011 15:49:43

Avec PDO ça coule nettement plus vite, d'autant que c'est plus intéressant !


$sth = new PDO('mysql:host='.$host.';dbname='.$dbase, $user, $pass);
$getTables = $sth->query('SHOW TABLES');
$resultTables = $getTables->fetchAll();
if(empty($resultTables))
throw new Exception('Pas de tables dans la BDD');

foreach($resultTables AS $nameTables) {
$getColumns = $sth->query('SHOW COLUMNS FROM '.$nameTables[0]);
$resultColumns = $getColumns->fetchAll();
$columns = '';
foreach($resultColumns AS $k => $columnsName) {
if(empty($columns))
$columns .= '`'.$resultColumns[$k]['Field'].'` LIKE \'%'.$word.'%\'';
else
$columns .= ' OR `'.$resultColumns[$k]['Field'].'` LIKE \'%'.$word.'%\'';
}
$result = $sth->query('SELECT * FROM '. $nameTables[0] .' WHERE '.$columns);
$row = $result->fetchAll();
if(!empty($row)) {
echo '<pre>';
print_r($row);
echo '</pre>';
}
}

Commentaire de phpAnonyme le 20/03/2011 15:59:20

Je me suis trompé de code :

$sth = new PDO('mysql:host='.$host.';dbname='.$dbase, $user, $pass);
$getTables = $sth->prepare('SHOW TABLES');
$getTables->execute();
$resultTables = $getTables->fetchAll();
if(empty($resultTables))
throw new Exception('Pas de tables dans la BDD');

foreach($resultTables AS $nameTables) {
$getColumns = $sth->prepare('SHOW COLUMNS FROM '.$nameTables[0]);
$getColumns->execute();
$resultColumns = $getColumns->fetchAll();
$columns = '';
foreach($resultColumns AS $k => $columnsName) {
if(empty($columns))
$columns .= '`'.$resultColumns[$k]['Field'].'` LIKE \'%'.$word.'%\'';
else
$columns .= ' OR `'.$resultColumns[$k]['Field'].'` LIKE \'%'.$word.'%\'';
}
$result = $sth->prepare('SELECT * FROM '. $nameTables[0] .' WHERE '.$columns);
$result->execute();
$row = $result->fetchAll();
if(!empty($row)) {
echo '<pre>';
print_r($row);
echo '</pre>';
}
}

requête préparée !
Mais ça bon ca change pas grand chose sauf au niveau de la rapidité

Commentaire de gabay le 20/03/2011 17:47:01

T'a raison et en plus c'est très bien organiser ;)

Commentaire de Marshall_Mathers le 21/03/2011 05:53:16 6/10

Bonjour Gabay,

Ton script va exécuter autant de requêtes qu'il existe de champs ? Je ne pense pas que cela soit très bon pour l'accès et la vitesse...
J'ai un script du même genre qui concatène les requêtes ensemble comme le script PDO de "phpAnonyme". Je pense que c'est la meilleure solution.

Mais continue comme ça =) !

Commentaire de nino31 le 21/03/2011 09:46:05

Bonjour,

Avec le code de phpanonyme, j'ai : "Notice: Undefined variable: word in E:\wamp\www\boxavenue\test-connect-bdd\search.php on line 16"

Un question : ou entre-t-on les mots à rechercher ?

Merci

Commentaire de gabay le 21/03/2011 13:38:56

$word c'est le mot clé tu doit l'initialisé au début par une valeur que tu récupère en GET ou en POST ou bien pou tester tu mes juste une chaine de caractère.

Sinon, Marshall_Mathers, oui ca exécute autant de requêtes qu'il existe de champs, et c'est vrais que c'est mieux de concaténer les requête comme ca on réduit le nombre de requêtes à une par table... entre autre ca devient comme ceci:

<?php
$host = 'localhost';
$user = 'root';
$pass = 'root';
$dbase = 'nom_de_la_base_de_donnee';
$columns ='';

$db = mysql_connect($host,$user,$pass) or die("Erreur de connexion au serveur");
mysql_select_db($dbase,$db) or die("Erreur de connexion a la base de donnees");

$table_name = mysql_query('show tables');
while($data = mysql_fetch_array($table_name)) {// on boucle sur les noms de chaque table
$columns_name = mysql_query('show columns from '.$data[0]);
while($data1 = mysql_fetch_array($columns_name)) {// on boucle sur les noms de tous les champs de chaque table
if(empty($columns)){
$columns .= $data1[0].' like "%Mot_clé%"';
}else{
$columns .= ' or '.$data1[0].' like "%Mot_clé%"';
}
}
$res= mysql_query('select * from '.$data[0].' where '.$columns);
while($data3 = mysql_fetch_array($res)) {// on affiche le resultat de la requete pour chaque champ de chaque table
echo "&nbsp;&nbsp;&nbsp;".$data3[0].'<br/>';
echo "&nbsp;&nbsp;&nbsp;".$data3[1].'<br/>';
//etc ......
}
}
?>

Commentaire de furefure le 22/03/2011 13:07:05 3/10

Euh pourquoi pas var_dump($row) ou var_dump($dataX[X]) ...
C'est pas que ca me choque..
Sinon j'aime bien le code... C'est adaptable assez facilement pour le faire sur certain champs de certaine table

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

recherche module php/mysql pour envoie de sms [ par seksek ] Salut à tousje recherche un module php/mysql pour envoie de messages sms et un autre pour la mise en place de faq car les modules en ma possesion ne m Php/MySQL - Recherche puis tri [ par lm007npg ] Bonsoir à tous,Je suis en train de réaliser un moteur de recherche pour mon site. J'ai une requête dans ce genre :SELECT * FROM ma_table WHERE descrip moteur de recherche : en dur, en php-mysql... ?? [ par hdh ] Bonsoir ! Je suis en train de faire un site internet.... et pour aider l'internaute &#224; trouver facilement l'info je voudrais mettre en place un mo recherche entre php et mysql [ par amnhappy ] je veux faire la recherche d'un membre et la r&#233;ponse s'affiche dans une autre page Recherche développeur php [ par michaelo ] Start-up (Asni&#232;res - 92600) &#233;ditant une plateforme communautaire innovante traitant de divers domaines artistiques, nous recherchons un d&#2 Recherche developpeur PHP/mySQL Confirmé [ par ahamdi ] Mesdames, messieurs Bonsoir, Je suis &#224; la recherche d'un developpeur PHP/MySQL confirm&#233;.J'ai un projet professionel qui tient la route, malh Pb de recherche sur bdd mysql avec php [ par coconamour ] Bonsoir , en fait je vai etre direct j'ai un pb  avec ce codes sources :recherche.php :&lt;?phpinclude("config.php");//On défini la variable de la rec Projet web recherche codeurs PHP / MySQL [ par moontek ] Bonjour à toute la communauté de PHPCS Etant un membre assidu de cette communauté pour les sources et l'inspiration que je puise en tant que développ créer moteur de recherche php / mysql (besoin d'aide) [ par witch32 ] bonjour!alors voilà, je dois créer un moteur de recherches de partition pour un site, mais je ne sais pas trop comment m'y prendre...les champs de rec Recherche Développeur PHP/MySQL et/ou graphiste web/flash [ par JPKalham ] Bonjour,http://www.moupo.com Description du projet : Moupo vous offre le meilleur du Web. Accédez aux informations essentielles du Cinema, Séries Télé


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,889 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales