FLASHMX2004 CLASS SQL (MYSQL & ACCESS) V5.5 (AVEC PHP)

Signaler
Messages postés
842
Date d'inscription
dimanche 24 novembre 2002
Statut
Membre
Dernière intervention
2 juillet 2007
-
_benjy
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/23422-flashmx2004-class-sql-mysql-access-v5-5-avec-php

SuperDevy
Messages postés
842
Date d'inscription
dimanche 24 novembre 2002
Statut
Membre
Dernière intervention
2 juillet 2007

Géant ! Et si en plus ça marche, c'est du bonheur...

J'était avide d'une telle source, moi qui n'arrive pas à comprendre le fonctionnement de MySQL.

Malheureusement, je n'ai pas MX 2004 et je suppose que ça peut pas marcher avec MX ! ;-[
top30
Messages postés
1158
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
6 août 2010

C'est super bon.. Ton approche est quasi la même que la mienne. Toi tu balance le query totale ment "Stringé" et retourne un tableau... C'est une bonne approche... La mienne tu construit le Query en flash genre...
maRequete = new Query (server) ;
maRequete.select ("variable");
maRequete.where ("ID, 0, 9);
maRequete.consult (dataBase);

Et ca me retourne un XML... Je te tire mon chapeau car moi des Class comme ca je prefere les garder pour moi (Egoiste ??? Ou la sensation de voir s'echapper un gros travail t appartenant???)...

J ai mis 9 ! Encore bravo !
LocalStone
Messages postés
515
Date d'inscription
mercredi 19 mars 2003
Statut
Membre
Dernière intervention
1 mars 2009

Bon, bah vous m'avez convaincu, tous, là. Je me lance dans l'ActionScript 2.0. Merci !
djawel
Messages postés
49
Date d'inscription
lundi 1 juillet 2002
Statut
Membre
Dernière intervention
11 janvier 2006

bô boulot
BlackWizzard
Messages postés
1277
Date d'inscription
mercredi 21 mars 2001
Statut
Modérateur
Dernière intervention
21 juin 2009
2
tres bon boulot :)
9/10
bienvenue sur le site ;)
BlackWizzard
Messages postés
1277
Date d'inscription
mercredi 21 mars 2001
Statut
Modérateur
Dernière intervention
21 juin 2009
2
au fait, quel status pour ta boite? EI? EURL?
fonetiklilian
Messages postés
32
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
9 mars 2008

Bonjour,

Pour ma part... Aucune des actions ne fonctionne... J'ai toujour "indéfini" dans la zone de texte... Pourtant mes parametres sont ok pour moi avec easyPhp:

sql.type = "mysql"; // mysql ou odbc.
sql.host = "localhost"; // uniquement pour mysql
sql.login = "root";
sql.mdp = "";

Quelqu'un a t'il une piste de recherche...

Merci et bonne journée
_benjy
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
Ben j'sais pas
genre t'es sur de bien appelé le script php ?
var sql:Sql = new Sql("http://localhost/repertoire/sql.php") // mettre localhost pour fonctionnement direct depuis flash, sinon flash lis le fichier php en local et forcement ca marche pas

mais sinon j'ai retelechargé ma sources, elle fonctionne, c forcement toi qui t'es planté par là

met ton code au complet que je puisse voir

++

_benjy
fonetiklilian
Messages postés
32
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
9 mars 2008

Merci c'est sympa...

// Importer les class
import Class.Sql;

Resultats.border = true;

// créer un nouvel objet Sql
var sql:Sql = new Sql("http://127.0.0.1/flash/connection/class sql/sql.php"); // ou en chemin relatif bien sur Sql("sql.php");
sql.showtime = true;

//////////////////////////////////////////////////////////////////////////////////////////////////////////
// tout d'abord les données de connexion
sql.type = "mysql"; // mysql ou odbc.
sql.host = "localhost"; // uniquement pour mysql
sql.login = "root";
sql.mdp = "";

//////////////////////////////////////////////////////////////////////////////////////////////////////////
// ensuite la base de donnée a selectionner
sql.dbname = "fanou"; //mysql test
//sql.dbname = "FlashSqlODBC"; //odbc test

//////////////////////////////////////////////////////////////////////////////////////////////////////////
// ou lister les bases de données du serveur mySql.
function listerlesbase(){
sql.onResult = function(dbs){
if (dbs.isError()){
Resultats.text = dbs.getError();
return;
trace ("jfjsldkjflsdkfj");
}
// voici les resultats retourné dans un objet ResultSet
// nom du champ renvoyé : 'database'
Resultats.text = "Liste des base de données du serveur :";
for (var i=0; i<dbs.rowCount; i++){
Resultats.text += "\n\t"+dbs.getRow(i).database;
}
}
sql.listeDB();
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////
// Vous pouvez lister les tables de la base en cours, ou d'une autre en la spécifiant comme argument.
function listerlestables(){
sql.onResult = function(tables){
if (tables.isError()){
Resultats.text = tables.getError();
return;
}
// voici le liste des tables de la base en cours ou spésifié;
// attention cette commande change la base en cours.
// nom du champ renvoyé : 'table'
Resultats.text = "Liste des tables : ";
for (var i=0; i<tables.rowCount; i++){
Resultats.text += "\n\t"+tables.getRow(i).table;
}
}
sql.listeTables();
//sql.listeTables(db);
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////
// executer toute requete sql.
function requetesql(qry){
sql.onResult = function(rs){
if (rs.isError()){
Resultats.text = rs.getError();
return;
}
if (rs.rowCount == 0){
Resultats.text = "Aucun resultat";
} else if (rs.rowCount > 0){
Resultats.text = "Données chargés";
Resultats.text += "\nRésultat de votre requête : ";
for (var i=0; i<rs.rowCount; i++){
Resultats.text += "\n\tRS "+(i+1);
for (var j=0; j<rs.columnNames.length; j++){
Resultats.text += "\n\t\t"+rs.columnNames[j]+" : "+rs.getRow(i)[rs.columnNames[j]];
}
}
} else if (rs.success == true){
Resultats.text = "Requête éxécuté avec succes !";
}
}
sql.execute(qry);
}

listerlesbase_btn.onRelease = listerlesbase;
listerlestables_btn.onRelease = listerlestables;
requetesql_btn.onRelease = function(){
requetesql("select * from table1");
}
insertsql_btn.onRelease = function(){
if (sql.type == "mysql"){
var q = "insert into table1 set login='";
q +sql.format("c'est + - * / comment ?"racontes % moi");
q += "'";
} else {
var q = "insert into table1 (login) values ('";
q +sql.format("c'est + - * / comment ?"racontes % moi");
q += "')";
}
requetesql(q);
}


//////////////////////////////////////////////////////////////////////////////////////////////////////////
// optionnellement definisé une fonction pour l'activité du serveur.
sql.onActivity = function(etat){
trace ("activité : "+etat);
}

Voili voilo
_benjy
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
ben vu que c un copier collé de mon code ca marche (chez moi et chez tt les autre il marche,
le seul truc c que je vois de diff c ton espace dans le chemin du php au tt debut
tu sais que sur le nt on evite les espace dans les nom de fichier ou dossier kan mm ?
essais de changer ca ... car sinon je vois pas tt parait nikel

++
top30
Messages postés
1158
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
6 août 2010

Y a comme un problème...
C est qu'avec un décompileur, on récupère toutes les infos nécessaire pour un piratage en bon et du forme de tes bases de données. Et oui, le nom de la base et son login sont dans le SWF !!!

Il faut que tu ajouts une classe.
Une classe SQL appelle un "SQLconnection", qui elle ira chercher via un PHP, si l'utlisateur peut se connecter ou non. Le log retournant juste un "true" ou "false", et de cette réponse du lance ta requete ( ou non ) ...

Toi tu fais : SWF > PHP > SQL > PHP > SWF
Il faut que tu fasse :
SWF > PHP [VERIFICATION DES DONNEES] > SWF puis si ok, SWF > PHP > SQL > PHP > SWF

Suis je claire ? En tout cas la mienne fonctionne comme ceci...
_benjy
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
alors 2 solutions pour les données sencibles
1 - soit tu crypt ton swf avec SWFCrypt (je crois que ct ca le nom) qui encode tt le swf (marche tjs aussi bien mais indecompilable) mais fo acheté un licence en plus c pas top
2 - tu met les info de connexion a la DB en dur ds la php (sql.php) et voilacth (vo bidouillé ma class pour enlevé les var de connexion dans se cas)

++
_benjy
cs_lemage77
Messages postés
1
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
20 janvier 2011

j'ai installé wamp5 pour tester en local et je fais quoi je suis newbie la dedans comment je peux tester cela etbesoin d'aide pour faire fonctionner

help me

lemage
vincseize
Messages postés
114
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
28 mars 2010

Un bravo de Blackwizzard , ca c est la classe !!!!
_benjy
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
merci Blackwizzard :)

_benjy
vincseize
Messages postés
114
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
28 mars 2010

pareil ca marche pas .... hum
faut il preciser l import des as à l exportation du flash !?
thx pour la reponse ....

Le code :


// Importer les class
import Class.Sql;

Resultats.border = true;

// créer un nouvel objet Sql
var sql:Sql = new Sql("http://localhost/RD/mysql/flashkod_classMysql/sql.php/"); // ou en chemin relatif bien sur Sql("sql.php");
sql.showtime = true;

//////////////////////////////////////////////////////////////////////////////////////////////////////////
// tout d'abord les données de connexion
sql.type = "mysql"; // mysql ou odbc.
sql.host = "localhost"; // uniquement pour mysql
sql.login = "root";
sql.mdp = "";

//////////////////////////////////////////////////////////////////////////////////////////////////////////
// ensuite la base de donnée a selectionner
sql.dbname = "nymky"; //mysql test
//sql.dbname = "FlashSqlODBC"; //odbc test

//////////////////////////////////////////////////////////////////////////////////////////////////////////
// ou lister les bases de données du serveur mySql.
function listerlesbase(){
sql.onResult = function(dbs){
if (dbs.isError()){
Resultats.text = dbs.getError();
return;
}
// voici les resultats retourné dans un objet ResultSet
// nom du champ renvoyé : 'database'
Resultats.text = "Liste des base de données du serveur :";
for (var i=0; i<dbs.rowCount; i++){
Resultats.text += "\n\t"+dbs.getRow(i).database;
}
}
sql.listeDB();
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////
// Vous pouvez lister les tables de la base en cours, ou d'une autre en la spécifiant comme argument.
function listerlestables(){
sql.onResult = function(tables){
if (tables.isError()){
Resultats.text = tables.getError();
return;
}
// voici le liste des tables de la base en cours ou spésifié;
// attention cette commande change la base en cours.
// nom du champ renvoyé : 'table'
Resultats.text = "Liste des tables : ";
for (var i=0; i<tables.rowCount; i++){
Resultats.text += "\n\t"+tables.getRow(i).table;
}
}
sql.listeTables();
//sql.listeTables(db);
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////
// executer toute requete sql.
function requetesql(qry){
sql.onResult = function(rs){
if (rs.isError()){
Resultats.text = rs.getError();
return;
}
if (rs.rowCount == 0){
Resultats.text = "Aucun resultat";
} else if (rs.rowCount > 0){
Resultats.text = "Données chargés";
Resultats.text += "\nRésultat de votre requête : ";
for (var i=0; i<rs.rowCount; i++){
Resultats.text += "\n\tRS "+(i+1);
for (var j=0; j<rs.columnNames.length; j++){
Resultats.text += "\n\t\t"+rs.columnNames[j]+" : "+rs.getRow(i)[rs.columnNames[j]];
}
}
} else if (rs.success == true){
Resultats.text = "Requête éxécuté avec succes !";
}
}
sql.execute(qry);
}

listerlesbase_btn.onRelease = listerlesbase;
listerlestables_btn.onRelease = listerlestables;
requetesql_btn.onRelease = function(){
requetesql("select * from table1");
}
insertsql_btn.onRelease = function(){
if (sql.type == "mysql"){
var q = "insert into table1 set login='";
q +sql.format("c'est + - * / comment ?"racontes % moi");
q += "'";
} else {
var q = "insert into table1 (login) values ('";
q +sql.format("c'est + - * / comment ?"racontes % moi");
q += "')";
}
requetesql(q);
}


//////////////////////////////////////////////////////////////////////////////////////////////////////////
// optionnellement definisé une fonction pour l'activité du serveur.
sql.onActivity = function(etat){
trace ("activité : "+etat);
}
_benjy
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
ohlalala, t'es pas un peu fous de tt copier comme ca ...
c koi le prob plutot que dire que ca marche pas, dis où, quand et comment ...
moi elle marche partout cette class ...
vincseize
Messages postés
114
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
28 mars 2010

excuse , effectivement c est un peu brute de ma part !

en fait c'est comme fonetiklilian au dessus qui a eu le meme probleme que moi apperement :

ca me fait 'indefini' comme reponse à chaque fois ...


je te file mon msn si tu le souhaites !
_benjy
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
Nan mais fo regarder avant de dire que ca marche pas
dans ton copier collé de malade là haut t'as ecrit :
new Sql("http://localhost/RD/mysql/flashkod_classMysql/sql.php/");
tu crois vraiment que le / a la fin il gene pas ????
les erreur indefini c'est kan la class ne trouve pas le gateway généralement
et la avec le slashe a la fin, cherche pas plus loin !!!
vincseize
Messages postés
114
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
28 mars 2010

excuses moi, effectivement je ne devrais pas dire que cela ne marche pas, mais plutot que je n arrive pas à le configurer ...

en ce qui concerne
new Sql("http://localhost/RD/mysql/flashkod_classMysql/sql.php/");

j avais déja essayé justement sans le slash, et c'était pareil ...

- je suis bien en MX2004
- je ne fais aucun import d as au moment de la compilation
- mon serveur apache est à jour ...

je vais voir du côté du gateaway.php , bien vérifier qu il a les droits en chmod 777 déja ...
_benjy
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
a noté que c'est pour une version PHP 4.2.0
si tu est en version supp il faut modifier le sql.php pour qu'il récup bien les variables en POST envoyé par Flash
$variable ne marche pas en PHP > à 4.2.0
il faut $POST["variable"]
ou mettre un script qui met en global les vars de POST
++
_benjy
vincseize
Messages postés
114
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
28 mars 2010

WAZAAAAAA ca marche ...
effectivement il faut que la version d apache soit inferieur à 4.2.0,
donc j ai reinstaller un easyphp 1.6

bravo benjy ...
a voir si j arrive à modifier le php , pour qu il recupere TOUTES les variables en POST à moins que t ai déja prévu une version pour apache > 4.2

thx je met 10/10

PS: préciseras que c'est pour une version anterieur à php 4.2 dans l entête? tu te ramasseras plus de 10/10 encore
ombr0
Messages postés
21
Date d'inscription
samedi 30 avril 2005
Statut
Membre
Dernière intervention
6 décembre 2008

Je suis désoler d'avoir copier cette source lol j'ai créer une version plus simple , qui est déstiné a ce qui veulent aprendre :P sans rancunes ???
_benjy
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
LOL mais nan ss rancunes, juste ca me fait rire ... :)
la_ptite_85
Messages postés
49
Date d'inscription
dimanche 27 juin 2004
Statut
Membre
Dernière intervention
2 juillet 2006

J'essaye de m'en servir...mais c'était peut-être un peu ambitieux de mettre cette source en niveau débutant!!! pasque moi je débute, et je pige pas grand chose lol
_benjy
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
l'uilisation en est pourtant simple, comme l'uilisation d'un objet son
bon c sur faut quelque notions d'AS2 (de prog objet surtout), mais sinon c pas tres compliqué (a utiliser pas forcement a refaire LOL)
je reste a dispo pour les questions d'utilisation
++
(ps : en mp, si ca vaut pas le coup pour tt le monde)
13wxcvbn
Messages postés
8
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
20 mars 2006

Si t a dispo alors profitons en ....toujours le pb de "indefinie" apparament j'ai pas le niveau...moi je veux rester avec PHP 1.8 donc g voulu faire comme t'as dit avec le POST mais j'y arrive pas plus...ou encore g tenté de passer $typebase, $sqldbname, $sqlpass, et $sqlloginb en dur mais marche pas non plus....
As tu un eclaircissement a me fournir c serait
cool????
_benjy
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
j'utilise plus cette class depuis des plombes en fait, je m'en suis fait un composant (trouvable là : http://composants.kolapsis.net)
pour php c du php 4 mais bon en mm temps c juste l'utilisation de mysql_... existant aussi sous 1.8
pour récup les var je sais que sur certain serveur (selon la config) faut mettre
extract($HTTP_POST_VARS);
pour recup les données envoyer au script
++
gfpl
Messages postés
172
Date d'inscription
samedi 11 août 2012
Statut
Membre
Dernière intervention
9 avril 2011

super source vraimment rien a dire
ke cherchias justement ca un grand merci pour ca et le boulot que ca t as demander

perso parfois j ai le probleme pour la recuperation de variable et le seul truc qui passe c est loadVariablesNum("/index.php?page=login&username="+(username)+...

sinon ca passe pas
victorcoasne
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
3
10/10 !
ajoucadou
Messages postés
4
Date d'inscription
dimanche 8 avril 2007
Statut
Membre
Dernière intervention
15 octobre 2008

Ce script a l'air bien, mais j'ai aussi l'erreur "indéfini"... et je suis en version php > 4.2
Quelqu'un aurait il le fichier sql.php mis à jour ?
proffial
Messages postés
35
Date d'inscription
mardi 20 mai 2003
Statut
Membre
Dernière intervention
23 juillet 2009

Bonjour,
bravo pour le script,

Cependant, y'as des trucs qui me choquent dans ton exemple.

Moi personnellement, je ferais la chose suivante :

Création d'une classe mere : Connect_SQL
avec les infos suivante
# sql.type = "odbc"; // mysql ou odbc.
# sql.host = "localhost"; // uniquement pour mysql
# sql.login = "root";
# sql.mdp = "";
....

avec potentiellement les fonctions suivante
# sql.listeDB(); // lister les base du server mysql uniquement
# sql.listeTables(); // lister les tables d'un db
....

Ensuite je réaliserait une classe fille sql_order
qui hérite tout de la classe mere,
Comme çà on a pas a tout redefinir a chaque fois que l'on créé un Ordre SQL

et je definierais les fonctions suivante pour la classe sql_order
# order > l'ordre SQL
# error > pour la gestion de l'erreur
# rowCount > nb resultats
# columnCount > nb colonnes
# columnNames > tableau contenant les entetes du resultat
# columnTypes > renvois un tableau des types de champ de la base
# getRow(numRow)
# getCells(numRow,columnNames)

Voir le top du top créer a nouveau une classe Row
avec en parent la classe Order

pour pouvoir faire un code dans le genre

var sql_order:Sql_order = new Sql("http://localhost/_FlashPhp/sql_order.php");

sql_order.order =('SELECT id,name,champ4 from tatable');

for $i = 0 to sql_order.rowCount
{
echo sql_order.getrow($i).getcolumname('champ4');
}

voir un
for &i = 0 to sql_order.rowCount
{
for &j = 0 to sql_order.columnCount
echo sql_order.getrow(&i).getcolumnum(&j);
}

Si t'arrives a faire ca, ta source sera le top du top, et risque d'être très utilisée.
_benjy
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
LOL merci bien, mais si tu regardes de plus près cette source date de 2004, et est en AS2 (héritage au balbusiment dans flash).
Et now en AS3, c'est tout autre chose, peux être que je mettrais un jour ma classe sql AS3...
++
_benjy
proffial
Messages postés
35
Date d'inscription
mardi 20 mai 2003
Statut
Membre
Dernière intervention
23 juillet 2009

;-) ca tombe bien, je paris que tu ne savais pas quoi faire de ton premier janvier ;-)
_benjy
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
ouaip voilà, plutot que de faire la fete je vais rester et préparer ca... puis quoi encore LOL
SuperDevy
Messages postés
842
Date d'inscription
dimanche 24 novembre 2002
Statut
Membre
Dernière intervention
2 juillet 2007

C'est du suicide cette source !
1. Login/mdp de la base de données sont accessibles par n'importe qui (une simple décompilation et hop)
2. Elle permet de faire n'importe quelle requête par n'importe qui. "DELETE FROM xxx" par exemple ...

Faut vraiment être fou pour l'utiliser sur un site internet.
gfpl
Messages postés
172
Date d'inscription
samedi 11 août 2012
Statut
Membre
Dernière intervention
9 avril 2011

SuperDevy c'est a titre de demo pour montrer comment faire une requete entre flash sql php

tu peut prendre ces info depuis php ;)
_benjy
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
j'avoue qu'elle soit completement ouverte c'est pas top, mais pour ma défence à l'epoque ou je l'ai faite, il n'y avait qu'un décompileur qui fonctionné, et perso je re-encodais mes swf avec swfencode (ce qui rendez la décompilation impossible)...
mais il est clair que c'est surtout les info de connexion à la db dans le swf qui crainent, now moi je les met plus dans le swf mais juste dans php (que lui on peu pas recup)...
pour finir pas de prob de delete ou autre alter sur mes tables parce que j'ai tjs plusieur user sur mes base de données, dont 1 pour flash qui fait que la lecture...
voilou voilou
++