Inserimento dati nel database tramite form + altre operazioni

AndreaBet

Nuovo Utente
5 Giu 2020
19
0
1
22
Treviso
Salve a tutti,
innanzitutto grazie mille per l'aiuto offerto nel topic precedente.
Sto riscontrando un problema nell'inserimento di dati nel database tramite una form in quanto, seppur sia abbastanza sicuro che il codice sia corretto, non accade nulla. L'inserimento non avviene e non compaiono errori.
Lascio il codice:
PHP:
<html>
 <head>
 </head>
 <body>
 
  <form method="POST">
   IDcliente <input type="text" name="id"/> </br>
   Data <input type="date" name="data"/> </br>
   Bene <select name="nm">
  <?php
    $c = new mysqli("localhost","root","","elaborato");
    $s = "SELECT CodiceBene, Nome FROM Beni";
    $r=mysqli_query($c, $s);
    while ($row=mysqli_fetch_assoc($r)){
        $codice=$row['CodiceBene'];
        $nome=$row['Nome'];
        echo "<option value='$codice'>$nome</option>";
    }
  ?>
   </select> </br>
   Quantit&agrave; <input type="number" name="quan"/> </br>
   Prezzo <input type="number" name="prezzo"/> </br>
   Corriere  <select name="cor">
  <?php
    $s = "SELECT IDcorriere, Nome FROM Corrieri";
    $r=mysqli_query($c, $s);
    while ($row=mysqli_fetch_assoc($r)){
        $id=$row['IDcorriere'];
        $nome=$row['Nome'];
        echo "<option value='$IDcorriere'>$nome</option>";
    }
  ?>
   </select> </br>
   <input type="submit" name="reg" value="Registra"> </br>
  </form>
 
  <?php
    $id = $_POST["id"];
    $data = $_POST["data"];
    $bene = $_POST["nm"];
    $quan = $_POST["quan"];
    $prez = $_POST["prezzo"];
    $cor = $_POST["cor"];
    
    $s = "INSERT INTO Ordini (IDclienteFK, Data, CodiceBeneFK, Quantità, Prezzo, IDcorriereFK) VALUES
          ('$id','$data','$bene','$quan','$prez','$cor')";
    $r=mysqli_query($c, $s);
?>
 </body>
</html>

In secondo luogo stavo pensando ad un'alternativa del codice qui sopra nel quale il prezzo dell'ordine venga calcolato moltiplicando il prezzo del bene per la sua quantità. Lascio il codice creato come prova il quale ovviamente ha come base il form precedente:
Codice:
    $nomebene=$_POST["nm"];
    $quan=$_POST["quan"]:
    $s = "SELECT Prezzo FROM Beni WHERE Nome=$nomebene";
    $r=mysqli_query($c, $s);
    $prezzo1=$r->fetch_assoc();
    $prezzotot=$prezzo1*$quan;
    $s = "INSERT INTO Ordini (IDclienteFK, Data, CodiceBeneFK, Quantità, Prezzo, IDcorriereFK) VALUES
          ('$id','$data','$bene','$quan','$prezzotot','$cor')";
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
$s = "INSERT INTO Ordini (IDclienteFK, Data, CodiceBeneFK, Quantità, Prezzo, IDcorriereFK) VALUES ('$id','$data','$bene','$quan','$prez','$cor')";
Hai già provato a fare un inserimento con valori "manuali" per vedere se è un problema di variabili o di inserimento?
E poi forse sarebbe meglio mettere un isset prima di prendere le variabili per controllare che sia stato inviato
 

AndreaBet

Nuovo Utente
5 Giu 2020
19
0
1
22
Treviso
L'inserimento manuale avviene senza problemi. Magari il problema ha a che fare con il fatto che prima di 'IDClienteFK' nel database è presente anche 'IDOrdine'? Esso però è autoincrement pertanto non dovrebbe essere un problema non inserirlo.
Per quanto riguarda l'isset dove e come? L'unico modo di utilizzo che abbiamo trattato durante l'anno scolastico è stato il posizionamento di un !isset all'inizio del codice per vedere se era stato premuto il pulsante ma, come da topic precedente, l'ho dovuto rimuovere in quanto mi creava errori e non mi permetteva la creazione del menù a tendina
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
Intanto prova a modificare così:
PHP:
  <?php
$c = new mysqli("localhost","root","","elaborato");
if(isset($_POST['reg'])){
    $id = $_POST["id"];
$data = $_POST["data"];
$bene = $_POST["nm"];
$quan = $_POST["quan"];
$prez = $_POST["prezzo"];
$cor = $_POST["cor"];

$ins = "INSERT INTO Ordini (IDclienteFK, Data, CodiceBeneFK, Quantità, Prezzo, IDcorriereFK) VALUES
('$id','$data','$bene','$quan','$prez','$cor')";
$ris=mysqli_query($c, $ins);
}
?>
<html>
 <head>
 </head>
 <body>
 
  <form method="POST" action="">
   IDcliente <input type="text" name="id"/> </br>
   Data <input type="date" name="data"/> </br>
   Bene <select name="nm">
  <?php
$s = "SELECT CodiceBene, Nome FROM Beni";
$r=mysqli_query($c, $s);
while ($row=mysqli_fetch_assoc($r)){
$codice=$row['CodiceBene'];
$nome=$row['Nome'];
echo "<option value='$codice'>$nome</option>";
}
?>
   </select> </br>
   Quantit&agrave; <input type="number" name="quan"/> </br>
   Prezzo <input type="number" name="prezzo"/> </br>
   Corriere  <select name="cor">
  <?php
    $s = "SELECT IDcorriere, Nome FROM Corrieri";
$r=mysqli_query($c, $s);
while ($row=mysqli_fetch_assoc($r)){
$id=$row['IDcorriere'];
$nome=$row['Nome'];
echo "<option value='$IDcorriere'>$nome</option>";
}
?>
   </select> </br>
   <input type="submit" name="reg" value="Registra"> </br>
  </form>
 </body>
</html>
 

AndreaBet

Nuovo Utente
5 Giu 2020
19
0
1
22
Treviso
Grazie veramente per il tuo aiuto Tommy.
Ho provato ad utilizzare il tuo codice ma l'inserimento non va a buon fine. Ho un dubbio: nell'insert io devo inserire il codice del bene. Dal menù a tendina però seleziono il nome. Nonostante questo però una volta che io seleziono il nome del bene dal menù a tendina comunque effettivamente vado a selezionare il suo codice no? Perché se così non fosse potrebbe essere quello il problema. Al posto di inserire il codice sto andando ad inserire il nome e pertanto l'inserimento non avviene
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
No no inserisci il codice, perché è value.
Prova ad aggiungere questo e dì cosa visualizzi:
PHP:
<?php
$c = new mysqli("localhost","root","","elaborato");
if(isset($_POST['reg'])){
$id = $_POST["id"];
$data = $_POST["data"];
$bene = $_POST["nm"];
$quan = $_POST["quan"];
$prez = $_POST["prezzo"];
$cor = $_POST["cor"];
echo "$id<br>$data<br>$bene<br>$quan<br>$prez<br>$cor";
$ins = "INSERT INTO Ordini (IDclienteFK, Data, CodiceBeneFK, Quantità, Prezzo, IDcorriereFK) VALUES
('$id','$data','$bene','$quan','$prez','$cor')";
$ris=mysqli_query($c, $ins);
}
?>
<html>
 <head>
 </head>
 <body>
 
  <form method="POST" action="">
   IDcliente <input type="text" name="id"/> </br>
   Data <input type="date" name="data"/> </br>
   Bene <select name="nm">
  <?php
$s = "SELECT CodiceBene, Nome FROM Beni";
$r=mysqli_query($c, $s);
while ($row=mysqli_fetch_assoc($r)){
$codice=$row['CodiceBene'];
$nome=$row['Nome'];
echo "<option value='$codice'>$nome</option>";
}
?>
   </select> </br>
   Quantit&agrave; <input type="number" name="quan"/> </br>
   Prezzo <input type="number" name="prezzo"/> </br>
   Corriere  <select name="cor">
  <?php
    $s = "SELECT IDcorriere, Nome FROM Corrieri";
$r=mysqli_query($c, $s);
while ($row=mysqli_fetch_assoc($r)){
$id=$row['IDcorriere'];
$nome=$row['Nome'];
echo "<option value='$IDcorriere'>$nome</option>";
}
?>
   </select> </br>
   <input type="submit" name="reg" value="Registra"> </br>
  </form>
 </body>
</html>
Le variabili le leggi correttamente?
 

AndreaBet

Nuovo Utente
5 Giu 2020
19
0
1
22
Treviso
Compare questo. Stampa i valori inseriti nel form ma non li inserisce nel database.
E ora che ci faccio caso non stampa il codice del corriere.
 

Allegati

  • Prova.png
    Prova.png
    6,2 KB · Visite: 283

AndreaBet

Nuovo Utente
5 Giu 2020
19
0
1
22
Treviso
Probabilmente il problema deriva proprio dal fatto che il codice del corriere non viene salvato in quanto si tratta di un'entità "obbligatoria" da inserire nella tabella
 

AndreaBet

Nuovo Utente
5 Giu 2020
19
0
1
22
Treviso
Si cavolo, l'ho notato anche io non appena ho inviato l'ultimo messaggio. Apparentemente il problema nell'inserimento era proprio quello! Sto diventando fuso e non mi rendo conto nemmeno di queste sciocchezze. Grazie mille!
Per quanto riguarda la seconda domanda del topic? L'idea è correttamente applicata?
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
$s = "SELECT Prezzo FROM Beni WHERE Nome=$nomebene"; $r=mysqli_query($c, $s); $prezzo1=$r->fetch_assoc();
Si, ma questo pezzo devi cambiarlo così:
PHP:
$seleziona = mysqli_query($c, "SELECT Prezzo FROM Beni WHERE Nome='$nomebene'");
while($get_sel=mysqli_fetch_assoc($seleziona)){
    $prezzo1=$get_sel['Prezzo'];
}
 

AndreaBet

Nuovo Utente
5 Giu 2020
19
0
1
22
Treviso
Perfetto! Funziona! Avevo riscontrato degli errori iniziali ma nulla che la mia piccola mente non riuscesse a risolvere.
Riusciresti brevemente a spiegarmi il funzionamento/significato delle indicazioni presenti nel ciclo while?

In ogni caso tii ringrazio molto per il tuo aiuto. La prossima cosa che punto a fare è quella di rimuovere la merce dal magazzino una volta acquistata ma credo possa bastare un ALTER TABLE (mi sembra sia questa la funzione) con il quale modificare la quantità in magazzino, qualcosa del tipo "quantitàmag - quantitàordinata".
Dopodichè procederò anche alla creazione di una maschera dove invece di rimuovere si inserisce merce nel magazzino ma alla fine si tratta dello stesso procedimento inverso immagino.
 

AndreaBet

Nuovo Utente
5 Giu 2020
19
0
1
22
Treviso
Sto provando a creare un form con il quale inserire la quantità di merce da aggiungere alle scorte ma quando provo ad estrarre dal database la quantità già esistente non mi salva la variabile.
L'errore che mi da è: Undefined variable: q1 on line 11
Il codice è:
PHP:
<?php
    $c = new mysqli("localhost","root","","elaborato");
    if(isset($_POST['reg'])){
        $id = $_POST["id"];
        $q = $_POST["quan"];

        $s = mysqli_query($c, "SELECT Quantità FROM Scorte WHERE CodiceBeneFK='$id'");
        while($get_sel=mysqli_fetch_assoc($s)){
            $q1=$get_sel['Quantità'];
        }
    $quantitàtot=$q1+$q;

    $alt = "UPDATE Scorte SET 'Quantità'=[$quantitàtot] WHERE CodiceBeneFK='$id'";
    $ris=mysqli_query($c, $alt);
    }
?>

<html>
 <head>
 </head>
 <body>
 
  <form method="POST">
   Scorta <select name="id"/>
  <?php
    $s = "SELECT CodiceBeneFK, Nome FROM Scorte, Beni WHERE CodiceBene=CodiceBeneFK";
    $r=mysqli_query($c, $s);
    while ($row=mysqli_fetch_assoc($r)){
        $id=$row['CodiceBeneFK'];
        $nm=$row['Nome'];
        echo "<option value='$id'>$nm</option>";
    }
    ?>
   </select> </br>
   Quantit&agrave; <input type="number" name="quan" value="inserisci quantit&agrave; da aggiungere alla scorta"/> </br>
   <input type="submit" name="reg" value="Registra"> </br>
  </form>
 </body>
</html>
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
<?php $c = new mysqli("localhost","root","","elaborato"); if(isset($_POST['reg'])){ $id = $_POST["id"]; $q = $_POST["quan"]; $s = mysqli_query($c, "SELECT Quantità FROM Scorte WHERE CodiceBeneFK='$id'"); while($get_sel=mysqli_fetch_assoc($s)){ $q1=$get_sel['Quantità']; } $quantitàtot=$q1+$q; $alt = "UPDATE Scorte SET 'Quantità'=[$quantitàtot] WHERE CodiceBeneFK='$id'"; $ris=mysqli_query($c, $alt); } ?>
1. la variabile $quantitàtot devi cambiarla senza accento (tipo $quantita)
2. la somma va dentro al while
3. l'UPDATE non può funzionare perché prelevi più record, quindi $quantita ha più valori
4.se il tuo obiettivo è sommare la quantità del form alla quantità del database ti conviene fare cosi:
PHP:
<?php
    $c = new mysqli("localhost","root","","elaborato");
if(isset($_POST['reg'])){
$id = $_POST["id"];
$q = $_POST["quan"];
$alt = "UPDATE Scorte SET Quantità=Quantità+$q WHERE CodiceBeneFK='$id'";
$ris=mysqli_query($c, $alt);
}
?>
 
  • Like
Reactions: AndreaBet

AndreaBet

Nuovo Utente
5 Giu 2020
19
0
1
22
Treviso
Cavolo proprio stupido l'errore della variabile accentata, non sai quante volte mi è stato ripetuto durante il terzo anno di non fare errori simili durante la programmazione in c++.
Grazie per la risoluzione, ci sarei dovuto arrivare da solo ma è da un bel po' che non tocchiamo più questi temi quindi mi sono un po' perso
 

AndreaBet

Nuovo Utente
5 Giu 2020
19
0
1
22
Treviso
Ultima domanda della serata lo prometto, cosa c'è che non va qui? Sto provando ad effettuare il controllo per vedere se la quantità richiesta/ordinata è maggiore di quella in magazzino
PHP:
<?php
    $c = new mysqli("localhost","root","","elaborato");
    if(isset($_POST['reg'])){
        $id = $_POST["id"];
        $data = $_POST["data"];
        $codbene = $_POST["nm"];
        $qordine = $_POST["quan"];
        $cor = $_POST["cor"];

        $s = mysqli_query($c, "SELECT Quantità FROM Scorte WHERE CodiceBeneFK='$id'");
        while($get_sel=mysqli_fetch_assoc($s)){
            $qscorta=$get_sel['Quantità'];
        }
        
        if("$qscorta"<"$qordine")
            echo "Impossibile procedere all'ordine, quantit&agrave; di merce insufficiente";
        else{       
            $s = mysqli_query($c, "SELECT Prezzo FROM Beni WHERE CodiceBene='$codbene'");
            while($get_sel=mysqli_fetch_assoc($s)){
                $prezzo1=$get_sel['Prezzo'];
            }
            $prezzotot=$prezzo1*$quan;

            $i = "INSERT INTO Ordini (IDclienteFK, Data, CodiceBeneFK, Quantità, Prezzo, IDcorriereFK) VALUES
                ('$id','$data','$codbene','$quan','$prezzotot','$cor')";
            $ris=mysqli_query($c, $i);
    
            alt = "UPDATE Scorte SET Quantità=Quantità-$qordine WHERE CodiceBeneFK='$id'";
            $r=mysqli_query($c, $alt);
        }
    }
?>
 

AndreaBet

Nuovo Utente
5 Giu 2020
19
0
1
22
Treviso
Grazie.
Il controllo però sul se la quantità ordinata sia maggiore di quella disponibile non funziona ancora.
Quando infatti provo ad ordinare 999 beni seppur ce ne siano solo 30 me lo fa fare tranquillamente
 
Discussioni simili
Autore Titolo Forum Risposte Data
S [PHP] email con inserimento dati nel database PHP 23
G mysql - problemi inserimento dati nel database, consigli. MySQL 3
L Inserimento dati nel database. PHP 3
D tabelle e inserimento dati nel database PHP 2
zerobit Velocizzare inserimento dati nel DB MySQL 2
asevenx errore con l'inserimento dei dati nel database, campi vuoti Classic ASP 1
E Doppio inserimento dati nel DB PHP 7
T errore asp (inserimento dati nel db) Classic ASP 1
L inserimento form dati multipli ? PHP 0
J Form inserimento dati in database Ajax 1
Alex_70 Inserimento dati a cascata PHP 204
T Da xsd a xml ed inserimento dati in excel XML 0
G [Javascript] Errore inserimento dati Backend Node.js e workbench Javascript 1
B [PHP] Creare PDF dopo inserimento dati form PHP 4
C [PHP] Form con Inserimento dati dalla maschera e un menù a discesa che prende i dati dal db PHP 1
E Inserimento dati da PHP in tabella MySQL PHP 5
E Form inserimento dati con JavaScript Javascript 0
K [PHP] Inserimento dati database con postgres PHP 2
K [PHP + MYSQL ] Inserimento dati in database da form dinamico PHP 13
M Inserimento dati checkbox multipli in db da ajax a php PHP 1
M [PHP] errore in semplie form inserimento dati PHP 7
S [PHP] Inserimento dati su tabelle collegate 1-m PHP 17
M [PHP] controllo inserimento dati un un form PHP 4
cris8380 [PHP] Generare file pdf con inserimento dati PHP 34
cris8380 Inserimento dei dati automatici mediante numero di tessera. PHP 21
J Inserimento dati in db da due o più form PHP 0
P problemi inserimento dati PHP 1
S Trigger con inserimento dati preesistenti MySQL 0
G Estrazioni dati dal database e inserimento nella pagina html Database 11
A Aiuto form inserimento dati PHP 3
T Problema inserimento dati in phpmyadmin PHP 2
P scritta di avviso inserimento dati corretti che non vuole scendere verso il basso PHP 4
D Verifica inserimento dati form PHP 12
M Problema inserimento dati in sqlite Sviluppo app per Android 1
L Cerco lavoro retribuito,mi offro come articolista,inserimento dati,promozione siti,blog,forum Offerte e Richieste di Lavoro e/o Collaborazione 1
M Problema con modulo registrazione e inserimento dati in database PHP 8
otto9due Piccolo problemino su inserimento dati db da form PHP 5
M chiusura colorbox dopo inserimento dati in un database tramite form PHP 0
S Inserimento dati in colonna mysql PHP 10
N Inserimento dati in db che avviene due volte PHP 1
K Controllo esistenza dati e inserimento in db ASP.NET 2
B Problema inserimento dati con apostrofo MySQL 1
M [RISOLTO] inserimento dati db PHP 22
M Inserimento dati in db mysql dopo aver confermato e-mail PHP 7
P Inserimento in tabella da select + altri dati MySQL 2
G Arresto dello script per inserimento dati. PHP 4
P Problemi inserimento dati con checkbox multiplo PHP 17
P Problemi inserimento dati database tramite form PHP 12
P Controllo inserimento dati Javascript 6
Z Aiuto! problemi di inserimento dati da form PHP 9

Discussioni simili