Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208

    is_string su campi multipli

    Salve,
    sto scrivendo il codice ad oggetti per il controllo degli errori e la successiva iscrizione a database di un form da ben 43 campi.

    Visto che tutti i check necessari si racchiudono in 6 tipologie di possibili errori, ho pensato che potesse essere utile (sia per motivi di tempo che di prestazione nel caricamento dello script) creare solamente questi 6 check per poi provare ad assegnarli più volte in base alla variabile $_POST corrispondente.

    Il problema si pone proprio qui, ovvero...al passaggio delle funzioni native is_string e strlen, io ho la possibilità di passare un solo parametro per utilizzo, cosa che mi costringe a riscrivere un controllo pressocchè identico per mediamente 7 campi a singola tipologia. Come potrei rendere dinamico questo passaggio?


    P.S chiarisco: anzichè ripetere per 43 volte l'implementazione della funzione checkQualcosa simile a questa:
    Codice PHP:
    public function checkStringa() {        
                    if(
    is_string($this->cognome) && ctype_alnum($this->cognome) && (strlen($this->cognome) <= 10) && (strlen($this->cognome) >= 4)) {
                            
                            
    $this->clean['cognome'] = htmlentities($this->cognomeENT_QUOTES);
                    }
                    else {
                            
    $this->trackErrorMsg('cognome');
                    }
            } 
    volevo trovare il modo di passare alle due funzioni un parametro che racchiudesse già in sè stesso i valori che richiamano il check. Ma francamente non capisco se devo usare uno switch o qualche altra formula. Purtroppo non sono ancora al livello di ricordare TUTTE le opzioni e devo dire che a tratti mi perdo.
    Ultima modifica di Korenaar; 19-02-2014 a 19:49

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Ok sono andato avanti per conto mio, il quesito è in parte cambiato.
    Sostanzialmente implementerò uno switch che analizzera il valore di $_POST e porterà al check e al corrispettivo eventuale messaggio d'errore.

    Il problema che mi resta (di comprensione) è: come fare ad analizzare il valore di $_POST con un'espressione dinamica anzichè menzionando tutti i possibili valori con singole espressioni?

    per capirci:

    1) il form invia 43 $_POST['valore']
    2) la funzione che mi serve rileva il 'valore', ne codifica la natura ed avvia (nella classe superiore non menzionata) il checkStringa se è un campo da scrivere a lettere, il checkTelefono se è un campo telefonico, il checkMail se è un campo mail etc.etc.
    3) ho capito che per far questo devo comunque racchiudere i gruppi di value all'interno di variabili, le quali però (appunto) devono prendere valore solo e unicamente nei casi specificati, fermo restando che i vari check si attiveranno comunque tutti dato che il form va compilato per intero.

    Spero non sia troppo ingarbugliata come spiegazione.

  3. #3
    io sinceramente non ho capito nulla :F diciamo che tu fai un post con due campi, EMAIL e ETA, dove email è una stringa e ETA un numero, vuoi fare uin qualcosa di dinamico che faccia il check di questa tipologia di valorE?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Quote Originariamente inviata da Santino83_02 Visualizza il messaggio
    io sinceramente non ho capito nulla :F diciamo che tu fai un post con due campi, EMAIL e ETA, dove email è una stringa e ETA un numero, vuoi fare uin qualcosa di dinamico che faccia il check di questa tipologia di valorE?
    No, facciamola più semplice:
    1) ho un form con 5 campi, 3 dei quali sono alfanumerici e 2 numerici.
    2) invece di implementare 5 controlli, uno per campo, vorrei implementarne due (per usare meno codice), ovvero uno per gli alfanumerici e uno per i numerici, e assegnare alle due macrocategorie il campo corrispondente. Come faccio?

    3) altra piccola sottolineatura: non devo fare un controllo sulla natura del campo, io chiaramente già so che dal campo Telefono deve arrivare un numerico. La cosa che mi interessa è dichiarare al metodo di controllo corrispondente che il campo Telefono fa parte di quelli in cui il controllo si attiva.


    Va da se, su 5 campi forse non vale la pena, ma io sono di fronte ad un form che non finisce più in questo momento.
    Ultima modifica di Korenaar; 20-02-2014 a 18:02

  5. #5
    continuo a guardare perplesso lo schermo... cmq facciamo una prova:

    Codice PHP:

    $campiString 
    = array('nome','cognome','email','telefono'); //faccio presente che un numero di telefono non è un numerico ma un testo
    $campiNumber = array('eta');

    //soluzione 1:

    foreach($_POST as $key => $value)
    {

    if(
    in_array($key,$campiString)){

    //faccio il controllo per le stringhe

    }elseif(in_array($key,$campiNumber)){

    //faccio il controllo per le stringhe

    }else{

    //non faccio nulla?

    }

    }

    //soluzione 2 sarebbe al contrario, cicli sui due array e vedi nel $_POST... volendo puoi fare in atlri 10 modi diversi 
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Uhm...anche se non mi sono spiegato bene, forse una mano me l'hai data, faccio qualche prova e ti ridico.
    Sul fatto che il numero non è un campo number hai ragione, ho superficialmente fatto confusione, nel controllo che vado ad implementare successivamente dovrò verificare che siano effettivamente solo numeri.

    Sull'ultimo else, non ho dato indicazioni io, sostanzialmente questo sistema dovrebbe verificare il form mandato in submit e se trova un errore ristampare a video il form con i dati inseriti notificando l'errore e reiterando al nuovo submit il controllo. Solo in ultimo deve portare i dati dentro un DB che è già approntato.

    Quest'ultima fase come problema me lo devo ancora porre, considera che vengo da una preparazione sul procedurale vecchia di anni e ora sto programmando una cosa abbastanza grossa in OOP, per cui mi manca sia una certa memoria sulle funzioni native, sia una preparazione e una continuità sull'utilizzo dell'OOP, motivo per cui non sono riuscito ad essere chiaro.

    Grazie intanto! Provo questo tipo di suggerimento accordandolo all'OOP costruita e vedo come va!

  7. #7
    tanto per prendere spunto:

    http://symfony.com/it/doc/current/bo...ion-raw-values

    http://symfony.com/it/doc/current/book/forms.html ( in particolare l'esempio a fondo pagina )
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Grazie mille, nel frattempo ho capito che devo entrarci concettualmente dentro questa cosa, o non risolverò nulla.
    Avevo preso spunto da alcuni esempi in rete per tirare giù questa cosa, ma è evidente che non solo mi sono complicato la vita, ma non ho neanche risolto il problema.

    Sono ripartito da zero con la mia testa, mantenendo vivo parte del codice che è comunque valido, ma sto ricostruendo il sistema secondo la mia testa che è meglio. Mi prendo comunque i tuoi consigli preziosi e ti ringrazio vivamente per il tempo speso qui a comprendere e rispondere

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.