[PHP + MYSQL ] Inserimento dati in database da form dinamico

keyz23

Nuovo Utente
18 Lug 2018
30
0
6
Buongiorno a tutti,
Sto provando a creare una pagina web con un form che va a popolare due table nel database.
In particolare in questo form ho una parte fissa e una dinamica, ovvero che l'utente può aggiungere un numero di partecipanti desiderati cliccando su un bottone.
Il fatto è che la parte fissa del form viene inserita senza problemi nel database. La parte dinamica invece non ne vuole proprio sapere.. ci sbatto la testa da un po e non so come fare.

Vi faccio vedere il codice cosi mi posso esprimere meglio:

index.php

PHP:
index.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<title>Prenotazione </title>
<script src="utils.js"></script>
</head>

<body>

Inserire i dati richiesti:<br><br>
<form method="post" action="input.php">
<b> Richiedente :</b><br><br>
Nome:<input type="text" name="nome" size="20"><br>
Cognome:<input type="text" name="cognome" size="20"><br>
Email: <input type="email" name="email" size="20"><br>
Oggetto:<br><textarea name="oggetto" rows="5" cols="40" placeholder="Specificare oggetto"></textarea><br>
<select class="date" name="day">
                        <option value="1">01
                        </option>
                        <option value="2">02
                        </option>
                        <option value="3">03
                        </option>
                        <option value="4">04
                        </option>
                        <option value="5">05
                        </option>
                        <option value="6">06
                        </option>
                        <option value="7">07
                        </option>
                        <option value="8">08
                        </option>
                        <option value="9">09
                        </option>
                        <option value="10">10
                        </option>
                        <option value="11">11
                        </option>
                        <option value="12">12
                        </option>
                        <option value="13">13
                        </option>
                        <option value="14">14
                        </option>
                        <option value="15">15
                        </option>
                        <option value="16">16
                        </option>
                        <option value="17">17
                        </option>
                        <option value="18">18
                        </option>
                        <option value="19">19
                        </option>
                        <option value="20">20
                        </option>
                        <option value="21">21
                        </option>
                        <option value="22">22
                        </option>
                        <option value="23">23
                        </option>
                        <option value="24">24
                        </option>
                        <option value="25">25
                        </option>
                        <option value="26">26
                        </option>
                        <option value="27">27
                        </option>
                        <option value="28">28
                        </option>
                        <option value="29">29
                        </option>
                        <option value="30">30
                        </option>
                        <option value="31">31
                        </option>
                    </select>
                    <select name="month">
                        <option value="1">January
                        </option>
                        <option value="2">February
                        </option>
                        <option value="3">March
                        </option>
                        <option value="4">April
                        </option>
                        <option value="5">May
                        </option>
                        <option value="6">June
                        </option>
                        <option value="7">July
                        </option>
                        <option value="8">August
                        </option>
                        <option value="9">September
                        </option>
                        <option value="10">October
                        </option>
                        <option value="11">November
                        </option>
                        <option value="12">December
                        </option>
                    </select>
<br>
<b>Partecipanti </b>
<br>
<br>
<div id="start">
    <div id="first">
      Nome:<input type="text" name="nomep[]" size="20"><br>
      Cognome: <input type="text" name="cognomep[]" size="20"><br>
      Email: <input type="email" name="emailp[]" size="20"><br>
      Personale:
       <select name="tipologia[]" required="required">
                <option>Interno</option>
                <option>Esterno</option>
       </select>
      <br>
      <br>
    </div>
  </div>
  <br>
 Numero partecipanti interni:
 <input type="text" id="n1" size="1" value="1"><br>

<button><a href="#" id="add">Aggiungi partecipante</a></button>

<input type="submit" value="Invia" >
</form>
</body>
</html>

input.php

PHP:
<?php
//Connecting to db here

$servername = "localhost";
$username = "root";
$password = "123456789";
$dbname = "Project1";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";

// Richiedente
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$email = $_POST['email'];
$oggetto = $_POST['oggetto'];
$day = $_POST['day'];
$month = $_POST['month'];

// Personale
$nomep = $_POST['nomep'];
$cognomep = $_POST['cognomep'];
$emailp = $_POST['emailp'];
$tipologia = $_POST['tipologia'];

//inserting data order
$query1 = "INSERT INTO Prenotazione (nome,cognome,email,oggetto,day,month) VALUES ('$nome','$cognome','$email','$oggetto', $day, $month)";
//execute the query here
$result = mysqli_query($conn, $query1 );

// SINO A QUI tutto funziona tranquillamente

// Interni
$query = "";
if( !empty( $_POST['nomep'] ) ) {

    foreach( $_POST['nomep'] as $key => $nomep ) {

        $cognomep = empty( $_POST['cognomep'][$key] ) ? NULL : $_POST['cognomep'][$key];
        $emailp = empty( $_POST['emailp'][$key] ) ? NULL : $_POST['emailp'][$key];
        $tipologia = empty( $_POST['tipologia'][$key] ) ? NULL : $_POST['tipologia'][$key];
        $query .= " ( '$nomep', '$cognomep', '$emailp','$tipologia', '$email', '$oggetto' ) ".(end($$_POST['nomep']) ? '' : ',');
    }
}
var_dump($query); // MI restituisce le stringhe in maniera corretta.
if( !empty( $query ) ) {

    $query2 = "INSERT INTO Personale (nomep, cognomep, emailp, tipologia, email_rich,oggetto_rich) VALUES ".$query;
    $result = mysqli_query($conn, $query2 ); //
}

?>

utils.js

Codice:
$(document).ready(function() {
    $("#add").click(function(){

      var val1 =$("#n1").val();
      for(var i=0;i<val1;i++){
      $("#start").append($("#first").clone());
      }
    });
});

Il database ha queste due table:

Personale (nomep, cognomep, emailp, tipologia, email_rich,oggetto_rich) ;
Prenotazione (nome,cognome,email,oggetto,day,month)

Secondo voi come posso fare? Grazie del tempo e dell'aiuto.
 
Ultima modifica:

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
non funziona "(end($$_POST['nomep']) ? '' : ',')" perché restituisce sempre la virgola e la query da errore
Codice:
INSERT INTO Personale (nomep, cognomep, emailp, tipologia, email_rich, oggetto_rich) VALUES ( 'eeeeeeee', 'ffffffffffffff', '[email protected]','Esterno', '[email protected]', 'cccccccccccccc' ) , ( 'iiiiiiiiiiiiii', 'kkkkkkkkkkkkkkkkkkk', '[email protected]','Interno', '[email protected]', 'cccccccccccccc' ) ,
vedi la virgola finale
 

keyz23

Nuovo Utente
18 Lug 2018
30
0
6
Grazie per la risposta. Ho provato anche a cancellare quella parte finale
Codice:
.(end($$_POST['nomep']) ?);
Ma inserisce solamente all'interno di Prenotazione e non in Personale
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
usiamo una variabile, $x, per controllare quando inserire la virgola
PHP:
// Interni
$query = "";
$x = 0;
if( !empty( $_POST['nomep'] ) ) {

    foreach( $_POST['nomep'] as $key => $nomep ) {

        $cognomep  = empty( $_POST['cognomep'] [$key] ) ? NULL : $_POST['cognomep'] [$key];
        $emailp    = empty( $_POST['emailp']   [$key] ) ? NULL : $_POST['emailp']   [$key];
        $tipologia = empty( $_POST['tipologia'][$key] ) ? NULL : $_POST['tipologia'][$key];

        if( $x ) $query .= ",";

        $query .= " ( '$nomep', '$cognomep', '$emailp','$tipologia', '$email', '$oggetto' )";

        $x = 1;

        echo $key." - ".$query."<br /><br />";
    }
}
if( !empty( $query ) )
{
    $query2 = "INSERT INTO Personale (nomep, cognomep, emailp, tipologia, email_rich, oggetto_rich) VALUES ".$query;
    echo $query2."<br /><br />";
//  $result = mysqli_query($conn, $query2 ); //
}
ps, ho commentato esecuzione "insert" e messo degli "echo", sistema tu
 
  • Like
Reactions: keyz23

keyz23

Nuovo Utente
18 Lug 2018
30
0
6
Ciao scusami per il ritardo nella mia risposta. Per prima cosa ti ringrazio veramente per l'aiuto che mi stai dando. Ho inserito il codice nel mio "progetto" ma continua ad inserire solamente in Prenotazione e non in Personale.
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
posta tutto il codice, probabilmente c'é ancora un errore nella query

in ogni caso prova ad eseguire la query con il codice seguente in modo da vedere l'errore
PHP:
$result = mysqli_query($conn, $query2 );
if ($result === TRUE) { echo "New record created successfully"; }
else                  { echo "Error: " . $query2 . "<br />" . $conn->error; }
 
  • Like
Reactions: keyz23

keyz23

Nuovo Utente
18 Lug 2018
30
0
6
posta tutto il codice, probabilmente c'é ancora un errore nella query

in ogni caso prova ad eseguire la query con il codice seguente in modo da vedere l'errore
PHP:
$result = mysqli_query($conn, $query2 );
if ($result === TRUE) { echo "New record created successfully"; }
else                  { echo "Error: " . $query2 . "<br />" . $conn->error; }
Ti ringrazio in questo modo sono riuscito a risolvere il problema :) Grazie mille
Un’ultimissima cosa! Ma se volessi creando un nuovo campo che questo sia vuoto?
Mi spiego se io compilo il campo e poi clicco aggiungi partecipante mi visualizza il nuovo campo con tutti i dati di quello di prima. C’è un modo per evitare che ciò avvenga?
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
prova così
HTML:
<script>
$(document).ready(function()
{
    $("#add").click(function()
    {
//      $("#start").append($("#first").clone());

        var newSet = $("#first").clone().find("input").val("").end();
        $("#start").append(newSet)
    });
});
</script>

verifica bene il risultato (sono di corsa …)
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
ultimo pezzetto,
HTML:
<script>
$(document).ready(function()
{
    var $conta = 1;

    $("#add").click(function()
    {
        var newSet = $("#first").clone().find("input").val("").end();
        $("#start").append(newSet)

        $conta += 1;
        $("#n1").val($conta);
    });
});
</script>
 
  • Like
Reactions: keyz23

Felotti

Nuovo Utente
7 Ott 2019
14
0
1
Ciao a tutti
Scusate il disturbo
Keyz23 utilizza un pulsante per aggiungere nuovi partecipanti in base alle necessità dell'utente.
A me serve circa la stessa cosa, ma mi sorge una domanda.
Per memorizzare all'interno degli array i dati (non uso un DB ma uso un array per ogni campo), uso array_push
Come gestisco i dati eventualmente aggiunti dall'utente grazie al pulsante "Aggiungi"?
Da dove li recupero?
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
Per memorizzare all'interno degli array i dati (non uso un DB ma uso un array per ogni campo), uso array_push
Come gestisco i dati eventualmente aggiunti dall'utente grazie al pulsante "Aggiungi"?
Da dove li recupero?
trovo quanto hai scritto leggermente "ermetico" (non lo capisco),
esempio "non uso un DB ma uso un array per ogni campo" dove, come, perché e quando ?
puoi spiegare cosa fai e cosa ti serve ?
 
Discussioni simili
Autore Titolo Forum Risposte Data
E Inserimento dati da PHP in tabella MySQL PHP 5
M Inserimento Array prelevato da Database in Php in un altra tabella mysql PHP 0
S Php e mysql, estrazione da una tabella e inserimento in un'altra tabella PHP 14
G Inserimento array proveniente da un modulo di registrazione con PHP e MySQL PHP 6
G Inserimento loop in una INSERT query in PHP e MySQL PHP 2
N Inserimento valori da Joomla a database MySql tramite PHP Joomla 0
EffeElle Php problema su inserimento dati mysql PHP 47
L PHP/MYSQL + Inserimento automatico dati PHP 10
N [PHP/MySQL] Problema inserimento stringhe ' or ', ' and ' PHP 2
P Codifica caratteri speciali mysql php PHP 0
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Ricreare struttura php+mysql su Xampp Apache 0
M Array associativi php su 2 campi mysql PHP 10
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
Z MySql injection PHP PHP 1
D problema php mysql PHP 1
D problema php mysql PHP 1
L Google chart php mysql PHP 2
L Aiuto per programma web php/mySQL PHP 2
S Problemi delle funzioni eliminate con PHP e MySQL PHP 4
C Aiuto compiuto scuola PHP/MySQL PHP 2
G Problema caricamento tabelle MySql da PhP PHP 0
L update tabelle in php mysql [risolto] PHP 6
F Passare una variabile php dal DB mysql alla pagina PHP 3
B Fare calcoli con php da tabella mysql PHP 2
D [MySQL] [PHP] SQL andare da capo MySQL 0
P [OFFRO] Realizzazione siti web in PHP/MYSQL, responsive e Ottimizzati SEO Offerte e Richieste di Lavoro e/o Collaborazione 0
Tommy03 Firebase o PHP+Mysql? Sviluppo app per Android 0
pjtertdj Visualizzazione dati in php da mysql con funzione matematica in javascript PHP 1
E Cerco programmatore PHP/Mysql - retribuito Offerte e Richieste di Lavoro e/o Collaborazione 0
K [RISOLTO] Problema Griglia Php+Mysql PHP 13
Z Gestionale in Php/mysql: Quanto farsi pagare? Aiuto! Discussioni Varie 0
R radio input php mysql PHP 2
E Caricare dati da DB MySql all'apertura pagina, meglio PHP o Javascript? PHP 1
giusebos [retribuito] Cercasi programmatore PHP/MySql Offerte e Richieste di Lavoro e/o Collaborazione 1
N Apache + MySQL + PHP MacOs Mojave Web Server 0
T PHP+MYSQL: problema con quelle maledette lettere accentate... PHP 5
M [PHP] Metodo migliore per fare login a un DB Mysql PHP 1
gandalf1959 problema con la codifica caratteri accentati e speciali tra php e mysql PHP 3
webmachine [PHP][MYSQL] Problema con le SELECT PHP 5
V Creare tabella mysql con php non funziona PHP 1
W Area riservata sicura PHP MySQL PHP 12
G php salvare file in campo blob mysql: massimo 4MB PHP 1
xone [Vendo] Gestionale Magazzino PHP-MYSQL Altri Annunci 0
M Stampare con php e mysql PHP 8
P Importazione dati da file xml in db mysql con php PHP 17

Discussioni simili