Parte di codice

bismark2005

Utente Attivo
8 Mar 2011
70
0
0
Salve ragazzi, qualcuno può darmi chiarimenti sul seguente pezzo di codice?

PHP:
           } else {
                        $strValueList = "";
                        $strQuery = 'INSERT INTO "' . $this->strTableName . '"(';
                        foreach ($this->arRelationMap as $key => $value) {
                                eval('$actualVal = &$this->' . $value . ';');
                                if (isset($actualVal)) {
                                         $strQuery .= '"' . $key . '", ';
                                         $strValueList .= ":$value, ";
                                };
                        }
                        $strQuery = substr($strQuery, 0, strlen($strQuery) - 2);
                        $strValueList = substr($strValueList, 0,
                                        strlen($strValueList) - 2);
                        $strQuery .= ") VALUES (";
                        $strQuery .= $strValueList;
                        $strQuery .= ")";
                        unset($objStatement);
                        $objStatement = $this->objPDO->prepare($strQuery);
                        foreach ($this->arRelationMap as $key => $value) {
                                eval('$actualVal = &$this->' . $value . ';');
                                if (isset($actualVal)) {
                                        if ((is_int($actualVal)) || 
                                            ($actualVal == NULL)) {
                                                $objStatement->bindValue
                              (':' . $value, $actualVal, PDO::PARAM_INT);
                                        } else {
                                                $objStatement->bindValue
                              (':' . $value, $actualVal, PDO::PARAM_STR);
                                        };
                                };
                        }
                        $objStatement->execute();
                        $this->ID = $this->objPDO->lastInsertId
                                                 ($this->strTableName . "_id_seq");
                }
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
PHP:
} else {
 $strValueList = ""; 
                       //dichiara chiavi e valori dell'insert into
                        $strQuery = 'INSERT INTO "' . $this->strTableName . '"(';
                         //li cicla per differenziarli 
                        foreach ($this->arRelationMap as $key => $value) { 
                               //eval inutile $actualVal = &$this->{$value};
                                eval('$actualVal = &$this->' . $value . ';'); 
                                if (isset($actualVal)) { 
                                         $strQuery .= '"' . $key . '", '; 
                                         $strValueList .= ":$value, "; 
                                }; 
                        } 
                      //fa alcune modifiche per togliere le ultime virgole
                        $strQuery = substr($strQuery, 0, strlen($strQuery) - 2); 
                        $strValueList = substr($strValueList, 0, 
                                        strlen($strValueList) - 2); 
                        $strQuery .= ") VALUES ("; 
                        $strQuery .= $strValueList; 
                        $strQuery .= ")"; 
                       //resetta l'ultimo statement e prepara una nuova query
                        unset($objStatement); 
                        $objStatement = $this->objPDO->prepare($strQuery); 
                      //cicla tutti i parametri per renderli sicuri
                        foreach ($this->arRelationMap as $key => $value) { 
                               //eval inutile $actualVal = &$this->{$value};
                                eval('$actualVal = &$this->' . $value . ';'); 
                      //controllo che è settato il valore, controllo se è un numero intero o una stringa e li lega alla chiave
                                if (isset($actualVal)) { 
                                        if ((is_int($actualVal)) ||  
                                            ($actualVal == NULL)) { 
                                                $objStatement->bindValue 
                              (':' . $value, $actualVal, PDO::PARAM_INT); 
                                        } else { 
                                                $objStatement->bindValue 
                              (':' . $value, $actualVal, PDO::PARAM_STR); 
                                        }; 
                                }; 
                        } 
                       //esegue la query e prende l'ultimo id
                        $objStatement->execute(); 
                        $this->ID = $this->objPDO->lastInsertId 
                                                 ($this->strTableName . "_id_seq"); 
                }

La parte della trasformazione è riassumibile in pochi righi
PHP:
                        $strQuery = 'INSERT INTO "' . $this->strTableName . '"('; 
                        foreach ($this->arRelationMap as $value)  $strValueList .= ":$value, "; 
                        $strValueList = substr($strValueList, 0,  strlen($strValueList) - 2); 
                        $strQuery .= join(',',array_keys($this->arRelationMap)).") VALUES ($strValueList)";

Inoltre poteva modificare i valori direttamente nell'array di relazione e passarlo nell'execute, comunque tende a complicare le cose per me senza contare che servirebbe anche gestire eventuali errori o eccezioni tramite try-catch
 

bismark2005

Utente Attivo
8 Mar 2011
70
0
0
PHP:
} else {
 $strValueList = ""; 
                       //dichiara chiavi e valori dell'insert into
                        $strQuery = 'INSERT INTO "' . $this->strTableName . '"(';
                         //li cicla per differenziarli 
                        foreach ($this->arRelationMap as $key => $value) { 
                               //eval inutile $actualVal = &$this->{$value};
                                eval('$actualVal = &$this->' . $value . ';'); 
                                if (isset($actualVal)) { 
                                         $strQuery .= '"' . $key . '", '; 
                                         $strValueList .= ":$value, "; 
                                }; 
                        } 
                      //fa alcune modifiche per togliere le ultime virgole
                        $strQuery = substr($strQuery, 0, strlen($strQuery) - 2); 
                        $strValueList = substr($strValueList, 0, 
                                        strlen($strValueList) - 2); 
                        $strQuery .= ") VALUES ("; 
                        $strQuery .= $strValueList; 
                        $strQuery .= ")"; 
                       //resetta l'ultimo statement e prepara una nuova query
                        unset($objStatement); 
                        $objStatement = $this->objPDO->prepare($strQuery); 
                      //cicla tutti i parametri per renderli sicuri
                        foreach ($this->arRelationMap as $key => $value) { 
                               //eval inutile $actualVal = &$this->{$value};
                                eval('$actualVal = &$this->' . $value . ';'); 
                      //controllo che è settato il valore, controllo se è un numero intero o una stringa e li lega alla chiave
                                if (isset($actualVal)) { 
                                        if ((is_int($actualVal)) ||  
                                            ($actualVal == NULL)) { 
                                                $objStatement->bindValue 
                              (':' . $value, $actualVal, PDO::PARAM_INT); 
                                        } else { 
                                                $objStatement->bindValue 
                              (':' . $value, $actualVal, PDO::PARAM_STR); 
                                        }; 
                                }; 
                        } 
                       //esegue la query e prende l'ultimo id
                        $objStatement->execute(); 
                        $this->ID = $this->objPDO->lastInsertId 
                                                 ($this->strTableName . "_id_seq"); 
                }

La parte della trasformazione è riassumibile in pochi righi
PHP:
                        $strQuery = 'INSERT INTO "' . $this->strTableName . '"('; 
                        foreach ($this->arRelationMap as $value)  $strValueList .= ":$value, "; 
                        $strValueList = substr($strValueList, 0,  strlen($strValueList) - 2); 
                        $strQuery .= join(',',array_keys($this->arRelationMap)).") VALUES ($strValueList)";

Inoltre poteva modificare i valori direttamente nell'array di relazione e passarlo nell'execute, comunque tende a complicare le cose per me senza contare che servirebbe anche gestire eventuali errori o eccezioni tramite try-catch

Sto meditando di abbandonare il manuale PHP 6 Guida per lo sviluppatore. Dire che è stata una delusione è poco. Codice molto prolisso nel quale mi ci perdo facilmente. Gli argomenti trattati sono ottimi, ma andrebbero "accomoagnati" con codice meno prolisso e più documentato.

Mi hanno parlato bene di questo manuale: http://www.phpbestpractices.it/

Speriamo non sia un'altra delusione.
 
Discussioni simili
Autore Titolo Forum Risposte Data
C Refresh parte di codice pagina php PHP 6
Gozer Abbinare un CSS solo a una parte di codice HTML e CSS 2
R Modificare questa parte del codice PHP 1
D rotella di caricamento che si toglie quando parte il download Ajax 0
L Rendere una parte trasparente Photoshop 3
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
M Mostrare testo (o parte di esso) in base a utente PHP 0
R Piacere di far parte di questa community Presentati al Forum 0
M "Principiante photoshop" Eliminazione di una parte di una foto e riempimento "a specchio" Photoshop 4
C Inserire dati tabella leggendo parte di altra tabella con php PHP 13
B Mysql servizio non parte MySQL 0
F includere parte html in index.php PHP 5
maurogiarrizzo È un piacere far parte di questo sito Presentati al Forum 1
ecosito [Wordpress] La barra del menù mi nasconde la parte alta delle pagine WordPress 0
S Aiuto!!!parte del form sparisce PHP 10
A caricare file PHP con Load cambiandone parte del contenuto jQuery 1
F [PRESTAHOP] Come posso creare questa parte del sito? HTML e CSS 7
P mp3 che parte all'avvio del sito in muse cc Webdesign e Grafica 1
pup3770 Puntatore mouse utilizzabile solo in una parte HTML e CSS 2
otto9due Un consiglio teorico e pratico su come sviluppare una parte di un blog PHP 18
L Modo per nascondere una parte variabile di una stringa PHP 0
M sostituire parte di URL con espressioni regolari PHP PHP 8
matteoraggi Controllare le vendite con Analytics e condividerne uan parte con altri Google Analytics 0
A Isolare parte di una stringa PHP 1
A riconoscimento sito da parte di google WordPress 6
K Aggiornare solo una parte di Layout Sviluppo app per Android 0
I Parte di una registrazione con ajax Javascript 1
A consiglio uso jquery php per mostrare parte di un form PHP 6
A consiglio uso jquery per mostrare parte di un form jQuery 0
W Da dove si parte a creare una App?? Sviluppo app per Android 2
F problema migrazione sito joomla ad altro provider - non parte configurazione Joomla 3
H Prendere una parte dall'URL PHP 5
G Con Photoshop come faccio a ritagliare un immagine irregolare e quindi non vedere più la parte ester Photoshop 3
M ritagliare una parte dell'immagine con le librerie gd PHP 0
M Approvazione dell'app da parte di apple? Sviluppo app per iOS 1
D prendere parte di testo da un sito .NET Framework 2
T Esportare una parte dei prodotti inseriti Magento 0
A Visualizzare albero DOM completo oppure Visualizzare Nodi che fanno parte di una Selezione Javascript 6
flavioweb Ultima scansione del sito da parte di google SEO e Posizionamento 2
G Individuare parte di un elemento in un array e ottenere la chiave PHP 7
asevenx auto-incremento id che parte da valore sbagliato MySQL 3
T Ricavare parte pagina web PHP 2
andre9004 Thread non parte dopo handler... come mai? Sviluppo app per Android 0
P non mi parte l' email PHP 38
M Form non parte l'allegato.... PHP 5
F Aggiungere parte di un array multidimensionale PHP 5
max_400 Scaricare file senza la richiesta da parte del browser PHP 10
borgo italia questa parte è facile Discussioni Varie 3
G Accesso sito parte download homepage HTML e CSS 1
X Ricaricare solo una parte della pagina PHP 3

Discussioni simili