begin process at 2010 03 13 00:22:09
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de Donnees

 > GESTION BDD CHEZ UN HEBERGEUR INTERNET QUI NE VOUS NE PERMET PAS D'Y ACCEDER DIRECTEMENT

GESTION BDD CHEZ UN HEBERGEUR INTERNET QUI NE VOUS NE PERMET PAS D'Y ACCEDER DIRECTEMENT


 Information sur la source

Note :
Aucune note
Catégorie :Base de Donnees Classé sous :indy, sql, requete, base, donnee Niveau :Initié Date de création :09/03/2007 Date de mise à jour :13/10/2007 17:33:01 Vu / téléchargé :5 849 / 1 425

Auteur : Mokost

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

 Description

Cliquez pour voir la capture en taille normale
Ce programme va vous permettre par une petite astuce et un composant indy de gérer une base de donnée stocké chez un herbergeur qui ne vous permet pas d'y accéder directement avec un logiciel. Pratique si vous ne voulez pas utiliser internet et/ou le php pour la gérer. Le principe est trés simple.
Avec ce soft vous pourrez récupere des données et tout ce qui est possible de faire avec mysql.

J'attends vos commentaires, suggestions et avis.

J'ai remarqué que pas mal de personne ont eu des problemes avec mon ancienne version en voici donc une nouvelle meilleur(surtout au niveau de la vitesse) et qui fonctionne pour vu que vous vous y preniez correctement.

Renommer GestBase.-x- en GestBase.exe pour avoir la version compilé.

Source

  • Oui c'est du php !
  • Avant toute chose vous devez mettre ça dans votre fichier gestiondb.php :
  • Ce fichier doit être uploader chez l'hebergeur.
  • Remarque que ces variables doivent être les memes que celle que vous avez mise dans le fichier post.txt
  • Et finalement il est fournit dans le zip !
  • <?
  • //Detection de la requette.
  • if(isset($_POST["sql"]))
  • $sql=$_POST["sql"]; else $sql="";
  • /*
  • pour ne permettre que la lecture seul vous pouvez ajouter,
  • par exemple ceci :
  • $lsql=explode(";",$sql);
  • $newsql="";
  • for($i=0;$i<count($lsql);$i++)
  • {
  • //On s'assure que la premiere instruction de la requete est un select.
  • //Si c'est le cas on ajoute la requete
  • if(strpos(strtolower(" ".$lsql[$i]),"select")==1)
  • $newsql.=$lsql[$i].";";
  • }
  • *********************************************************************************
  • Peut est améliorée, dans la mesure ou peut encore générer des erreures
  • Je m'explique :
  • Essayons "insert into commentaire values('JE ne suis pas d\'accord; ok !');"
  • dans ce cas c'est le second ";" qui marque la fin de l'instruction et non le premier
  • donc forcément on génerera une erreur.
  • *********************************************************************************
  • //Finalement on réaffecte la requete sql.
  • $sql=$newsql;
  • */
  • //Teste des mot de passe et login pour valider la requete.
  • //Si possible cryptez les !
  • if(($_POST["mdp"]=="leking")&&($_POST["log"]=="mokost")) execreq($sql);
  • //Cette fonction va formater la sortie pour pouvoir utiliser le resultat correctement.
  • function execreq($Req){
  • //informations concernant la base de donnée.
  • $host="localhost";
  • $user="root";
  • $mdp="";
  • //Base de données sur laquelle on doit agire.
  • $db="matable";
  • //Séparateure de données concrettes.
  • $sep1="ž";//alt + 0158
  • $sep2="š";//alt + 0154
  • //Définit la zone de donnée(s) utile(s) évitant ainsi les publicitées.
  • $sepd="Š";//alt+ 0138;
  • /*
  • Pour ces séparateure utiliser des chaines non contenue dans vos données et de préférence un caractère.
  • Cepandant assurez vous qu'ils soient les mêmes que ceux de votre variable TReq dans votre appli delphi.
  • *********************************************************************************
  • TReq est contenu dans l'unité specproc ainsi que la fonction strtoreq().
  • *********************************************************************************
  • Exemple :(c'est du delphi);
  • [...]
  • var
  • MesDonnees : TReq;
  • begin
  • with MesDonnees do begin
  • sep1:='ž';//alt + 0158
  • sep2:='š';//alt + 0154
  • sepd:='Š';//alt+ 0138
  • end;
  • strtoreq(donneesnonformatees,MesDonnees);
  • [...];
  • */
  • //le "a" assure qu'il y ait au moin 1 charactere avant.
  • echo "a".$sepd;
  • $cntx= mysql_connect($host, $user, $mdp);
  • if ($cntx) {
  • $link=mysql_select_db($db);
  • if ($link) {
  • $ret=mysql_query($Req);
  • if ($ret) {
  • $nbrow=mysql_num_fields($ret);
  • $str=$nbrow.$sep1.mysql_num_rows($ret).$sep1;
  • for($i=0;$i<$nbrow;$i++)
  • $str=$str.mysql_field_name($ret,$i).$sep1;
  • echo $str.$sep2;
  • while($res=mysql_fetch_row($ret)) {
  • $str="";
  • for($i=0;$i<$nbrow;$i++)
  • $str=$str.$res[$i].$sep1;
  • //$str=substr($str,2,strlen($str)-1);
  • echo $str."<br>";
  • }
  • }
  • }
  • }
  • else return 0;
  • echo mysql_error();
  • mysql_close($cntx);
  • //Le "z" assure qu'il y ait au moin 1 charactere aprés.
  • echo $sepd."z";
  • }
  • ?>
Oui c'est du php !
Avant toute chose vous devez mettre ça dans votre fichier gestiondb.php :
Ce fichier doit être uploader chez l'hebergeur.
Remarque que ces variables doivent être les memes que celle que vous avez mise dans le fichier post.txt
Et finalement il est fournit dans le zip !

<?

//Detection de la requette.
if(isset($_POST["sql"]))
	$sql=$_POST["sql"]; else $sql="";
/*

pour ne permettre que la lecture seul vous pouvez ajouter,
par exemple ceci :

$lsql=explode(";",$sql);
$newsql="";
for($i=0;$i<count($lsql);$i++)
{
//On s'assure que la premiere instruction de la requete est un select.
//Si c'est le cas on ajoute la requete
	if(strpos(strtolower(" ".$lsql[$i]),"select")==1)
		$newsql.=$lsql[$i].";";
}

*********************************************************************************
Peut est améliorée, dans la mesure ou peut encore générer des erreures
Je m'explique :
Essayons "insert into commentaire values('JE ne suis pas d\'accord; ok !');"
dans ce cas c'est le second ";" qui marque la fin de l'instruction et non le premier
donc forcément on génerera une erreur.
*********************************************************************************



//Finalement on réaffecte la requete sql.
$sql=$newsql;
*/

//Teste des mot de passe et login pour valider la requete.
//Si possible cryptez les !
if(($_POST["mdp"]=="leking")&&($_POST["log"]=="mokost")) execreq($sql);

//Cette fonction va formater la sortie pour pouvoir utiliser le resultat correctement.
function execreq($Req){

//informations concernant la base de donnée.
$host="localhost";
$user="root";
$mdp="";
//Base de données sur laquelle on doit agire.
$db="matable";

//Séparateure de données concrettes.
$sep1="ž";//alt + 0158
$sep2="š";//alt + 0154

//Définit la zone de donnée(s) utile(s) évitant ainsi les publicitées.
$sepd="Š";//alt+ 0138;

/*
Pour ces séparateure utiliser des chaines non contenue dans vos données et de préférence un caractère.
Cepandant assurez vous qu'ils soient les mêmes que ceux de votre variable TReq dans votre appli delphi.
 *********************************************************************************
 TReq est contenu dans l'unité specproc ainsi que la fonction strtoreq().
*********************************************************************************
Exemple :(c'est du delphi);
[...]
var 
	MesDonnees : TReq;
begin
with MesDonnees do  begin
	sep1:='ž';//alt + 0158
	sep2:='š';//alt + 0154
	sepd:='Š';//alt+ 0138
end;

strtoreq(donneesnonformatees,MesDonnees);

[...];

*/

//le "a" assure qu'il y ait au moin 1 charactere avant.
echo "a".$sepd;

	$cntx= mysql_connect($host, $user, $mdp);
	if ($cntx) {
		$link=mysql_select_db($db);
		if ($link) {
			$ret=mysql_query($Req);
			if ($ret) {
				$nbrow=mysql_num_fields($ret);
				$str=$nbrow.$sep1.mysql_num_rows($ret).$sep1;
				for($i=0;$i<$nbrow;$i++)
				$str=$str.mysql_field_name($ret,$i).$sep1;
				echo $str.$sep2;
				while($res=mysql_fetch_row($ret)) {
					$str="";
					for($i=0;$i<$nbrow;$i++)
						$str=$str.$res[$i].$sep1;
					//$str=substr($str,2,strlen($str)-1);
					echo $str."<br>";				
				}
			}
		}
	}
	else return 0;
echo mysql_error();
mysql_close($cntx);
//Le "z" assure qu'il y ait au moin 1 charactere aprés.
echo $sepd."z";

} 

?>

 Conclusion

il y a une limitation dans le nombre de caracteres admis pour une requete. Je n'ai pas compter mais eviter de lancer une requete du genre :

exec('insert into xxx values(yy,zz);insert into xxx values(yy,zz);'+
'insert into xxx values(yy,zz);insert into xxx values(yy,zz);'+
'insert into xxx values(yy,zz);insert into xxx values(yy,zz);'+
'insert into xxx values(yy,zz);insert into xxx values(yy,zz);'+ ...)
lancer la plutôt de cette maniere :
exec('insert into xxx values(yy,zz)');
exec('insert into xxx values(yy,zz)');
exec('insert into xxx values(yy,zz)');
exec(...);

 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

09 mars 2007 22:03:17 :
J'ai juste oubliez de préciser qu'il vous faut l'unité specproc que vous trouverez sur le site. Elle contient tout les fonctions nécessaire au bon fonctionnement du programme. Merci de votre compréhension.
13 octobre 2007 17:29:47 :
Amélioration de la vitesse de traitement des données(Vraiment plus rapide). Et mise de toute les sources qu'il faut. Donc plus de raison d'hésitez utilisez le !
13 octobre 2007 17:33:01 :
Amélioration de la vitesse de traitement des données(vraiment plus rapide). Dans le zip j'ai mis tout ce qu'il vous faut pour que ça fonctionne. Donc plus de raison d'hésitez, devellopez !

 Sources du même auteur

AFFICHER, TELECHARGER DES IMAGES SE TROUVANT SUR INTERNET DA...
Source avec Zip AJOUTER UN SCRIPTING SIMPLE CLAIRE ET EFFICACE A VOTRE APPLI...
Source avec Zip Source avec une capture RPG EN DELPHI
Source avec Zip Source avec une capture MARIO BROS
Source avec Zip Source avec une capture EDITEUR DE MAP

 Sources de la même categorie

Source avec Zip Source avec une capture ANNUAIRE V1.0.0 par Christophe67
Source avec Zip INTERBASE FIREBIRD IBEXPERT par opgiat
Source avec Zip CREE ALIAS AUTOMATIQUEMENT CREATION REPERTOIRE ET TABLE AUSI par opgiat
Source avec Zip CRÉE UN RÉPERTOIRE ET CRÉE CES TABLES PAR PROGRAMME par opgiat
Source avec Zip Source avec une capture CONNEXION MYSQL ET RECUPERATION DANS BASE ACCESS par eli42

 Sources en rapport avec celle ci

Source avec Zip COMBINAISONS DE STRINGS par askil2000
Source avec Zip Source avec une capture LOGICIEL INTERRUPTEUR MONDIAL USB par ced55957
Source avec Zip Source avec une capture PARSER D'EN-TÊTE HTTP par ILP
Source avec Zip Source avec une capture DOWNLOADS HTTP EN MULTITHREAD AVEC INDY par JeremyLecouvert
Source avec une capture MAILS AVEC INDY10 : QUE FAIRE LORSQUE LE CONTENU AU FORMAT M... par MAURICIO

Commentaires et avis

Commentaire de Mokost le 09/03/2007 21:56:31

Ceci n'est que le squelette de l'application a vous de l'habillez comme il faut pour lui faire faire les taches souhaitées.

Commentaire de Also know as le 15/03/2007 11:03:13

Tres interressant cette source, merci beaucoup.
J'ai toujours cherche cela sans aucun resultat.

Qui plus est en utilisant ton squelette il sera aussi possible de creer et modifier la base de donnee je pense.

Bien vu et bien trouve :D

Commentaire de Mokost le 15/03/2007 12:12:36

Merci Also Know As. Au moins une personne à qui ça à l'air de servir. Tu m'en vois ravi. En utilisant ce squelete tu peux tout faire avec une base de donné à partir du moment ou tu connais le MySql. ;)
Bonne continuation.

Commentaire de Also know as le 15/03/2007 13:46:56

Ouaip moi je vais pouvoir beaucoup m'en servir meme, en tout cas cela va permettre de par exemple mettre a jour des programmes plus facilement en regardant dans la base de donnee meme, donc plus besoin de telechargement de fichier annexe, de garder tout en memoire en changeant de PC, de creer un login et mot de passe pour chaque personne utilisant le logiciel aussi, les possibilites sont tres vaste dommage que d'autres personnes ne soient pas interresse pour le moment car cela est vraiment tres interressant.

@+

Commentaire de compos le 16/04/2007 23:37:20

J'ai peut-être loupé quelque chose, mais au chargement du projet il manque "IdBaseComponent"

Merci quand même ! ;)

Commentaire de Mokost le 05/05/2007 08:03:09

Tu as besoin des composant indy(fournit en standard avec delphi 7) ou sinon cherche sur le net tu le trouvera facilement.

Commentaire de Also know as le 06/05/2007 10:53:30

J'ai voulu me télécharger le code source car j'en ai enfin besoin, j'avais hate :)
Mais là blim blam bloum, il me manque le fichier SynEditHighlighter.dcu, je trouve sur internet sans problème SynEditHighlighter.pas qui lui même à besoin d'un fichier, ou se fichier à lui même besoin d'un autre fichier, et ce fichier ne pouvait pas compiler, etc.
J'ai essayé d'enlever "SynEditHighlighter, SynHighlighterHtml, SynEdit, ShockwaveEx" des uses.
Puis j'ai encore du enlever "specproc".

Un petit peu d'espoir...ET là poc ! :

res:treq; <== variable non reconnue.

Bon ben tant pis j'arrête là.

Faudrait réellement que tu nous mette toutes les sources nécessaires.
J'utilise Delphi 7 Entreprise, donc j'ai bien les composant indy..

@+

Commentaire de computer59 le 29/06/2007 10:37:23

Salut !!
meme chose que " Also know as " manque plein de fichiers,j'ai testé la version compilé j'ai changé les parametres dans le fichiers texte et la je test une requete et voici l'erreur :
---------------------------
Gestbase
---------------------------
HTTP/1.1 404 Not Found.
---------------------------
OK  
---------------------------
donc voila etant faux debutant car je ne programme plus en delphi depuis mon diplome j'en ai oublier un peu donc comme je voudrais me remettre dans le bain alors si tu pouvais rectifier ton prog ça serais sympa @+ et bonne prog !!

Commentaire de Mokost le 13/10/2007 17:43:10

Désolé pour le retard mais vu que je le met à jour. J'en profite pour te répondre, donc cette erreur veut dire que le soft n'a pas pu trouver la page que tu as indiquer pour gerer ta base.

Commentaire de jackalunion le 24/06/2008 04:27:11

Tres interressant cette source

Commentaire de philc94 le 29/11/2008 21:44:49

J'ai voulu utiliser ce code pour me connecter a une base de donnes depuis mon programme delphi mais ca ne fonctionne pas. A chaque fois j'ai une erreur socket #11004.
Quelqu'un pourrait-il m'aider?
Merci

Commentaire de Go2EDS le 08/02/2009 11:05:02

Super ce code, im me sera d'une grande utilité!
Petit prob toutefois : si je lance GestBase.-x- (après l'avoir renomé) cela se passe très bien. Par contre si je compile la source et lance l'exécutable j'obtiens l'erreur ¨ñìL@^£1(
A l'ouverture du projet dans Delphi 2009 j'ai les deux messages suivants :
1. Erreur lors de la lecture de idHTTP1.MaxLineAction:La propriété MaxLineAction n'existe pas.
2. Erreur lors de la lecture de idHTTP1.ReadTimeout:La propriété ReadTimeout n'existe pas.

Une idée pourquoi la source compilée ne fonctionne pas alors que l'exe fournit fonctionne très bien?

Commentaire de Go2EDS le 11/02/2009 23:48:29

OK, j'ai contourné le problème et cela fonctionne. Maintenant je constate que dans une clause WHERE cela fonctionne très bien si le contenu du champ pour lequel on fait la clause WHERE est numérique mais cela ne fonctionne pas du tout pour du texte :
exmple :
select * from users where id=1;   cela va renvoyer un résultat.
select * from users where country='France'; ne fonctionne pas et génère le message d'erreur suivant :
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'France\'' at line 1"

Une idée de comment faire fonctionner la requête avec du texte?

Commentaire de 06Sergio le 18/06/2009 12:39:31

Salut GO2EDS,

j'ai le même problème que toi (erreur ¨ñìL@^£1)
Tu dis l'avoir contournée...
Tu peux nous dire comment ??

merci !

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

pointer une case d'une base de donnée a partir d'une requete sql [ par Maitre_Gonzo ] Bonjour tout le mondej'effectue en ce moment mon stage de premiere année de bts .Je rencontre le problème suivant : Je suis désireux d'afficher des do requete sql access [ par perou2040 ] bonjour je suis en train de travaillé avec une base de donné access en utilisant les requete mais j'ai quelque soucis... voila mon code qui consiste requete SQL et MSACCESS [ par gebu34 ] Bonjour à tous,Pour interroger une base Access j'utilise la requete SQL :SELECT COUNT(champs1) AS nombre1, COUNT(champs2) AS nombre2 FROM Table GROUP Requete SQL [ par sammon ] Bonjour,je viens de commençer le langage delphi, je voudrais faire une requete sql pour extraire des données.par exemple j'ai une table1(idref, niveau Backup d'une BD MS-SQL distante! [ par othland ] Bonjour,je travail sur une base de données MS-SQL (SQL 2000) distante, et je veux en faire un backup, j'ai testé ce bout de code sur une petite base d Pb requete sql [ par Willos78 ] hello J'ai une table que je veux consulter pour savoir si un code y est déjà. Je passe par adoquery mais cela ne passe pas. Il me renvoie une erreur base de donnee [ par saimslim ] salut tous le mondej'ai une application,et pour la mettre en client server comment faire .merci d'avance c'est urgent. modifier une requete SQL [ par islem2007 ] svp j'ai fais une requete ou le resultat est affiché sur un DBGRIDje voudrais apartir de ce DBgrid appliquer des modifications sur les enregistrements


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

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

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