[MySQL] Inserimento multiplo da form multirighe

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
Scusate, ma siccome non posso perdere ancora tanto tempo su questa cosa, avrei deciso di procedere in modo meno "intelligente" ma forse più veloce...
Torno alla mia pagina con 25 righe e 25 form, con 25 tasti submit...
Insomma una pagina così:
PHP:
<?php
session_start();
//se non c'è la sessione registrata
mb_internal_encoding('UTF-8');
if (!$_SESSION['autorizzato']) {
  echo "<h1>Area riservata, accesso negato.</h1>";
  echo "Per effettuare il login clicca <a href='index.php'><font color='blue'>qui</font></a>";
  die;
}
 
//Altrimenti Prelevo il codice identificatico dell'utente loggato

$cod = $_SESSION['cod']; //id cod recuperato nel file di verifica

$codicericetta = $_GET['codicericetta'];
$titolo = $_GET['titolo'];


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Inserimento Ricette per le Dispense</title>
<link href="backoffice.css" rel="stylesheet" type="text/css" />



</head>

<body>
<div id="inserimentoric" class="testi">
 
 

<table width="800px" border="1" cellspacing="0" cellpadding="0" bgcolor="#CCCCCC">
  <tr>
    <td colspan="4"><p align="center"><b><? echo $codicericetta; ?></b><br><? echo $titolo; ?></p><hr></td>
  </tr>

  <tr>
    <td colspan="4"><b>Ingredienti:</b><br></td>
  </tr>

  <tr>
    <td>Ingrediente</td>
    <td>Quantità</td>
    <td>Un.Mis.</td>
    <td></td>
  </tr>

  <tr>
    <form id="tabella" name="tabella" method="post" action="">
    <td><input name="ingrediente1" id="ingrediente1" type="text" size="50" /></td>
    <td><input name="quantita1" id="quantita1" type="text" size="4" /></td>
    <td><select name="misura1" id="misura1" />
        <option value="" selected="selected">===</option>
        <option value="Kg.">Kg</option>
        <option value="Gr.">Gr.</option>
        <option value="Lt.">lt</option>
        <option value="ml">ml</option>
        <option value="N.">N.</option>
        <option value="Bicchiere/i">Bicchiere/i</option>
        <option value="QB">QB</option>
      </select>
    </td>
    <td align="center"><input type="hidden" name="idricetta1" id="idricetta1" value="<? echo $codicericetta; ?>" /><br>
      <input name="conferma1" type="submit" id="conferma1" value=" Registra " />
      <div id="risultato"></div></p></td>
  </form>
  </tr>


  <tr>
    <form id="tabella2" method="post" action="">
    <td><input name="ingrediente2" type="text" size="50" /></td>
    <td><input name="quantita2" type="text" size="4" /></td>
    <td><select name="misura2" />
        <option value="" selected="selected">===</option>
        <option value="Kg.">Kg</option>
        <option value="Gr.">Gr.</option>
        <option value="Lt.">lt</option>
        <option value="ml">ml</option>
        <option value="N.">N.</option>
        <option value="Bicchiere/i">Bicchiere/i</option>
        <option value="QB">QB</option>
      </select>
    </td>
    <td align="center"><input type="hidden" name="idricetta2" id="idricetta2" value="<? echo $codicericetta; ?>" /><br>
      <input name="conferma2" type="submit" id="conferma2" value=" Registra " />
      <div id="risultato2"></div></p></td>
    </form>
  </tr>


<tr>
    <td colspan="3"><br><b>Procedimento:</b><br>
      <textarea name="ingredienti" cols="110" rows="35"></textarea>
    </td>
    <td align="center"><input type="hidden" name="idricetta" id="idricetta" value="<? echo $codicericetta; ?>" /><br>
      <input name="procedimento" type="submit" id="procedimento" value=" Inserisci procedimento " /></p></td>
  </tr>
</table>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="ajax_ricette.js"></script>

</div>
</body>
</html>

il file ajax_ricette:
Codice:
$(document).ready(function() {
    //Esegui la funzione quando il form 1 viene inviato
    $('#tabella').submit(function(e) {
        // Con il comando qui sotto evito che venga eseguito il comando "action" del <form>
        // Da notare che il parametro "e" si trova come parametro della funzione qui sopra
        e.preventDefault();

        //recupero il valore degli input
        var ingrediente = $('#ingrediente1').val();
        var quantita = $('#quantita1').val();
        var misura = $('#misura1').val();
        var idricetta = $('#idricetta1').val();

        //passo alla chiamata asincrona
        registrami(idricetta, ingrediente, quantita, misura);
    });


    //Esegui la funzione quando il form 2 viene inviato
    $('#tabella2').submit(function(e) {
        // Con il comando qui sotto evito che venga eseguito il comando "action" del <form>
        // Da notare che il parametro "e" si trova come parametro della funzione qui sopra
        e.preventDefault();

        //recupero il valore degli input
        var ingrediente2 = $('#ingrediente2').val();
        var quantita2 = $('#quantita2').val();
        var misura2 = $('#misura2').val();
        var idricetta2 = $('#idricetta2').val();

        //passo alla chiamata asincrona
        registrami2(idricetta2, ingrediente2, quantita2, misura2);
    });



    //la chiamata ajax
    function registrami(idricetta, ingrediente, quantita, misura) {
        $.ajax({
            url: 'registraingrediente.php',
            method: 'POST',
            data: {ric:idricetta, ingr:ingrediente, quant:quantita, mis:misura},
            dataType: 'text',
            success: function(feedback) {
                $("div#risultato").html(feedback);
                
            }
        });
    }

    function registrami2(idricetta2, ingrediente2, quantita2, misura2) {
        $.ajax({
            url: 'registraingrediente.php',
            method: 'POST',
            data: {ric:idricetta2, ingr:ingrediente2, quant:quantita2, mis:misura2},
            dataType: 'text',
            success: function(feedback) {
                $("div#risultato2").html(feedback);
                
            }
        });
    }

});

Questa struttura non è bella come quella di cui stavamo discutendo, e comunque ha un problema:
la prima riga mi registra correttamente il codice lezione (che arriva dalla pagina precedente) e il nome dell'ingrediente.
Nella colonna quantita mi mette zero (io inserisco un numero nel form) e nella colonna della misura invece di Kg o gr mi mette la quantita...
la seconda riga mi riporta correttamente il numero ricetta e basta...
Magari se risolvo questa cosa posso andare avanti.
Grazie per l'aiuto
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
mi spiace tu non riesca ad utilizzare lo script che ti ho postato,
provo a semplificare la sua gestione,
ho creato due files,

pagina1.php che contiene la componente html
upload_2018-6-22_9-11-7.png


pagina2.php che viene chiamato dalla pagina 1 e tratta i dati ricevuti da essa
upload_2018-6-22_9-11-59.png


pagina 1.php
HTML:
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Documento senza titolo</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
    <script type='text/javascript'>
    $(document).ready(function() {
        var currentItem = 1;
        AddRow(currentItem);

        $('#addnew').click(function(){
            currentItem++;
            AddRow(currentItem);
        });

        $('#removelast').click(function(){
            if (currentItem > 1) {
                var rowID = '#row'+currentItem
                $(rowID).remove();
                currentItem--;
                $('#items').val(currentItem);
            }
        });

        function AddRow(currentItem)
        {
            var strToAdd = NewRow(currentItem)
            $('#data').append(strToAdd);
            $('#items').val(currentItem);
        };

        function NewRow(currentItem)
        {
            text
='<tr id="row'+currentItem+'">'
+'<td><input name="ingrediente[]" type="text" size="50" /></td>'
+'<td><input name="quantita[]" type="text" size="4" /></td>'
+'<td><select name="misura[]">'
+'<option value="===" selected="selected">scegli unit&agrave; di misura</option>'
+'<option value="Kg">Kg</option>'
+'<option value="Gr">Gr</option>'
+'<option value="Lt">lt</option>'
+'<option value="ml">ml</option>'
+'<option value="N">N.</option>'
+'<option value="Bicchiere">Bicchiere/i</option>'
+'<option value="QB">QB</option>'
+'</select>'
+'</td>'
+'</tr>';
            return text;
        };
    });
    </script>
  </head>
  <body>
    <form name='myform' method='POST' action="Pagina2.php">
      <table class="dd" width="100%" id="data">
        <tbody>
        </tbody>
      </table>
      <input type="submit" name="submit"                     value="Submit Values" />
      <input type="button" name="addnew"     id="addnew"     value="Add new item" />
      <input type="button" name="removelast" id="removelast" value="Remove last item" />
      <input type="hidden" name="items"      id="items"      value="0" />
    </form>
  </body>
</html>

pagina2.php
PHP:
<?php
if(!empty($_POST['submit']))
{
    // ho ricevuto i dati perchè è stato cliccato il bottone 'Submit Values' della pagina 1

    // qui devo mettere il trattamento dei dati ricevuti ricordando che,

    $items = $_POST['items'];  // numero delle righe presenti

    echo "ho ricevuto " . $items . " righe<br /><br />";

    for($r = 0; $r < $items; $r++)
    {
        $ingrediente = $_POST['ingrediente'][$r];
        $quantita    = $_POST['quantita'][$r];
        $misura      = $_POST['misura'][$r];

        echo "riga : " . $r . " ingrediente : " . $ingrediente . " quantita : " . $quantita . " misura : " . $misura . "<br />";
    }
}
else
{
    echo "NON HO RICEVUTO DATI CON il bottone 'Submit Values !'";
    die();
}
?>

se vuoi spendere ancora qualche minuto, per la prova usa i nomi dei file che ho assegnato
 

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
così in effetti funziona.
e siccome è molto meglio che scrivere 25 volte la stessa cosa (anche con il copia e incolla....) ti ringrazio, personalizzo e uso i tuoi file.
Grazie moltissimo!
Alla prossima
 
Discussioni simili
Autore Titolo Forum Risposte Data
P Query Mysql per inserimento multiplo MySQL 4
K form Inserimento record mysql PHP 2
E Inserimento dati da PHP in tabella MySQL PHP 5
G inserimento csv in tabella mysql; problema con struttura PHP 11
K [PHP + MYSQL ] Inserimento dati in database da form dinamico PHP 13
A [RISOLTO]Inserimento Immagini da pc a MySql PHP 15
paloppa Inserimento data su database MYSQL PHP 2
M Inserimento Array prelevato da Database in Php in un altra tabella mysql PHP 0
G mysql - problemi inserimento dati nel database, consigli. MySQL 3
S Php e mysql, estrazione da una tabella e inserimento in un'altra tabella PHP 14
K Consiglio su inserimento mysql PHP 4
M Invio mail con destinatari da mysql con inserimento di nome e cognome PHP 6
C inserimento o eliminazione record mysql senza cambio pagina Ajax 9
S Inserimento dati in colonna mysql PHP 10
G Inserimento array proveniente da un modulo di registrazione con PHP e MySQL PHP 6
G Inserimento loop in una INSERT query in PHP e MySQL PHP 2
O Inserimento multilplo di un ciclo for in un database mysql PHP 0
O [risolto] Inserimento nuovo campo in mysql. Problema PHP 6
N Inserimento valori da Joomla a database MySql tramite PHP Joomla 0
Fanki Sib Modifica tabelle mysql - inserimento immagini PHP 1
M Inserimento dati in db mysql dopo aver confermato e-mail PHP 7
I inserimento link in tabella mysql PHP 6
V inserimento e variazione di una tabella mysql PHP 1
EffeElle Php problema su inserimento dati mysql PHP 47
L PHP/MYSQL + Inserimento automatico dati PHP 10
emanuelevt inserimento img mysql PHP 2
N [PHP/MySQL] Problema inserimento stringhe ' or ', ' and ' PHP 2
DeAndreon Inserimento dati utente Mysql MySQL 1
P Mysql lento a cancellare MySQL 1
P Codifica caratteri speciali mysql php PHP 0
N MAX() + ADD_DATE - per update su Mysql MySQL 0
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
W MySQL ciclo in SELECT MySQL 0
L Mysql gestionale multipiattaforma MySQL 0
W MySQL SELECT list dinamica MySQL 0
M utilizzo mysql in nodejs - crea createdAt e updateAt MySQL 1
T colonne di tabelle mysql ordinate MySQL 0
M Sintassi "personalizzata" per mysql workbench? MySQL 0
A Mysql MySQL 0
F Ricreare struttura php+mysql su Xampp Apache 0
M Array associativi php su 2 campi mysql PHP 10
Z Controllo giorni MYSQL PHP 0
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
L Mysql: Nascondere le pagine dopo una ricerca PHP 1
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
S problema con recupero dati tabella mysql PHP 2
E Progressbar estrazione dati da tabella mySQL Ajax 9

Discussioni simili