Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1

    IF su coppie campi: come organizzarle

    In un form ho 4 campi particolari:
    opzione1 opzione2
    opzione3 opzione4

    Nel processo al form, su questi 4 campi debbo eseguire questi controlli:
    tutti e quattro possono essere vuoti
    non possono contenere valori tutti e quattro:
    ma possono contenere valori a due a due:
    o la coppia 1 e 2
    o la coppia 3 e 4
    se uno dei due campi contiene un valore alche l'altro deve essere valorizzato.

    Gli altri campi del form non mi preoccupano.

    Sembra banale, ma non so come combinare le varie IF e/o ELSEIF che mi servono

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    Supponi che 'e' sia un a funzione che controlla se una variabile è vuota e (o1, o2, o3, o4) contengano i valori delle rispettive opzioni (o1 contiene opzione1, o2 contiene opzione 2...)

    I 3 casi in cui tutto va bene sono:

    1. (e(o1) && e(o2) && e(o3) && e(o4)) // tutte le opzioni vuote
    2. (!e(o1) && !e(o2) && e(o3) && e(o4)) //opzioni 1 e 2 compilate, opzioni 3 e 4 vuote
    3. (e(o1) && e(o2) && !e(o3) && !e(o4)) //opzioni 3 e 4 compilate, opzioni 1 e 2 vuote

    Quindi essendo 3 casi indipendenti, cioè se se ne verifica 1 non si può verificare nessun altro allora congiungendoli con un OR sei sicuro di trovarti in uno dei casi in cui la compilazione è ok.
    Altrimenti qualcosa non è andata bene.


    Codice PHP:
    if((e(o1) && e(o2) && e(o3) && e(o4)) || (!e(o1) && !e(o2) && e(o3) && e(o4)) || (e(o1) && e(o2) && !e(o3) && !e(o4))) echo "ok";
    else echo 
    "ko"

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    o anche:

    Codice PHP:
    if ($o1 && $o2) {
      if (
    $o3 || $o4) {
        
    // seconda coppia spaiata: ERRORE
      
    } else {
        print 
    'OK!'// prima coppia
      
    };
    } else {
      if (
    $o1 || $o2) {
        
    // prima coppia spaiata: ERRORE
      
    } else {
        if (
    $o3 && $o4) {
          print 
    'OK!'// seconda coppia
        
    } else {
          print 
    'OK!'// tutto vuoto
        
    };
      };
    }; 
    che naturalmente può ridursi a:
    Codice PHP:
    if ($o1 && $o2) {
      if (
    $o3 || $o4) {
        print 
    'ERRORE!';
      } else {
        print 
    'OK!';
      };
    } else {
      if (
    $o1 || $o2) {
        print 
    'ERRORE!';
      } else {
        print 
    'OK!';
      };
    }; 
    o anche:
    Codice PHP:
    print ($o1&&$o2)?(($o3||$o4)?('ERRORE'):('OK')):(($o1||$o2)?('ERRORE'):('OK')); 

  4. #4
    Grazie per i suggerimenti.
    Per quanto semplice il problema, senza le vostre dritte non credo che stavolta sarei arrivato molto facilmente alla soluzione.
    Ora li sto testando, ma mi sembra che in qiello di eiyen la seconda coppia non venga valutata correttamente, mentre in quello di longilineo occorre cambiare
    codice:
    if((e(o1) && e(o2) && e(o3) && e(o4)) || ...........) \\ tutti pieni
    in
    codice:
    if((!e(o1) && !e(o2) && !e(o3) && !e(o4)) || ...........) \\ tutti vuoti

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    non so... io l'ho testato con varie combinazioni e mi pare funzioni, però controlla pure...

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    e lo devi immaginare come $opzione1 == "" , quindi e è vero quando vuoto mentre !e è vero quando non è vuoto. L'if controlla tutte le condizioni buone (tutti vuoti, solo la prima coppia non vuota, solo la seconda coppia non vuota). Con il tuo cambiamento diventerebbe tutti pieni, solo prima coppia non vuota, solo seconda coppia non vuota.

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Nel primo più esteso che ho messo abbiamo:

    Se la prima coppia è completa...
    ...se anche nella seconda c'è qualcosa: errore
    ...altrimenti OK (prima coppia completa)
    ...altrimenti... (prima coppia non completa)
    ...se c'è qualcosa nella prima coppia: errore (non è completa)
    ...altrimenti OK (c'è qualcosa nella seconda o niente)

    Forse è sfuggito un controllo sull'incompletezza della seconda coppia... un ulteriore if allora... :)

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    p.es.

    Codice PHP:
    if (!$o1 && !$o2 && !$o3 && !$o4) {
      print 
    'OK: tutti vuoti';
    } else {
      if ((
    $o1 && $o2) && (!$o3 && !$o4)) {
        print 
    'OK: coppia 1';
      } elseif ((!
    $o1 && !$o2) && ($o3 && $o4)) {
          print 
    'OK: coppia 2';
      } else {
        print 
    'ERRORE';
      };
    }; 

    ...verificare :) (in linea con il primo post che hai avuto in risposta, solo per esteso)

  9. #9
    Vedo con piacere che mentre preparavo una pagina dimostrativa degli esempi, voi avete lavorato anche per me.
    Quel che ho preparato è visibile in questa pagina e sono fermo prima delle ultime repliche.
    Vorrei far notare come si comporta il secondo esempio coi 2 diversi codici.

  10. #10
    Intanto completo il test con l'ultimo codice di eiyen.
    Vista l'ora spero di farcela per stasera
    Grazie per i suggerimenti.

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.