[PHP] Inserimento di più righe non funziona come mi aspetto...

Discussione in 'PHP' iniziata da gandalf1959, 13 Giugno 2019.

  1. gandalf1959

    gandalf1959 Utente Attivo

    Registrato:
    21 Novembre 2013
    Messaggi:
    190
    Mi Piace Ricevuti:
    1
    Punteggio:
    18
    Buongiorno a tutti.
    Panorama:
    database di ricette, diviso nelle tabelle:
    - ricette (informazioni generali sulla ricetta, titolo, persone, campi statistici vari...)
    - ricette_lezioni (se la ricetta viene utilizzata all'interno di una lezione di cucina inserisco il codice della lezione)
    - ricette_ingredienti
    - ricette_procedimenti
    - ricette_foto

    L'inserimento avviene attraverso diverse pagine in successione.Ogni pagina aggiorna una tabella.
    Ho un problema sulle due pagine che gestiscono gli ingredienti.
    La prima pagina è un form che permette di inserire le righe mano a mano che mi servono (visto che il numero di ingredienti nelle ricette non è definibile in partenza).
    La pagina è la seguente (pagina1.php):
    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>
    <html>
      <head>
        <meta charset="utf-8">
        <title>Inserimento ingredienti</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="idricetta[]" type="text" size="5" value="<? echo $codicericetta; ?>" readonly="readonly" /></td>'
    +'<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="Cucchiai grandi">Cucchiai/o grande</option>'
    +'<option value="Cucchiaino">Cucchiaino/i</option>'
    +'<option value="Spicchi">Spicchio/i</option>'
    +'<option value="Mazzetto">Mazzetto/i</option>'
    +'<option value="Filetti">Filetto/i</option>'
    +'<option value="Fette">Fetta/e</option>'
    +'<option value="dl">dl</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="hidden" name="items"      id="items"      value="0" />
          <input type="hidden" name="titolo"      id="titolo"      value="<? echo $titolo; ?>" />
          <input type="button" name="addnew"     id="addnew"     value="Add new item" />
          <input type="button" name="removelast" id="removelast" value="Remove last item" />
          <input type="submit" name="submit"                     value="Submit Values" />
          
        </form>
      </body>
    </html>
    Questa pagina prende un paio di dati dalla precedente (codice ricetta e titolo) e invia alla successiva le righe inserite.
    Ecco il codice della pagina "ricevente" (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
        
    $titolo $_POST['titolo'];

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

      
    //  $numricetta = $_POST['numricetta'];

        
    include 'connect3.php';

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

            echo 
    "riga : " $r " ricetta : " $idricetta " ingrediente : " $ingrediente " quantita : " $quantita " misura : " $misura "<br /><br />";


            
    $connessione->query("INSERT INTO ricette_ingredienti VALUES ('', '$idricetta','$ingrediente', '$quantita', '$misura')");
            
    $connessione->close();
        }
    }
    else
    {
        echo 
    "NON HO RICEVUTO DATI CON il bottone 'Submit Values !'";
        die();
    }

    echo 
    "<html>";
    echo 
    "Numero ricetta: " $idricetta "<br>";
    echo 
    "Titolo: "$titolo "<br>";
    echo 
    "<form method='post' action='inserimentoricette2.php'>";
    echo 
    "<input name='idricetta' type='hidden' size='10' value='$idricetta' />";
    echo 
    "<input name='titoloric' type='hidden' size='10' value='$titolo' />";
    echo 
    "<input name='conferma' type='submit' id='conferma' value=' Inserire il Procedimento >> ' />";
    echo 
    "</form>";
    echo 
    "</html>";
    ?> 
    Problema:
    Nella tabella ricette_ingredienti trovo solo la prima riga...

    Dove sbaglio?

    Grazie per i suggerimenti
     
  2. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.490
    Mi Piace Ricevuti:
    123
    Punteggio:
    63
    Occupazione:
    free lance
    Località:
    Lombardia
    qui scrivi la riga e chiudi la connessione
    PHP:
            $connessione->query("INSERT INTO ricette_ingredienti VALUES ('', '$idricetta','$ingrediente', '$quantita', '$misura')");
            
    $connessione->close();
    meglio spostare la chiusura della connessione all'esterno e a seguire il "for"
     
  3. gandalf1959

    gandalf1959 Utente Attivo

    Registrato:
    21 Novembre 2013
    Messaggi:
    190
    Mi Piace Ricevuti:
    1
    Punteggio:
    18
    In effetti così è tutto a posto...
    E pensare che ho letto e riletto il tutto 200 volte...

    Grazie.
     
Sto caricando...

Condividi questa Pagina