Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    Invio di inserimenti multipli

    Ciao a tutti,

    ho creato una tabella dinamica, dove l'utente aggiunge o rimuove righe. Quando clicca su salva, lo script dovrebbe inviare al server tutti i valori aggiunti in ogni riga, il controllo che faccio è il seguente:

    codice:
    if(isset($_POST['sending']) AND 
    			isset($_POST['prodotto']) AND 
    			isset($_POST['fornitore']) AND 
    			isset($_POST['descrizione'])AND
    			isset($_POST['quantita'])AND
    			isset($_POST['prezzo']))
    L'aggiunta viene eseguita con successo, ma viene inserita solamente l'ultima riga generata dinamicamente dall'utente. Eppure il problema non dovrebbe presentarsi visto che per ogni riga che viene generata, gli assegno lo stesso nome, in questo caso prodotto o fornitore.

    codice:
    input.name = "prodotto";
    Il bug come ho già detto, è che viene aggiunta solo l'ultima riga, con i valori delle celle corrispondenti, come posso ovviare a ciò? C'è qualcosa che mi permette di selezionare tutto ed inviare i dati al server cosicché li inserisce nella taella?

    Grazie.
    ?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Appunto, se dai lo stesso nome come farebbe PHP a distinguerle? E' come se facessi così
    Codice PHP:
    $var 'pippo';
    $var 'pluto';
    $var 'topolino';

    echo 
    $var
    Che cosa stamperà?

  3. #3
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Appunto, se dai lo stesso nome come farebbe PHP a distinguerle? E' come se facessi così
    Codice PHP:
    $var 'pippo';
    $var 'pluto';
    $var 'topolino';

    echo 
    $var
    Che cosa stamperà?
    Io a dire il vero pensavo che controllasse tutti i campi aventi quel nome. A questo punto come faccio ad indicarglieli?
    ?

  4. #4

  5. #5
    Devi utilizzare degli array, ad esempio:

    Codice PHP:
    ...input name="prodotto[]"... 

    in questo modo riceverei array, piuttosto che valori singoli, scorrendo i quali ottieni tutti i valori delle determinate righe inserite.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    E dove devo inserirli questi array? Puoi farmi un esempio pratico?
    ?

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova questo.

    File : test319.php
    Codice PHP:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><?php 
    if (isset($_POST['bottone'])) {
     if (
    $_POST['bottone'] == "Invia") {
     
     foreach(
    $_POST['prodotto'] as $key => $value) {
      print 
    "prodotto chiave=$key valore=$value<br/>";
     } 
    // foreach($_POST['prodotto'] as $key => $value)
     
    print "<hr/>";
     foreach(
    $_POST['fornitore'] as $key => $value) {
      print 
    "fornitore chiave=$key valore=$value<br/>";
     } 
    // foreach($_POST['fornitore'] as $key => $value)
     
    print "<hr/>";
     foreach(
    $_POST['descrizione'] as $key => $value) {
      print 
    "descrizione chiave=$key valore=$value<br/>";
     } 
    // foreach($_POST['descrizione'] as $key => $value)
     
    print "<hr/>";
     foreach(
    $_POST['quantita'] as $key => $value) {
      print 
    "quantita chiave=$key valore=$value<br/>";
     } 
    // foreach($_POST['quantita'] as $key => $value)
     
    print "<hr/>";
     foreach(
    $_POST['prezzo'] as $key => $value) {
      print 
    "prezzo chiave=$key valore=$value<br/>";
     } 
    // foreach($_POST['prezzo'] as $key => $value)
     
    print "<hr/>";       
     } 
    // if ($_POST['bottone'] == "Invia")
    // if (isset($_POST['bottone'])) ?>
    <html>
    <head>
    <title>Untitled</title>
    </head>
    <body>
    <form action="test319.php" method="post">
     <table>
      <th>Prodotto</th><th>Fornitore</th><th>Descrizione</th><th>Quantita</th><th>Prezzo</th><?php 
      $i
    =1;
      for(
    $i=1;$i<=10;$i++) { ?>
     <tr>
      <td><input type="text" name="prodotto[]" /></td>
      <td><input type="text" name="fornitore[]" /></td>
      <td><input type="text" name="descrizione[]" /></td>
      <td><input type="text" name="quantita[]" /></td>
      <td><input type="text" name="prezzo[]" /></td>
     </tr><?php 
     
    // for($i=1;$i<=10;$i++) ?>
     </table>
     <input type="submit" value="Invia" name="bottone" />
    </form>
    </body>
    </html>
    Capito il concetto ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Prova questo.

    File : test319.php
    Codice PHP:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><?php 
    if (isset($_POST['bottone'])) {
     if (
    $_POST['bottone'] == "Invia") {
     
     foreach(
    $_POST['prodotto'] as $key => $value) {
      print 
    "prodotto chiave=$key valore=$value<br/>";
     } 
    // foreach($_POST['prodotto'] as $key => $value)
     
    print "<hr/>";
     foreach(
    $_POST['fornitore'] as $key => $value) {
      print 
    "fornitore chiave=$key valore=$value<br/>";
     } 
    // foreach($_POST['fornitore'] as $key => $value)
     
    print "<hr/>";
     foreach(
    $_POST['descrizione'] as $key => $value) {
      print 
    "descrizione chiave=$key valore=$value<br/>";
     } 
    // foreach($_POST['descrizione'] as $key => $value)
     
    print "<hr/>";
     foreach(
    $_POST['quantita'] as $key => $value) {
      print 
    "quantita chiave=$key valore=$value<br/>";
     } 
    // foreach($_POST['quantita'] as $key => $value)
     
    print "<hr/>";
     foreach(
    $_POST['prezzo'] as $key => $value) {
      print 
    "prezzo chiave=$key valore=$value<br/>";
     } 
    // foreach($_POST['prezzo'] as $key => $value)
     
    print "<hr/>";       
     } 
    // if ($_POST['bottone'] == "Invia")
    // if (isset($_POST['bottone'])) ?>
    <html>
    <head>
    <title>Untitled</title>
    </head>
    <body>
    <form action="test319.php" method="post">
     <table>
      <th>Prodotto</th><th>Fornitore</th><th>Descrizione</th><th>Quantita</th><th>Prezzo</th><?php 
      $i
    =1;
      for(
    $i=1;$i<=10;$i++) { ?>
     <tr>
      <td><input type="text" name="prodotto[]" /></td>
      <td><input type="text" name="fornitore[]" /></td>
      <td><input type="text" name="descrizione[]" /></td>
      <td><input type="text" name="quantita[]" /></td>
      <td><input type="text" name="prezzo[]" /></td>
     </tr><?php 
     
    // for($i=1;$i<=10;$i++) ?>
     </table>
     <input type="submit" value="Invia" name="bottone" />
    </form>
    </body>
    </html>
    Capito il concetto ?
    Ok, grazie infinite per l'esempio ora mi resta solo una cosa da capire

    io per inserire i dati in tabella, valorizzo prima le variabili tipo::

    codice:
    ...
    ...
    foreach($_POST['prezzo'] as $key => $value)
    {
    $this->prezzo = $_POST['prezzo'];
    print "prezzo chiave=$key valore=$value<br/>";
    } 
                    
                        $dipendente = $_SESSION['id'];
                        
                        $query = "
                                    INSERT INTO workpaper
                                    SET 
                                        prodotto='".mysql_real_escape_string($this->prodotto)."',
                                        fornitore='".mysql_real_escape_string($this->fornitore)."',
                                        descrizione='".mysql_real_escape_string($this->descrizione)."',
                                        quantita='".mysql_real_escape_string($this->quantita)."',
                                        prezzo='".mysql_real_escape_string($this->prezzo)."',
                                        dipendente='".mysql_real_escape_string($dipendente)."'
                                        ";
    Il problema è che ottengo questo messaggio:

    Warning: mysql_real_escape_string() expects parameter 1 to be string, array given

    che si presenta proprio alla prima riga della query, effettivamente si aspetta una stringa e non un array.
    ?

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Quote Originariamente inviata da wormd Visualizza il messaggio
    ...
    che si presenta proprio alla prima riga della query, effettivamente si aspetta una stringa e non un array.
    E quindi sai cosa c'è che non va, vuole una stringa e tu gli stai passando un array.

  10. #10
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    E quindi sai cosa c'è che non va, vuole una stringa e tu gli stai passando un array.
    Ciao,

    aggiungendo
    codice:
    prodotto='".mysql_real_escape_string(serialize($prodotto))."',
    In tabella poi mi ritrovo nella stessa riga a:2:{i:0;s:5:"prova1";i:1;s:5:"prova2";}

    mentre dovrebbe creare più righe per tutti i prodotti creati dinamicamente.
    ?

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.