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

    Inserimento più dati da form con array e foreach

    Ciao ragazzi ho un piccolo problema:
    sto cercando di fare un form che abbia un'array di variabili e che chiami una pagina che faccia gli inserimenti sul database di tutti questi dati, una riga alla volta.
    nella fattispecie abbiamo questo form:

    index.php
    Codice PHP:
    <form action="submit.php" method="post">

    <table style="float:left; margin-right:10px; border:1px solid black;">
    <?php do { ?>
        <tr>
            <td><input type="radio" value="<?php echo $row_categorie['id']; ?>" name="categoria" onchange="cambiagrammatura<?php echo $row_categorie['id']; ?>()" /><?php echo $row_categorie['nome']; ?></td>
        </tr>
    <?php } while ($row_categorie mysql_fetch_assoc($categorie)); ?>
    </table>



    <table style="float:left; margin-right:10px; border:1px solid black;">
    <?php do { ?>
        <tr class="invisibile" id="grammatura<?php echo $row_grammature['id']; ?>">
            <td><input type="radio" id="grammatura<?php echo $row_grammature['id']; ?>" name="grammatura" onchange="cambiadimesioni<?php echo $row_grammature['id']; ?>()" /><?php echo $row_grammature['nome']; ?></td>
        </tr>
    <?php } while ($row_grammature mysql_fetch_assoc($grammature)); ?>
    </table>



    <table style="float:left; margin-right:10px; border:1px solid black;">
    <?php do { ?>
        <tr class="invisibile" id="dimensioni<?php echo $row_dimensioni['id']; ?>">
            <td><input type="radio" id="<?php echo $row_dimensioni['id']; ?>" name="dimensioni" /><?php echo $row_dimensioni['nome']; ?> (<?php echo $row_dimensioni['descrizione']; ?>)</td>
        </tr>
    <?php } while ($row_dimensioni mysql_fetch_assoc($dimensioni)); ?>
    </table>



    <div style="float:left; margin-left:50px;">
        <input type="button" onClick="nuovoform();" value="Aggiungi riga" />
        

        Unit&agrave; <input type="text" name="unita[]" />

        Netto <input type="text" name="netto[]" />

        Lordo <input type="text" name="lordo[]" />

        Area Stampa <input type="file" name="areastampa[]" />

        <div id="ciccio"></div>



        <input type="submit" value="Invio" />
    </div>

    </form>

    Vedete queste ultime input? un comando javasccript le duplica fino ad averne quante l'utente ne vuole. ecco ora ad esempio abbiamo una decina di queste variabili unita[], netto[] etc....e il submit chiama questa pagina:

    submit.php
    Codice PHP:
    <?php

    foreach ($_POST['unita'] as $nino)
    {
        echo 
    "inserimento " $_POST['unita'] . '
    '
    ;
        
    mysql_select_db ($database_connections$connections);
                    
    $query "INSERT INTO `prezzi` (
                                `unita` ,
                                `netto` ,
                                `lordo` ,
                                `id_cat` ,
                                `id_gramm` ,
                                `id_dim` ,
                                `areastampa`
                                )
                                VALUES (
                                '" 
    $_POST['unita'] . "', '" $_POST['netto'] . $_POST['lordo'] . "', '" $_POST['categoria'] . "', '" $_POST['grammatura'] . "', '" $_POST['dimensioni'] . "', '" $_POST['areastampa'] . "'
                                )"
    ;
                    
    mysql_query ($query$connections);
                    
                    
    $query_ultimoid "SELECT * FROM ordini ORDER BY id DESC LIMIT 1";
                    
    $ultimoid mysql_query($query_ultimoid$connections) or die(mysql_error());
                    
    $row_ultimoid mysql_fetch_assoc($ultimoid);
    }



    ?>
    In teoria questa pagina dovrebbe creare una riga per ogni POST[unita] e inserire i dati relativi a quell'iterazione ma.... non lo fa.
    Mi è sicuramente sfuggito qualcosa, voi avete capito l'errore? grazie!

  2. #2
    Non sarebbe più semplice e leggibile creare una serie di campi chiamati

    row[0][unita], row[0][netto], , row[0][lordo], etc.
    row[1][unita], row[1][netto], , row[1][lordo], etc.
    row[2][unita], row[2][netto], , row[2][lordo], etc.
    row[...][unita], row[...][netto], , row[...][lordo], etc.

    In questo modo in fase di inserimento ti basta ciclare sull'array $_POST['row'] per ottenere i dati senza dover gestire indici separati per i singoli campi.

  3. #3
    Beh quello che ho scritto io è pensato per ottenere questo risultato solo che lo fa in automatico scrivento unita[] come name della input...e poi lo ciclo nell'altra pagina

  4. #4
    ragazzi non ho ancora risolto, avete qualche consiglio?

  5. #5

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.