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

    Inserire diversi Record in MySQL con un click da form html

    Vorrei inserire diversi record da uno stesso form (con un click). Ho fatto e funziona. Il problema è che nell'esempio che posto c'è la possibilità di inserire 3 record e sempre si inseriscono 3 records. Vorrei invece eventualmente inserire solo 2, ad esempio quando l'ultimo set dei campi rimane vuoto. In pratica, si dovrebbe inserire solo il numero dei record compilati, ignorando quelli lasciati in bianco nel form.
    Ecco il form HTML
    codice:
    <form action="prova.php" method="post">
    <p><b>1</b><br />
    Nome <input name="name[]" type="text" id="name[]">Texto <input name="texto[]" type="text" id="texto[]"></p>
    <p><b>2</b><br />Nome <input name="name[]" type="text" id="name[]">Texto <input name="texto[]" type="text" id="texto[]"></p>
    <p><b>3</b><br />Nome <input name="name[]" type="text" id="name[]">Texto <input name="texto[]" type="text" id="texto[]"></p>
    <p><input type="submit" name="Submit" id="Submit" value="Submit" /></p></form>
    Qui il codice PHP dell'Insert nel MySQL
    codice:
    if (isset($_POST['Submit'])) { //se submit inviato
    $con = mysql_connect("HOST","USER","PASSWORD"); 
    if (!$con) 
    { 
    die('No ho potuto connetermi: ' . mysql_error()); 
    } 
    mysql_select_db("claretianum_db1", $con);  
    foreach($_POST['name'] as $row=>$Name) 
    { 
        $name=mysql_real_escape_string($Name); 
        $texto=mysql_real_escape_string($_POST['texto'][$row]); 
       
    $sql="INSERT INTO prova(nome, texto)VALUES('$name', '$texto')" or die(mysql_error());
    $result = mysql_query($sql, $con) or die(mysql_error()); 
    } 
    // if successfully updated. 
    if($result){ 
    
    
    echo "$row record inseriti.<br/>"; 
    } 
    else { 
    echo "ERROR"; 
    } 
    } //fine controllo se submit inviato
    Ultima modifica di ldarosa; 01-11-2013 a 21:55
    Luiz

  2. #2
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    Codice PHP:
    ....
    foreach(
    $_POST['name'] as $row=>$Name

      if(!empty(
    $Name)){
            
    $name=mysql_real_escape_string($Name); 
            
    $texto=mysql_real_escape_string($_POST['texto'][$row]); 
       
            
    $sql="INSERT INTO prova(nome, texto)VALUES('$name', '$texto')";
            
    $result mysql_query($sql$con) or die(mysql_error()); 
       }
    }
    ... 
    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  3. #3
    Grande! Funziona perfettamente. Per aiutare altri, posto sotto il codice di tutto il file
    codice:
    <form action="nomefile.php" method="post">
    <p><b>1</b><br />
    Nome <input name="name[]" type="text" id="name[]">Texto <input name="texto[]" type="text" id="texto[]"></p>
    <p><b>2</b><br />Nome <input name="name[]" type="text" id="name[]">Texto <input name="texto[]" type="text" id="texto[]"></p>
    <p><b>3</b><br />Nome <input name="name[]" type="text" id="name[]">Texto <input name="texto[]" type="text" id="texto[]"></p>
    <p><input type="submit" name="Submit" id="Submit" value="Submit" /></p>
    </form>
    
    <?php
    if (isset($_POST['Submit'])) { //se submit inviato
    //cambiare i tre parametri con le vostre impostazioni
    $con = mysql_connect("HOST","USER","PASSWORD"); 
    if (!$con) 
    { 
    die('No ho potuto connetermi: ' . mysql_error()); 
    } 
    mysql_select_db("claretianum_db1", $con);  
    foreach($_POST['name'] as $row=>$Name) 
    { 
      if(!empty($Name)){ //inserisco solo quelli compilati (se nome è lasciato in bianco, verrà ignorato
            $name=mysql_real_escape_string($Name); 
            $texto=mysql_real_escape_string($_POST['texto'][$row]); 
       
            $sql="INSERT INTO prova(nome, texto)VALUES('$name', '$texto')";
            $result = mysql_query($sql, $con) or die(mysql_error()); 
       } //fine inserimento
    } // fine foreach
    // if successfully updated. 
    if($result){ //stampo quanti record sono stati inseriti
    echo "$row record inseriti.<br/>"; 
    } 
    else { //se non si inserisci niente, stampo l'errore
    echo "ERROR"; 
    } 
    } //fine controllo se submit inviato
    ?>
    Luiz

Tag per questa discussione

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.