Inserimento multiplo

  • Creatore Discussione Creatore Discussione Trapano
  • Data di inizio Data di inizio

Trapano

Utente Attivo
27 Set 2012
238
0
16
48
Ciao a tutti.
Ho un nuovo quesito da proporvi.
Ho un modulo di inserimento dati su un db.
Compilo gli imput e invio. Tutto ok.
Ma se avessi 30 oggetti tutti uguali da inserire, sarebbe possibile inserire nella query, inserisci 30 volte o n volte? Con un clic?
 
Dimenticavo: uso php!
È stasera posto lo script...perché ora sono in giro ...;-)
 
ecco la pagina:
PHP:
<table align='center' bgcolor='yellow' border='1' height='' width='900' cellpadding='0' cellspacing='0'>
<p align="center"><font color="black" size="5"><b>Inserisci un nuovo oggetto</b></font>
<form action='oggetti.php?reg=1' method='POST'>
<tr>
<td align='center' width=''><b>Descrizione</b></td>
<td align='center' width=''><b>Prezzo</b></td>
<td align='center' width=''><b>Quantita'</b></td>
<td align='center' width=''><b>%</b></td>
<td align='center' width=''><b>Codice venditore</b></td>
<td align='center' width=''><b>Stato</b></td>
<td align='center' width=''><b>Nome immagine</b></td>
<td align='center' width=''><b></b></td>
</tr>
 <td align='center'width=''><input type='text' name='descrizione'></td>
 <td align='center'width=''><input type='text' name='prezzo'></td>
 <td align='center'width=''><input type='text' name='quantita'></td>
 <td align='center' width=''><input type='text' name='percento'></td>
 <td align='center' width=''><input type='text' name='id_venditore'></td>
 <td align='center' width=''><input type='text' name='venduto' value="in vendita" readonly="readonly"></td>
 <td align='center' width=''><input type='text' name='link'></td>
 <td align='center' width=''><input type='submit' value='Procedi'></td><br>
</form></font></p>
 </table><br>


<?
include_once ("config.php");  
include_once ("connect.php");  

$reg = $_GET['reg'];

if ( $reg == 1 ) {

// recuperiao tutti i dati inviati via post
$id = $_POST['id'];
$data = date('d/m/y');
$descrizione = $_POST['descrizione'];
$prezzo = $_POST['prezzo'];
$quantita = $_POST['quantita'];
$percento = $_POST['percento'];
$provvigione = ($prezzo*$quantita) *$percento/100;
$rimborso = ($prezzo*$quantita) - $provvigione;
$id_venditore = $_POST['id_venditore'];
$venduto = $_POST['venduto'];
$data_vendita = $_POST['data_vendita'];
$link = $_POST['link'];


mysql_query("INSERT INTO oggetti
             ( id , data , descrizione , prezzo , quantita , percento , provvigione , rimborso , id_venditore , venduto , data_vendita , link )
             VALUES 
             ( '$id', '$data' , '$descrizione', '$prezzo', '$quantita', '$percento', '$provvigione', '$rimborso', '$id_venditore', '$venduto', '$data_vendita', 'link/$link' )") OR DIE(mysql_error());
$result = mysql_query ("SELECT * FROM oggetti WHERE data > 31/10/12");
$num=mysql_numrows($result);


while($row = mysql_fetch_array( $result )) { 

    $id=$row['id']; 
        
}  


echo "Record inserito <br>";
echo "<td align='center'>id $id</td>/<td align='center'>data $data</td>/<td align='center'> $descrizione</td>/<td align='center'> prezzo $prezzo</td>/<td align='center'>quantita' $quantita</td>/<td align='center'>venditore $id_venditore</td><br>";
echo "<a href='javascript:history.back()'><blink>Per inserire un oggetto uguale clicca qui</blink></a>";

} 

?>
</body>
</html>
 
Come metodo provvisorio nelle ultime righe ho messo la possibilità di tornare indietro.... ma funziona solo con safari.. e poi non è un granchè come soluzione... preferirei un campo dove inserisco un numero e ripete n volte....
 
Ciao,
concordo con Borgo: jquery non c'entra
Io inserirei un input/select in più: quante volte vuoi inserire questo oggetto?
poi con un ciclo php esegui le query
PHP:
for($i=0; $i < $_POST['nvolte']; $i++) {

// query

}

Sposto in php
 
così?
PHP:
 <html>
<head>
<title>Modulo di inserimento nuovo oggetto</title>
</head>
<body bgcolor="#42FFF9">

<table align='center' bgcolor='yellow' border='1' height='' width='900' cellpadding='0' cellspacing='0'>
<p align="center"><font color="black" size="5"><b>Inserisci un nuovo oggetto</b></font>
<form action='oggetti.php?reg=1' method='POST'>
<tr>
<td align='center' width=''><b>Descrizione</b></td>
<td align='center' width=''><b>Prezzo</b></td>
<td align='center' width=''><b>Quantita'</b></td>
<td align='center' width=''><b>%</b></td>
<td align='center' width=''><b>Codice venditore</b></td>
<td align='center' width=''><b>Stato</b></td>
<td align='center' width=''><b>Nome immagine</b></td>
<td align='center' width=''><b>Quanti oggetti?</b></td>
<td align='center' width=''><b></b></td>
</tr>
 <td align='center'width=''><input type='text' name='descrizione'></td>
 <td align='center'width=''><input type='text' name='prezzo'></td>
 <td align='center'width=''><input type='text' name='quantita'></td>
 <td align='center' width=''><input type='text' name='percento'></td>
 <td align='center' width=''><input type='text' name='id_venditore'></td>
 <td align='center' width=''><input type='text' name='venduto' value="in vendita" readonly="readonly"></td>
 <td align='center' width=''><input type='text' name='link'></td>
 <td align='center' width=''><input type='text' name='nvolte' value='1'></td>
 <td align='center' width=''><input type='submit' value='Procedi'></td><br>
</form></font></p>
 </table><br>


<?
include_once ("config.php");  
include_once ("connect.php");  

$reg = $_GET['reg'];

if ( $reg == 1 ) {

// recuperiao tutti i dati inviati via post
$id = $_POST['id'];
$data = date('d/m/y');
$descrizione = $_POST['descrizione'];
$prezzo = $_POST['prezzo'];
$quantita = $_POST['quantita'];
$percento = $_POST['percento'];
$provvigione = ($prezzo*$quantita) *$percento/100;
$rimborso = ($prezzo*$quantita) - $provvigione;
$id_venditore = $_POST['id_venditore'];
$venduto = $_POST['venduto'];
$data_vendita = $_POST['data_vendita'];
$link = $_POST['link'];


mysql_query("INSERT INTO oggetti
             ( id , data , descrizione , prezzo , quantita , percento , provvigione , rimborso , id_venditore , venduto , data_vendita , link )
             VALUES 
             ( '$id', '$data' , '$descrizione', '$prezzo', '$quantita', '$percento', '$provvigione', '$rimborso', '$id_venditore', '$venduto', '$data_vendita', 'link/$link' )") OR DIE(mysql_error());
$result = mysql_query ("SELECT * FROM oggetti WHERE data > 31/10/12");
$num=mysql_numrows($result);

for($i=0; $i < $_POST['nvolte']; $i++) { 

// query 

} 

while($row = mysql_fetch_array( $result )) { 

    $id=$row['id']; 
        
}  



echo "Record inserito <br>";
echo "<td align='center'>id $id</td>/<td align='center'>data $data</td>/<td align='center'> $descrizione</td>/<td align='center'> prezzo $prezzo</td>/<td align='center'>quantita' $quantita</td>/<td align='center'>venditore $id_venditore</td><br>";
echo "<a href='javascript:history.back()'><blink>Per inserire un oggetto uguale clicca qui</blink></a>";

} 

?>
</body>
</html>

Che manca?
 
Posto il lavoro che funziona...
PHP:
 <html>
<head>
<title>Modulo di inserimento nuovo oggetto</title>
</head>
<?php
include 'body.php';
?>
<table align='center' bgcolor='yellow' border='1' height='' width='900' cellpadding='0' cellspacing='0'>
<p align="center"><font color="black" size="5"><b>Inserisci un nuovo oggetto</b></font>
<form action='oggetti.php?reg=1' method='POST'>
<tr>
<td align='center' width=''><b>Descrizione</b></td>
<td align='center' width=''><b>Prezzo</b></td>
<td align='center' width=''><b>Quantita'</b></td>
<td align='center' width=''><b>%</b></td>
<td align='center' width=''><b>Codice venditore</b></td>
<td align='center' width=''><b>Stato</b></td>
<td align='center' width=''><b>Nome immagine</b></td>
<td align='center' width=''><b>Quanti oggetti?</b></td>
<td align='center' width=''><b></b></td>
</tr>
 <td align='center'width=''><input type='text' name='descrizione'></td>
 <td align='center'width=''><input type='text' name='prezzo'></td>
 <td align='center'width=''><input type='text' name='quantita'></td>
 <td align='center' width=''><input type='text' name='percento'></td>
 <td align='center' width=''><input type='text' name='id_venditore'></td>
 <td align='center' width=''><input type='text' name='venduto' value="in vendita" readonly="readonly"></td>
 <td align='center' width=''><input type='text' name='link'></td>
 <td align='center' width=''><input type='text' name='nvolte' value='1'></td>
 <td align='center' width=''><input type='submit' value='Procedi'></td><br>
</form></font></p>
 </table><br>


<?
include_once ("config.php");  
include_once ("connect.php");  

$reg = $_GET['reg'];

if ( $reg == 1 ) {

// recuperiao tutti i dati inviati via post
$id = $_POST['id'];
$data = date('d/m/y');
$descrizione = $_POST['descrizione'];
$prezzo = $_POST['prezzo'];
$quantita = $_POST['quantita'];
$percento = $_POST['percento'];
$provvigione = ($prezzo*$quantita) *$percento/100;
$rimborso = ($prezzo*$quantita) - $provvigione;
$id_venditore = $_POST['id_venditore'];
$venduto = $_POST['venduto'];
$data_vendita = $_POST['data_vendita'];
$link = $_POST['link'];

for($i=0; $i < $_POST['nvolte']; $i++) { 
	
mysql_query("INSERT INTO oggetti
             ( id , data , descrizione , prezzo , quantita , percento , provvigione , rimborso , id_venditore , venduto , data_vendita , link )
             VALUES 
             ( '$id', '$data' , '$descrizione', '$prezzo', '$quantita', '$percento', '$provvigione', '$rimborso', '$id_venditore', '$venduto', '$data_vendita', 'link/$link' )") OR DIE(mysql_error());
$result = mysql_query ("SELECT * FROM oggetti WHERE data > 31/10/12");
$num=mysql_numrows($result);



} 

while($row = mysql_fetch_array( $result )) { 

    $id=$row['id']; 
        
}  



echo "Record inserito <br>";
echo "<td align='center'>id $id</td>/<td align='center'>data $data</td>/<td align='center'> $descrizione</td>/<td align='center'> prezzo $prezzo</td>/<td align='center'>quantita' $quantita</td>/<td align='center'>venditore $id_venditore</td><br>";


} 

?>
</body>
</html>
 
secondo me questa dovresti toglierla dal ciclo dove c'è anche l'INSERT
PHP:
$result = mysql_query ("SELECT * FROM oggetti WHERE data > 31/10/12");
$num=mysql_numrows($result);
 
si dopo il ciclo altrimenti la esegui piu volte per niente
ma se uno nel campo "nvolte" ti scrive 1000000000000000000000 ??
 
anche il valore di una select puo essere facilmente manipolato
ti conviene cmq mettere un controllo in php
PHP:
if((int) $_POST['nvolte'] > 20) {
        // errore limite superato
}
 
Bellissimo... Sei il numero uno!
Però mi incuriosisce il fatto del manipolato... Come si può manipolarlo?
 
potrei semplicemente creare un form che richiama la tua pagina
PHP:
<form action="tuapagina.php" method="post">
            <input type="hidden" name="nvolte" value="1000000000000"/>
            e tutti gli altri campi
        </form>
o usare delle librerie tipo curl
 
Ho notato ora che non fai nessun controllo su nessun campo
un malintenzionato potrebbe farci quello che vuole con il tuo db
la struttura piu o meno dovrebbe essere cosi
PHP:
<html>
    <head>
        <title>Titolo</title>
    </head>
    <body>
        <?php
        include_once ("config.php");
        include_once ("connect.php");
        // se hanno premuto il pulsante procedi : nota che gli ho aggiunto il name
        if (isset($_POST['procedi']) && $_POST['procedi'] == "Procedi") {
            // se il campo nvolte è minore di venti vai avanti
            if ((int) $_POST['nvolte'] < 20) {

                // qui sarebbe bene aggiungere dei controlli anche sugli altri campi
                
                // recuperiao tutti i dati inviati via post
                $id = $_POST['id'];
                $data = date('d/m/y');
                $descrizione = $_POST['descrizione'];
                $prezzo = $_POST['prezzo'];
                $quantita = $_POST['quantita'];
                $percento = $_POST['percento'];
                $provvigione = ($prezzo * $quantita) * $percento / 100;
                $rimborso = ($prezzo * $quantita) - $provvigione;
                $id_venditore = $_POST['id_venditore'];
                $venduto = $_POST['venduto'];
                $data_vendita = $_POST['data_vendita'];
                $link = $_POST['link'];


                mysql_query("INSERT INTO oggetti
             ( id , data , descrizione , prezzo , quantita , percento , provvigione , rimborso , id_venditore , venduto , data_vendita , link )
             VALUES 
             ( '$id', '$data' , '$descrizione', '$prezzo', '$quantita', '$percento', '$provvigione', '$rimborso', '$id_venditore', '$venduto', '$data_vendita', 'link/$link' )") OR DIE(mysql_error());
                $result = mysql_query("SELECT * FROM oggetti WHERE data > 31/10/12");
                $num = mysql_numrows($result);


                while ($row = mysql_fetch_array($result)) {

                    $id = $row['id'];
                }

                // la sintassi della seguente tabella non è corretta
                echo "Record inserito <br>";
                echo "<td align='center'>id $id</td>/<td align='center'>data $data</td>/<td align='center'> $descrizione</td>/<td align='center'> prezzo $prezzo</td>/<td align='center'>quantita' $quantita</td>/<td align='center'>venditore $id_venditore</td><br>";
                echo "<a href='javascript:history.back()'><blink>Per inserire un oggetto uguale clicca qui</blink></a>";
            } else {
                echo "<p>Limite massimo oggetti superato</p>";
            }
        }
        ?>
        <p align="center"><font color="black" size="5"><b>Inserisci un nuovo oggetto</b></font></p>
        <table align='center' bgcolor='yellow' border='1' height='' width='900' cellpadding='0' cellspacing='0'>

            <form action='oggetti.php?reg=1' method='POST'>
                <tr>
                    <td align='center' width=''><b>Descrizione</b></td>
                    <td align='center' width=''><b>Prezzo</b></td>
                    <td align='center' width=''><b>Quantita'</b></td>
                    <td align='center' width=''><b>%</b></td>
                    <td align='center' width=''><b>Codice venditore</b></td>
                    <td align='center' width=''><b>Stato</b></td>
                    <td align='center' width=''><b>Nome immagine</b></td>
                    <td align='center' width=''><b></b></td>
                </tr>
               <tr>
                <td align='center'width=''><input type='text' name='descrizione'></td>
                <td align='center'width=''><input type='text' name='prezzo'></td>
                <td align='center'width=''><input type='text' name='quantita'></td>
                <td align='center' width=''><input type='text' name='percento'></td>
                <td align='center' width=''><input type='text' name='id_venditore'></td>
                <td align='center' width=''><input type='text' name='venduto' value="in vendita" readonly="readonly"></td>
                <td align='center' width=''><input type='text' name='link'></td>
                <td align='center' width=''><input type='submit' name="procedi" value='Procedi'></td>
            </tr>
            </form>
        </table>
    </body>
</html>
 
Ultima modifica:
In questo modo funziona.
PHP:
<?php
include 'conf.php';
session_start();
if ($_SESSION['username']==$usern) ;
else{ 
header("Location: login.htm");
}

 { ?>
 <html>
<head>
<title>Modulo di inserimento nuovo oggetto</title>
</head>
<?php
include 'body.php';
?>
<table align='center' bgcolor='yellow' border='1' height='' width='900' cellpadding='0' cellspacing='0'>
<p align="center"><font color="black" size="5"><b>Inserisci un nuovo oggetto</b></font>
<form action='oggetti.php?reg=1' method='POST'>
<tr>
<td align='center' width=''><b>Descrizione</b></td>
<td align='center' width=''><b>Prezzo</b></td>
<td align='center' width=''><b>Quantita'</b></td>
<td align='center' width=''><b>%</b></td>
<td align='center' width=''><b>Codice venditore</b></td>
<td align='center' width=''><b>Stato</b></td>
<td align='center' width=''><b>Nome immagine</b></td>
<td align='center' width=''><b>Moltiplica record</b></td>
<td align='center' width=''><b></b></td>
</tr>
 <td align='center'width=''><input type='text' name='descrizione'></td>
 <td align='center'width=''><input type='text' name='prezzo'></td>
 <td align='center'width=''><input type='text' name='quantita'></td>
 <td align='center' width=''><input type='text' name='percento'></td>
 <td align='center' width=''><input type='text' name='id_venditore'></td>
 <td align='center' width=''><input type='text' name='venduto' value="in vendita" readonly="readonly"></td>
 <td align='center' width=''><input type='text' name='link'></td>
 <td align='center' width=''><input type='text' name='nvolte' value='1'></td>
 <td align='center' width=''><input type='submit' value='Procedi'></td><br>
</form></font></p>
 </table><br>


<?
include_once ("config.php");  
include_once ("connect.php");  


 if ((int) $_POST['nvolte'] < 10) {
 	
 	
$reg = $_GET['reg'];

if ( $reg == 1 ) {

// recuperiao tutti i dati inviati via post
$id = $_POST['id'];
$data = date('d/m/y');
$descrizione = $_POST['descrizione'];
$prezzo = $_POST['prezzo'];
$quantita = $_POST['quantita'];
$percento = $_POST['percento'];
$provvigione = ($prezzo*$quantita) *$percento/100;
$rimborso = ($prezzo*$quantita) - $provvigione;
$id_venditore = $_POST['id_venditore'];
$venduto = $_POST['venduto'];
$data_vendita = $_POST['data_vendita'];
$link = $_POST['link'];

for($i=0; $i < $_POST['nvolte']; $i++) { 
	
mysql_query("INSERT INTO oggetti
             ( id , data , descrizione , prezzo , quantita , percento , provvigione , rimborso , id_venditore , venduto , data_vendita , link )
             VALUES 
             ( '$id', '$data' , '$descrizione', '$prezzo', '$quantita', '$percento', '$provvigione', '$rimborso', '$id_venditore', '$venduto', '$data_vendita', 'link/$link' )") OR DIE(mysql_error());
$result = mysql_query ("SELECT * FROM oggetti WHERE data > 31/10/12");
$num=mysql_numrows($result);


}
} 

while($row = mysql_fetch_array( $result )) { 

    $id=$row['id']; 
        
}  



echo "Record inserito <br>";
echo "<td align='center'>id $id</td>/<td align='center'>data $data</td>/<td align='center'> $descrizione</td>/<td align='center'> prezzo $prezzo</td>/<td align='center'>quantita' $quantita</td>/<td align='center'>venditore $id_venditore</td><br>";


} else {
                echo "<p>Limite massimo di 10 oggetti superato</p>";
            }

?>
</body>
</html>
 <? } ?>

Ho tolto if (isset($_POST['procedi']) && $_POST['procedi'] == "Procedi") {
// se il campo nvolte è minore di venti vai avanti
perchè credo che per colpa sua non mi caricava nessun record...

Come aggiungo sicurezza agli altri input?
Sempre in questo modo? ----> "if ((int)"
 

Discussioni simili