Newsgroup: it.comp.www.php
Titolo: [Collaboriamo] Progetto Classe Easy-DB - Lunghetto

1) Premesso che MySQL non è effettivamente un dabase relazionale (inteso
come una struttura che permette di memorizzare le relazioni
in modo stabile nel motore
2) Premesso che mi sono rotto le scatole di dover scrivere form html e le
solite UPDATE INSERT DELETE per fare sempre le solite cose con i siti, mi
son detto:
Perchè non mettere in piedi una classe di funzione per:
1) Generare i form HTML per inserire, aggiornare, cancellare dati
2) Generare le query relative in modo sicuro (addslashes, valutazione di
campi, etc etc)
3) Generare pagine HTML per visualizzare risultati e soluzioni
4) Generare automaticamente i file di configurazione (vedi dopo)
Per 1 e 3 (grafica)
Data la 'forza' con la quale i CSS stanno prendendo piede, penso che si
possa molto semplicemente andare ad abbattere tutta la parte grafica su
questi ultimi limitando la generazione del codice HTML (form e pagine dei
risultati) a semplici <H1> etc etc, identificando gli oggetti con gli ID in
modo che i designer possano lavorarci senza problemi.
Per 2
Beh non sarebbe poi così difficile: avendo dei files di configurazione in
cui memorizzare le relazioni tra tabelle, le query si creerebbero con delle
funzioni standard
Per 4
Il tutto sarebbe strutturato su file XML che memorizzerebbero:
a) Il database con i vari user/pass/host
b) I nomi delle tabelle (autofetch)
c) Le correlazioni (autofetch)
d) I campi 'hidden', i campi 'show', i campi 'secret'
4a) una cosa tipo <database user="xxxx" pass="xxxx" host="xxxx">
4b) Il concetto di autofetch è facile. una volta che il sistema
autoconfigurante ha i dati di accesso ad un db, legge da solo i nomi delle
tabelle ivi esistenti - se non le trova sarebbe carino un sistema che
permetta di strutturare un db con tabelle in relazione
4c) Se ci sono tabelle, provare (ripeto, provare) a mettere in correlazione
colonne di tabelle diverse (spesso un id_fuffa lo si ritrova in più tabelle
e spesso è il campo che crea relazioni)
d) Specificare (con delle radiobutton) se i campi sono 'hidden' (di solito
colonne di sistema, tipo le TimeStamp), 'show' (campi tipo
'cognome','nome','via' etc etc) o campi 'secret' come le user/pass di
accesso. - raggruppando quindi le colonne non per il tipo di colonne, ma per
l'uso che se ne può fare.
Questo dovrebbe permettere di avere abbastanza informazioni per poter
scrivere una classe che non solo crei le SQL con già le varie relazioni, i
vari campi backslash-ati (se necessario, in funzione del tipo di campo) e
che geri l'html per inserire i form per input e output dei dati....
Ora mi domando:
1) Che voi sappiate, esiste un progetto di questo di questo tipo già ?
2) Qualcuno ha voglia di partecipare ?
Ciao
Julien

 2) Qualcuno ha voglia di partecipare ?
Eccomi !!
ciao
Mauro


Mitico Mauro! :-)
Conosci CVS (Current Version System) per i software ?
Usi degli IDE per programmare ?
Preferiresti studiare le funzioni che generano l'HTML, che generano le query
SQL oppure CSS o ancora vedere la fase di installazione ?
Io ho già pronto qualche esempio di file XML (molto grezzo) per i file di
configurazione. Hai mai lavorato con un parser (seriale o DOM)?
(sempre ci convenga usare un parser xml per leggere dei file di
configurazione di poche righe).
Ciao :)
J

1) Che voi sappiate, esiste un progetto di questo di questo tipo già ?
Non ne ho idea

 ($table_1.$field_1 = $table_2.$field_1)")?
Esattamente - un sistema che, tramite correlazioni definite nei file XML di
configurazione, crei da solo le query


cut
dimenticavo
gufo_rosso AT 
libero.it
 (no spam)

configurazione, crei da solo le query
Mi sfugge un po' questo concetto di "correlazioni definite nei file
XML".

 configurazione di poche righe).
Io ho pronta una classe "object-relational adapter" che mappa i campi di 
una tabella con le variabili di classe ...
Esempio d'uso:
$qr = $sys_db_impl->db_query("select * from persona");
while ($opt = $sys_db_impl->row_next($qr))
	{
	echo $opt['nome'].'<br>';
	echo $opt['cognome'].'<br>';
	...
	}
Altro esempio d'uso:
$pers = new persona();
$pers->nome = 'cippa';
$pers->cognome = 'lippa';
$pers->insert(); // oppure $pers->update();
Una altra cosa bella della classe e' che per cambiare db (per il momento 
solo mysql o postgres) basta cambiare *una riga* in un file.
Poi sto approfondendo alcune funzioni per automatizzare diverse cose, ma 
  e' un po' lungo da scrivere adesso ...
se si comincia a lavorare approfondiamo il discorso.
ciao
Mauro

Scusate se mi intrometto, ma le classi ADO, non fanno esattamente questa
cosa ?
http://php.weblogs.com


ciao
gufo rosso

(il manuale lo ho letto ma non ho afferrato il concetto)
Nemmeno io ho mai afferrato molto bene i concetti base dell'OOP, sarà
che ho sempre usato linguaggi a eventi (vedi VB).
Cmq l'occasione mi sembra ghiotta, se non altro per cominciare a
capirci qualcosa in più.
Insomma ci si può provare, no?


Appunto
resta il fatto di dove salvare le query per usarle
io pensavo in una tabella del database stesso
per poi scriverle in un file da usare
file0.php
<?
# this file is query generated fwrite
$sql[0] = "SELECT * from prefix_ut_utenti WHERE ut_unique
='".$_POST['qualcosa']."'";
?>
se scrivo include("file".$query_id.".php")
il php lo include ed esegue la query (sto usando la classe di php nuke su
altri db)
mi sono fatto una cultura sta notte :-\
se si usa xml bisogna procurarsi un parser per xml, se usiamo direttamnte il
php
per creare file .php (anche se si puo avere qualche problemino di sicurezza
ma si puo risolvere)
del tipo
scrivo una query in questo modo e la salvo nel db
SELECT * from prefix_ut_utenti";
$filename = "exploit.php";
$handle = fopen($filename, 'w+');
fwrite($handle, "<? echo $_SERVER['PHP_SELF']; ?>");
fclose($handle);
$sql[0] .= WHERE ut_unique ='".$_POST['qualcosa']."'";
quando mi genera il file con la query mi genera anche il file
exploit.php (che puo fare qualsiasi cosa)
cosa che puo essere comoda per fare pagine nuove
rimane solo di come organizzare la cosa

quando si inizia ?

 pregiudiziale, vero?  :)
No, anche la tua ragazza che non sa nulla di programmazione č ben accetta
:-P


:-P
Ragazza niente, mi spiace, ma ho un amico piuttosto peloso, circa sui
90 kg e con due tatuaggi sulle braccia.
Fa lo stesso?  :)

 Fa lo stesso?  :)
Per me si, ma non so per gli altri :-P

Qualcuno con la mia stessa intuizione!
Io nel mio piccolo ho già provveduto a farmi una classe che alleggerisse 
tutti i "soliti compiti noiosi", come:
- connessione al database e relativa chiusura;
- contatore di risultati nelle query;
- estrazione dei risultati delle query;
La classe è ancora un pò grezza...però voglio ottimizzarla e ampliarla.
Inoltre ne sto prevedendo una per la gestione degli errori, ma è ancora 
tutta teoria...
Ad ogni modo, se hai bisogno di un collaboratore, tienimi presente!
- RAPPERZ -


 - RAPPERZ -
Ti tengo eccome!!
tieni a mente i post e partecipa... dove stai tu ? (città)
Ciao
J

Progetto aperto!
 
https://sourceforge.net/projects/sqlml/