Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [PHP] Semplificare codice

    Ciao raga questo e' un esempio di codice che ho scritto
    pero' la sezione if - elseif
    mi convince poco,
    qui fortunatamente dovevo controllare
    solo 2 campi, e lo opzioni erano solo 9

    ma questo codice diventa impossibile in caso
    di piu' campi, anche solo 3(pensate a quante opzioni salterebbero fuori) iniziano ad essere un problema

    voi come avreste fatto?

    ciao






    codice:
    <form method="get" action="abc.php">
    <input type="radio" name="pagamento" value="bonifico"> Bonifico Bancario 30 gg d.f.  <input type="radio" name="pagamento" value="ricevuta">  Ricevuta Bancaria 30 gg d.f.
    
    
    <input type="radio" name="pagamentoseconda" value="bonifico"> Bonifico Bancario 30 gg d.f.  <input type="radio" name="pagamentoseconda" value="ricevuta">  Ricevuta Bancaria 30 gg d.f.
    
    
    
    <input type="submit" value="vai">
    </form>
    <?
    if($_GET[pagamento] == "" && $_GET[pagamentoseconda] ==""){
    $a = 1;
    } elseif($_GET[pagamento] == "" && $_GET[pagamentoseconda] == ricevuta){
    $a = 2;
    }elseif($_GET[pagamento] == ricevuta && $_GET[pagamentoseconda] == ""){
    $a = 3;
    }elseif($_GET[pagamento] == "" && $_GET[pagamentoseconda] == bonifico ){
    $a = 4;
    }elseif($_GET[pagamento] == bonifico && $_GET[pagamentoseconda] == ""){
    $a = 5;
    }elseif($_GET[pagamento] == ricevuta && $_GET[pagamentoseconda] == ricevuta){
    $a = 6;
    }elseif($_GET[pagamento] == bonifico && $_GET[pagamentoseconda] == bonifico){
    $a = 7;
    }elseif($_GET[pagamento] == ricevuta && $_GET[pagamentoseconda] == bonifico){
    $a = 8;
    }elseif($_GET[pagamento] == bonifico && $_GET[pagamentoseconda] == ricevuta){
    $a = 9;
    }
    
    switch ($a) {
    case 1 :
    print("a vale 1
    ");
    break;
    case 2 :
    print("a vale 2
    ");
    break;
    case 3 :
    print("a vale 3
    ");
    break;
    case 4 :
    print("a vale 4
    ");
    break;
    case 5 :
    print("a vale 5
    ");
    break;
    case 6 :
    print("a vale 6
    ");
    break;
    case 7 :
    print("a vale 7
    ");
    break;
    case 8 :
    print("a vale 8
    ");
    break;
    case 9 :
    print("a vale 9
    ");
    break;
    }
    ?>
    il mio primo sito
    www.promofit.it
    e di strada da fare ne ho ancora parecchia!!!

  2. #2
    potresti provare ad usare un sistema di codici "ortogonali" ovvero un sistema in cui ogni codice sovrappone diverse informazioni che però è possibile recuperare separatamente (qualcosa di simile all'uso dei flag)

    ad esempio il numero 427 potrei interpretarlo come l'insieme di 3 paramentri: 4,2 e 7 che mi danno 3 informazioni indipendenti nonostante siano inglobate in un unico numero. Ciò che è inportante è che ogni paramentro vada da 1 a 9 (si potrebbe usare anche lo 0 ma le cose si complicano)

    Per codificare le info potresti fare così:

    if($_GET[pagamento] == "") $a += 1;
    elseif($_GET[pagamento] == "ricevuta") $a += 2;
    elseif($_GET[pagamento] == "bonifico") $a += 3;

    if($_GET[pagamento] == "") $a += 10;
    elseif($_GET[pagamento] == "ricevuta") $a += 20;
    elseif($_GET[pagamento] == "bonifico") $a += 30;

    così i vari casi daranno come valore di $a: 11,12,13,21,22,23,31,32,33


  3. #3
    Sei un grande,
    non avevo pensato a questo

    Ti sono debitore per il futuro
    per ora tengo il codice che ho scritto sopra
    visto la semplicita' delle cose (solo 2 campi)

    Ma se in futuro i campo dovessero diventare di piu'
    ora so' che non dovrei impazzire a scrivere il codice

    Grazie mille


    P.s: Quasi dimenticavo, ora fo' un bel copia incolla
    il mio primo sito
    www.promofit.it
    e di strada da fare ne ho ancora parecchia!!!

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.