Newsgroup: it.comp.www.php
Titolo: Presentazione e richiesta di confronto

Buongiorno a tutti, è la prima volta che vi scrivo. Ho una preparazione
nella programmazione in php che si può definire da autodidatta basata
sull'esperienza fatta nella realizzazione di alcuni siti. Sono certo di
non aver utilizzato le tecniche migliori anche per la mancanza di un
confronto diretto con altre persone che usino il linguaggio. Spero di
iniziare a frequentare più assiduamente questo gruppo ora che l'ho
scoperto e di colmare le mie inevitabili lacune anche grazie a voi.
magari tra qualche tempo potrò aiutare io qualcuno alle prime armi.
Approfitto della presentazione per sottoporvi una prima richiesta
d'aiuto o meglio di confronto.
Sto scrivendo la classica applicazioncina che deve prendere i dati da un
form e scriverli in una tabella mySql.
La mia idea è quella di crearmi una pagina php richiamabile da tutti i
punti del sito in cui viene richiesta una modifica alla tabella. Questo
però significa che potrei un numero di campi diversi a seconda della
pagina di partenza.
Ad esempio, nel caso di un'anagrafica utente ci potrebbe essere la
pagina di inserimento dell'indirizzo che richiede di modificare i campi
nome, cognome, indirizzo, cap, località e provincia, mentre, se si
arriva dalla pagina di modifica password, l'unico campo da modificare
sarà appunto il campo password.
Spero di essermi spiegato.
Quello che sto cercando di realizzare è una funzione alla quale passare
l'array $_POST derivante dal form e che torni una stringa contenente i
campi da inserire, così da avere qualcosa tipo:
        $ilmioarray = $_POST;
        $campi = createFldStringFromForm($ilmioarray);
        $sql = "REPLACE INTO utenti SET $campi";
All'inizio pensavo che la cosa fosse facilissima. In pratica non si
tratta di fare altro che scorrere una serie di elementi di un array e
disporre nel modo giusto i nomi dei campi e il loro valore.
Realizzando la funzione mi sono scontrato con tutte quelle cose che
prima di metterle in pratica non ti vengono in mente.
Ad esempio, non mi ero preoccupato che nella stringa alcuni campi (i
char) dovessero essere inseriti tra apici mentre altri (gli int) non ne
hanno bisogno. Come gestire questa cosa? Mi serve l'informazione di
quali campi sono int e quali char.
Ho pensato che potrei mettere dentro alla funzione un array descrittivo
dei campi presenti nella tabella:
function createFldStringFromForm($arr)
{
        // array descrittore della tabella mySql        
        $campi = array(
                        array("id", "int"),
                        array("ragsoc", "char"),
                        array("indirizzo", "char"),
                        array("cap", "char"),
                        array("localita", "char"),
                        array("provincia", "char"),
                        array("telefono", "char"),
                        array("fax", "char"),
                        array("email", "char"),
                        array("password", "char")
                        );
        ...
}
Avendo questo array, potrei isolare i soli campi di $arr (i campi del
form) presenti nella tabella. Questo è necessario anche perché in $_POST
ci sono anche i campi del form che non c'entrano niente con l'archivio,
ad esempio il pulsante Submit.
Come fare? Ho pensato all'utilizzo delle funzioni in_array o
array_search ma prima di continuare con il sottoporvi codice avrei
voglia di confrontarmi con chi ha più esperienza di me per capire se sto
seguendo una strada giusta o, magari, mi sto complicando inutilmente la
vita.
Spero di essere stato chiaro e di non avervi annoiato.
Ciao a tutti
-- 
Stefano

Io creerei una funzione a cui passare ... ad esempio:
function aggiorna
(nome_database,nome_tabella,valore_chiave_primaria,array_valori)
nella funzione dovresti recuperare la struttura della tabella (array nomi
e tipi di campo, chiave primaria ecc.), e con queste info crearti la
stringa di query UPDATE.
Consideralo uno spunto, perchè è + facile a dirsi che a farsi ... fammi
sapere.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 sapere.
Sě, č una buona idea che comunque prende le cose a un livello superiore.
Nello specifico io sono impegnato nella seconda parte, quella in cui
devo recuperare la struttura della tabella e crearmi la stringa.
E' un po' difficile spiegare a parole cosa sto facendo e non mi pare il
caso di postare il codice sul newsgroup; appena ho qualcosa di
funzionante lo metto su una pagina web e magari lo commentiamo insieme.
Ciao, grazie
-- 
Stefano