Visualizzazione dei risultati da 1 a 6 su 6

Discussione: this.form.submit

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    8

    this.form.submit

    Salve a tutti.
    Ho una tabella con 3 record. Tramite php li recupero e vorrei fare in modo che quando faccio una modifica su uno di essi, ci sia un altro php che mi gestisce il salvataggio.
    Se uso questo codice:
    codice:
    <?php
    $db = new SQLite3("/var/databases/CronoTermo/DBCronoTermo");
    $results = $db->query('SELECT * FROM DS18B20');
    
    echo "<table border=\"1\">";
    while ($row = $results->fetchArray()) {
    
      echo "<form action=\"prova.php\" id=\"SalvaModifiche\" method=\"POST\">";
      echo "<tr>";
    
        echo "<td><select name=\"comm\" id=\"comm\" onchange=\"this.form.submit()\">";
          echo "</option>";
          echo "<option>ON</option>";
          echo "<option>OFF</option>";
        echo "</select></td>";
    
        echo "<td><input name=\"ID_mod\"  value=\"$row[ID]\"></td>";
    
      echo "</form>";
      echo "</tr>";
    }
    echo "</table>";
    ?>
    tutto funziona correttamente: ogni volta che faccio una modifica al campo "comm", passo i dati a prova.php e da li gestisco il salvataggio.
    Al posto del "this.form.submit", vorrei far partire il codice contenuto in una funzione che dovrebbe fare lo stesso mestiere del "this.form.submit" e allora ho così modificato il codice:
    codice:
    <script>
      function SalvaRecord(){
       document.forms["SalvaModifiche"].submit();
      }
    </script>
    
    <?php
    $db = new SQLite3("/var/databases/CronoTermo/DBCronoTermo");
    $results = $db->query('SELECT * FROM DS18B20');
    
    echo "<table border=\"1\">";
    while ($row = $results->fetchArray()) {
    
      echo "<form action=\"prova.php\" id=\"SalvaModifiche\" method=\"POST\">";
      echo "<tr>";
    
        echo "<td><select name=\"comm\" id=\"comm\" onchange=\"SalvaRecord()\">";
          echo "</option>";
          echo "<option>ON</option>";
          echo "<option>OFF</option>";
        echo "</select></td>";
    
        echo "<td><input name=\"ID_mod\"  value=\"$row[ID]\"></td>";
    
      echo "</form>";
      echo "</tr>";
    }
    echo "</table>";
    ?>
    Il problema è che se effettuo una modifica (una select) sul secondo o terzo record della tabella, a prova.php vengono comunque passati i dati relativi al primo record.
    C'è la maniera di sostituire il "this.form.submit" con l'esecuzione di una funzione?

    Grazie

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Ciao.
    Col tuo problema PHP c'entra poco e niente.
    Il tuo problema è che chiami tutti i form con lo stesso id e tutti i campi select con lo stesso nome, javascript preleverà sempre e solo il primo che trova, non sa quale hai veramente modificato perché per il recupero si basa sull'id del form e basta.
    Inizia col creare i vari form con un id diverso ed i select con nome diverso, per esempio aggiungendo un numero incrementale
    echo "<form action=\"prova.php\" id=\"SalvaModifiche_$i\" method=\"POST\">";
    echo "<td><select name=\"comm_$i\" id=\"comm\" onchange=\"SalvaRecord()\">";


    in cui $i è una variabile che fai partire da 1 ed incrementi ad ogni ciclo del while.

    Per ulteriori informazioni su come far recuperare poi correttamente i dati alla funzione Javascript, ti sposto nella sezione adatta, perché di PHP basta quello che ti ho scritto prima.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    8
    Chiarissimo, grazie.
    In effetti però con il tuo suggerimento non sarei però in gradi di recuperare i dati dalla funzione.
    Spero che qualcuno mi possa aiutare.

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    8
    Ho provato a variare il codice sfruttando il suggerimento di Alhazred ma ovviamente non funziona.
    Credo comunque che sia sufficiente cambiare il nome alla form e non a tutte le variabili che devo passare. Qualcuno riescie ad aiutarmi?

    codice:
    <script>
      function SalvaRecord(){
        document.forms["SalvaModifiche_$i"].submit;
      }
    </script>
    
    <?php
    $db = new SQLite3("/var/databases/CronoTermo/DBCronoTermo");
    $results = $db->query('SELECT * FROM DS18B20');
    
    echo "<table border=\"1\">";
    
    $i=0;
    while ($row = $results->fetchArray()) {
    $i = $i + 1;
    
      echo "<form action=\"prova.php\" id=\"SalvaModifiche_$i\" method=\"POST\">";
      echo "<tr>";
    
        echo "<td><select name=\"comm\" id=\"comm\" onchange=\"SalvaRecord()\">";
          echo "</option>";
          echo "<option>ON</option>";
          echo "<option>OFF</option>";
        echo "</select></td>";
    
        echo "<td><input name=\"ID_mod\"  value=\"$row[ID]\"></td>";
    
      echo "</form>";
      echo "</tr>";
    }
    echo "</table>";
    ?>

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    codice:
    <script> 
      function SalvaRecord(IdForm){ 
        document.forms[IdForm].submit(); 
      }  </script> 
      <?php 
    $db = new SQLite3("/var/databases/CronoTermo/DBCronoTermo"); 
    $results = $db->query('SELECT * FROM DS18B20'); 
     
    echo "<table border=\"1\">"; 
     
    $i=0;  while ($row = $results->fetchArray()) { 
    $i = $i + 1; 
     
      echo "<form action=\"prova.php\" id=\"SalvaModifiche_$i\" method=\"POST\">"; 
      echo "<tr>"; 
     
        echo "<td><select name=\"comm\" id=\"comm\" onchange=\"SalvaRecord('SalvaModifiche_$i')\">"; 
          echo "</option>"; 
          echo "<option>ON</option>"; 
          echo "<option>OFF</option>"; 
        echo "</select></td>"; 
     
        echo "<td><input name=\"ID_mod\"  value=\"$row[ID]\"></td>"; 
     
      echo "</form>"; 
      echo "</tr>";  } 
    echo "</table>";  ?>
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    8
    Grazie 1000 Andrea, funziona perfettamente

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.