begin process at 2012 05 27 19:36:10
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caratère

 > UN PARSEUR DE SQL (LISTER LES CHAMPS PRESENTS, ET PLUS SI AFFINITES)

UN PARSEUR DE SQL (LISTER LES CHAMPS PRESENTS, ET PLUS SI AFFINITES)


 Information sur la source

Note :
Aucune note
Catégorie :Chaîne de caratère Classé sous :mysql, select, parsing, requettes, php5 Niveau :Initié Date de création :26/05/2007 Date de mise à jour :28/05/2007 18:55:42 Vu / téléchargé :4 206 / 125

Auteur : coucou747

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note


 Description

Bon, je vous presente une classe (qui aurait peut-etre du etre formee comme une fonction, mais bon, j'ai choisi de pouvoir eventuellement laisser une possibilite d'evolution vers un systeme de construction de requettes) Cette classe permet de prendre une requette, de la decouper, d'obtennir ainsi plusieurs tableaux, l'un contient la liste des champs selectionnes, un autre contient la liste des bases, un autre, les conditions, les groupements et les limites... J'ai surement oublie des keywords importants a parser, si vous en trouvez, faites moi signe...

Ca ne parse que les requettes SELECT, simples comme complexes... je n'ai pas voulu gerer les DELETE, DROP, CREATE, INSERT et autres pour le moment, car ce ne sont pas vraiment des requettes que l'on fait construire par un script, ou pour lesquels, la lecture par un script presente de l'interet...... (enfin je crois...)

J'ai fait cette classe pour la requette presentee en bas, elle est complique, et risque de se compliquer encore, et j'avais besoin de faire une liste des champs disons facilement accessibles, alors j'ai code ca...

J'aurais pu faire un parsing recursif pour les sous requettes, je ne l'ai pas fait, c'est selon moi pas obligatoire, donc libre a l'utilisateur de le faire

Source

  • try{
  • $s=new SqlExpr('
  • SELECT
  • clients.id, clients.nom, clients.prenom,
  • clients.type AS typeclient, /*Homme Femme, Enfant*/
  • clients.civilite, /*Madamme Mademoiselle Monsieur*/
  • clients.date_de_naissance,
  • clients.tranche_age,
  • clients.adresse,
  • clients.tel,
  • clients.actif, /*oui non */
  • ville.nom AS nomville,
  • ville.code_postal,
  • collaborateur.nom AS collaborateur_nom,
  • collaborateur.prenom AS collaborateur_prenom,
  • collaborateur.pseudo AS collaborateur_pseudo,
  • (
  • SELECT COUNT(*)
  • FROM passage_liste
  • WHERE passage_liste.id_client=clients.id
  • ) AS nbr_passages,
  • (
  • SELECT MAX(date_de_passage)
  • FROM passage_liste
  • WHERE passage_liste.id_client=clients.id
  • ) AS derniere_visite,
  • (
  • SELECT prestations.nom
  • FROM passage_liste LEFT JOIN
  • (passage_prestation LEFT JOIN prestations
  • ON prestations.id=passage_prestation.id_prestation)
  • ON passage_prestation.id_passage=passage_liste.id
  • WHERE passage_liste.id_client=clients.id
  • GROUP BY passage_prestation.id_prestation
  • ORDER BY COUNT(*)
  • LIMIT 1
  • ) AS prestation_best
  • FROM
  • (clients LEFT JOIN ville ON clients.id_ville=ville.id)
  • LEFT JOIN collaborateur ON id_collaborateur_prefere=collaborateur.id
  • ');
  • echo '<ul>';
  • foreach ($s->SELECT as $l)
  • echo '<li>'.$s->notableorbase($l[1]).'</li>';
  • echo '</ul>';
  • }catch (Exception $e){
  • echo $e;
  • }
try{
		$s=new SqlExpr('
	SELECT
		clients.id, clients.nom, clients.prenom,
		clients.type AS typeclient,			/*Homme Femme, Enfant*/
		clients.civilite,				/*Madamme Mademoiselle Monsieur*/
		clients.date_de_naissance,
		clients.tranche_age,
		clients.adresse,
		clients.tel,
		clients.actif,					/*oui non */
		ville.nom AS nomville,
		ville.code_postal,
		collaborateur.nom AS collaborateur_nom,
		collaborateur.prenom AS collaborateur_prenom,
		collaborateur.pseudo AS collaborateur_pseudo,
		(
			SELECT COUNT(*)
			FROM passage_liste
			WHERE passage_liste.id_client=clients.id
		) AS nbr_passages,
		(
			SELECT MAX(date_de_passage)
			FROM passage_liste
			WHERE passage_liste.id_client=clients.id
		) AS derniere_visite,
		(
			SELECT prestations.nom
			FROM passage_liste LEFT JOIN
				(passage_prestation LEFT JOIN prestations
					ON prestations.id=passage_prestation.id_prestation)
				ON passage_prestation.id_passage=passage_liste.id
			WHERE passage_liste.id_client=clients.id
			GROUP BY passage_prestation.id_prestation
			ORDER BY COUNT(*)
			LIMIT 1
		) AS prestation_best
	FROM
		(clients LEFT JOIN ville ON clients.id_ville=ville.id)
			LEFT JOIN collaborateur ON id_collaborateur_prefere=collaborateur.id
');
	echo '<ul>';
	foreach ($s->SELECT as $l)
		echo '<li>'.$s->notableorbase($l[1]).'</li>';
	echo '</ul>';
}catch (Exception $e){
	echo $e;
}

 Conclusion

c'est une v1. j'ai commence ca vers 13h aujourd'hui, alors il peut rester quelques problemes (surtout que mon utilisation de cette classe reste limitee a une seule requette, alors j'ai teste avec quelques requettes que j'utilise frequement, mais j'ai pas non plus teste avec 400 requettes...)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

28 mai 2007 18:54:04 :
ajout de la gestion des fonctions, et ajout d'une methode qui permet d'obtennir la notation RPN
28 mai 2007 18:55:42 :
euh... je me suis plante de source lors de la mise a jours d'il y a deux minutes

 Sources du même auteur

Source avec une capture IMAGES GENETIQUES
Source avec Zip Source avec une capture RUBIX CUBE
Source avec Zip INTERPRETEUR BRAINFUCK
Source avec Zip PROXY HTTP : SAUVEZ VOS VIDEOS PREFEREES.
Source avec une capture ECRIRE UN TEXTE EN CERCLE SUR UNE IMAGE

 Sources de la même categorie

ADRESSE ABSOLUE DE LA PAGE EN COURS, AVEC VARIABLES $_GET par Dariumis
Source avec Zip CLASSE D'OBJET DE RECHERCHE DE MOTS DANS DES TABLEAUX ET/OU ... par 8Tnerolf8
RÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBE par tefa24600
Source avec Zip Source avec une capture CONVERTISSEUR DE NOMBRES EN TEXTE par macruz
Source avec Zip Source avec une capture CODAGE TEXTE >HTML, ISO, SPECIALCHARS, URL ET DECODAGE par Salva9473

 Sources en rapport avec celle ci

Source avec Zip [PHP5.2] CLASSE PDO par hornetbzz
Source avec une capture GÉNÉRATION/GESTION DE FORMULAIRE VIA FICHIER XML par Garno
GÉNÉRATEUR DE LISTE DÉROULANTE par caviar
Source avec Zip DBOC 1.6 [PHP5] par Morphinof
PHP 5 - CLASSE MYSQL (STYLE MYSQLI) par FhX

Commentaires et avis

Commentaire de marc660 le 10/07/2007 10:23:06

Bonjour,

comment peut ton utiliser cette source ?

cordialement,

Commentaire de coucou747 le 10/07/2007 19:56:50 administrateur CS

t'as un exemple...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

pb sur mysql avec requete select * from TABLE IN (select ...) [ par malibu23 ] Salut j ai un pb sur mysql lorsque je fais un requetedu type select CHAMP from TABLE where CHAMP IN ( select CHAMP from TABLE where CHAMP = VARIABLE); aide hebergeur [ par mohamed6 ] voila je voudrais savoir ce qu'il faut mettre à la place $dbroot$dbunser$dbpass$url$cheminpour $dbpass je suppose que c'est le mot de passe et le rest ::Problème avec mon compteur [ par kodiask ] voilà j'ai un compteur qui compte par raport aux ip des visiteur mai le problème est qu'il ne rentre pas les ip dans la BDD je compren pas pourquoi: v ## Où est l'erreur ???? bon diou !! [ par kodiask ] voila dite moi pourkoi lorsque je met le code la, il n'y a rien ki saffiche ? (c un système de citation aléatoire)mysql_select_db('cit_tbl',$db); $que sil vou plé où est l'erreur ? [ par kodiask ] voilà g fai un système de citation au hazard et kanje met le code là il maffiche rien du tout , pourkoi ? merci ....mysql_select_db('cit_tbl',$db); $q select mysql par date [ par lebobby ] Bonjour le mondeJe voudrais savoir comment faire un select sur une table qui possede un champ date_recep (de type datetime) dont cette date_recep est count [ par westsider ] comment en récupére la valeur d'un count dans mysql??$result = mysql_query("SELECT COUNT (id) AS truc FROM film");while($select = mysql_fetch_array($r Inversement requete MySql [ par mick0000000001 ] Voici mon code: $select = mysql_query("SELECT * FROM $blabla ORDER BY id DESC LIMIT 0,6");$result = mysql_num_rows($select);if($result == '0'){echo "" Pb passage PHP4 -> PHP5 [ par Galmiza ] Salut,J'ai acheté un bouquin pour débuter le PHP.J'ai suivi a la lettre les instructions du livre:-installer EasyPHP 1.7-installer PHP 5.0..-lancer Ea prob de MySQL [ par skaterboss2000 ] Bonjour @ tous !-Voila ma source :&lt;?phpecho"&lt;font face=verdana size=1&gt;";include('connexion.php');//affichage de la dernière source$select=mys


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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,858 sec (3)

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