• User Attivo

    Moltiplicazione tra form

    Ciao a tutti,
    ho un form che si duplica N volte a seconda dell'input dato dall'utente (n_ripetizione), in questo form ho 3 campi (il terzo mi deve dare la moltiplicazione tra i primi due):

    [PHP]
    <form name="info" method="post" action="?action=go">
    <?
    for($i = 0; $i <= $_POST["n_ripetizione"]; $i ++){
    ?>
    Primo <input type="text" name="primo[]" />
    Secondo <input type="text" name="secondo[]" />

    <?
    if(isset($_GET["mode"]) && $_GET["mode"] == "calcola"){
    $totale* = ($_POST["primo"]* * $_POST["secondo"]);
    ?>
    Risultato <input type="text" name="risultato[]" value="<? echo $totale
    ; ?>" />
    <?
    } else {
    ?>
    Risultato <input type="text" name="risultato[]" />
    <?
    }
    ?>
    <input type="submit" name="calcola" value="Calcola risultato"onclick="this.form.action='?mode=calcola';this.form.submit();" />
    <?
    }
    ?>
    </form>[/PHP]

    Ovviamente non funziona 😄
    dove sbaglio?


  • User

    Ciao,
    Scusa la curiosità ma quel "<input type="text" name="primo[]" />" viene gestito correttamente? io avrei messo una cosa tipo

    <?
    for($i = 0; $i <= $POST["n_ripetizione"]; $i ++)
    {
    echo 'Primo <input type="text" name="primo
    ' . $i . '" />';
    echo 'Secondo <input type="text" name="secondo_' . $i . '" />';
    }
    ?>

    Successivamente visto che sai quanti sono esattamente le ripetizioni puoi raccogliere i dati tramite un'altro for in un array.
    Idea mia eh 😃

    [ps: primo post scusate mal scritture e co. ^_^]


  • User Attivo

    Mi sa che il tuo metodo è simile al mio, quel campo 'primo[]' lo gestisco appena invio il form con un foreach e funziona correttamente, il problema è gestire l'operazione 'moltiplicazione' all'interno del form stesso.


  • User

    ok 😃
    Quindi il cilco che fa il prodotto per ogni coppia non va'?
    Sai cosa? non vorrei che fasse un problema di tipodi dato: prova a forzare il dato a intero (o altro se hai numeri con virgola)facendo cosi:

    $_POST["primo"]* che diventa
    (int)$_POST["primo"]*

    In alcuni miei casi ha aiutato!


  • User Attivo

    Nada, ho provato anche cosi:

    [php]
    <?
    $p = 0;
    if(isset($_GET["mode"]) && $_GET["mode"] == "calcola"){
    $primo = $_POST["primo"];
    $secondo = $_POST["secondo"];
    $tot = ((int)$primo * (int)$secondo);
    $total_array[] = array('tot' => $tot[$p]);
    ?>
    <input type="text" name="totale[]" maxlength="7" value="<? echo $tot[$p]; ?>" />
    <?
    $p ++;
    } else {
    ?>
    <input type="text" name="totale[]" maxlength="7" />
    <?
    }
    ?>
    <input type="submit" name="calcola" value="Calcola totale" onclick="this.form.action='?mode=calcola';this.form.submit();" />

    [/php]


  • User

    Se provi a stampare risultati intermedi (es stampi la variabile $tot ad ogni iterazione) ti da il valore corretto? se non te lo da ad ogni iterazione è qualcosa prima che non quadra. Cmq non capisco bene dove inizia il ciclo: per esempio leggo

    $tot = ((int)$primo * (int)$secondo);
    $total_array[] = array('tot' => $tot[$p]);

    nella prima riga si setta $tot come variabile che contene un numero.
    Nella seconda la usi come un array?


  • User Attivo

    Nella seconda inserisco il contenuto di tot nell'array