Da form sotto forma di tabella html a mysql

stefanone69

Nuovo Utente
11 Giu 2013
9
0
0
Salve,
mi presento visto che è la prima volta che scrivo su questo Forum.
Sono un ragazzino di 43 anni cresciuto con la passione per i computer che mastica dall'hardware alla programmazione ma non sono un genio in nessuna materia specifica.
Quando ho la necessità di programmare, visto che provengo dal basic del VIC20, utilizzo VB.net ed attualmente sto modificando un'applicazione che ho realizzato tempo fa per la "Sagra della Polenta" del mio paese.
Proggetto ghiotto eh?
Veniamo al dunque: l'applicazione da me realizzata in VB.net, che utilizziamo con successo da diversi anni, permette di effettuare un ordine al PC della cassa che stampa l'ordine per il cliente e le comande per la cucina ed il bar.
La mia idea per la prossima edizione della sagra è quella di permettere a chiunque sia in possesso di uno smartphone, tablet o altro dispositivo di accedere alla rete WIFI della sala e tramite browser effettuare un ordine per poi presentarsi alla cassa con l'id dell'ordine e dopo aver pagato ricevere la stampa immediata dell'ordine.
Ovviamente per la parte dell'applicazione VB non ho avuto problemi: spostato il DB da file di ACCESS a MYSQL e creato un loop che verifica ogni 5 secondi se c'è un nuovo record nel DB.
Ora devo realizzare la parte in PHP e quindi imparare un nuovo linguaggio ma l'età non mi è di supporto.... fatico!
Questo è quello che ho fatto sinora:
il file index:
PHP:
<HTML>
<HEAD>
<TITLE>Ordine</TITLE>
</HEAD>
<BODY>
INSERIRE TAVOLO 0 PER ASPORTO <br />
<FORM ID="ORDINE" NAME="ORDINE" METHOD="POST"
ACTION="raccoglieord.php">
<LABEL>Sig:
<INPUT TYPE="TEXT" NAME="Sig" ID="Sig" />
</LABEL>
<P><LABEL>Tavolo:
<INPUT TYPE="TEXT" NAME="Tavolo" ID="Tavolo" />
</LABEL></P>
<P><LABEL>Note:
<INPUT TYPE="TEXT" NAME="Note" ID="Note" />
</LABEL></P>
<P>
<INPUT TYPE="SUBMIT" NAME="Submit" ID="Submit" VLUE="Invia" />
</P>
</FORM>
</BODY>
</HTML>

il file raccoglieord.php:
PHP:
<?php include ("conn.php");?>
<?php
$Sig=$_POST ['Sig'];
$Tavolo=$_POST ['Tavolo'];
$Note=$_POST ['Note'];
$Ore=time();
$Ore=date('Y-m-d H:i:s', $Ore);
$query="INSERT INTO Ordini (Sig, Tavolo, Note, Ore)";
$query.="VALUES ('".$Sig."','".$Tavolo."','".$Note."','".$Ore."')";
mysql_query ($query,$conn);
$id = mysql_insert_id();
echo $id;
$query=mysql_query("SELECT Descrizione,Prezzo FROM menu WHERE Attivo=1 ORDER BY Settore"); 
 echo "<table><td>Descrizione</td><td>Prezzo</td><td>Quantità</td><td>Note</td>"; 
while($riga=mysql_fetch_array($query))
{   
echo "<tr><td>".$riga['Descrizione']."</td><td>".$riga['Prezzo']."</td>";
echo "<td><INPUT TYPE='TEXT' NAME='Quanti' ID='Quanti' /></td>";
echo "<td><INPUT TYPE='TEXT' NAME='Note' ID='Note' /></td></tr>";
}
echo "</table>";
?>
<?php include ("close.php");?>

Funziona tutto bene ma non so come proseguire.
Ora l'utente dovrebbe inserire quantità ed eventuali note per ogni articolo a cui è interessato ed al termine premere un pulsante di conferma.
Quindi il codice dovrebbe creare una query ad ogni valore diverso da null di 'Quanti' che inserisce un record nella tabella righe_ordine con l'id dell'ordine, Descrizione, Quanti, Note.

Forse chiedo troppo alla vostra pazienza?

Se qualcuno ha voglia e tempo di rispondere gle ne sarò grato.

Grazie comunque a tutti per avermi letto.:byebye:
 
Ultima modifica:
heheh diciamo che stiamo facendo la stessa cosa... io invece che sul cibo sugli articoli... diciamo che ti sei messo in un bel casotto... Perche ora praticamente devi creare un ciclo che ogni qualvolta scelgono qualcosa, devi creare una linea nuova gemella... Alla fine farai la pagina che tramite ciclo, ti recupera tutti i dati...
 
si ma come?

si ma come faccio con un ciclo a rileggere riga per riga verificando l'inserimento dell'utente?
sono scarso anche di html...
 
Ultima modifica:
allora ti spiego.. il ciclo per prendere i relativi campi è facile...
innanzitutto i vari text in html falli cosi :

HTML:
<HTML>
<HEAD>
<TITLE>Ordine</TITLE>
</HEAD>
<BODY>
INSERIRE TAVOLO 0 PER ASPORTO <br />
<FORM ID="ORDINE" NAME="ORDINE" METHOD="POST"
ACTION="raccoglieord.php">
<LABEL>Sig:
<INPUT TYPE="TEXT" NAME="Sig" ID="Sig" />
</LABEL>
<P><LABEL>Tavolo:
<INPUT TYPE="TEXT" NAME="Tavolo" ID="Tavolo" />
</LABEL></P>
<P><LABEL>Note:
<INPUT TYPE="TEXT" NAME="Note[]" ID="Note" />
</LABEL></P>
<P>
<INPUT TYPE="SUBMIT" NAME="Submit" ID="Submit" VLUE="Invia" />
</P>
</FORM>
</BODY>
</HTML>

Quel <INPUT TYPE="TEXT" NAME="Note[]" ID="Note" /> significa che note è un array.

A questo punto una volta che tu sai quali sono i campi array (aggiungi le varie [] ai campi in cui ti serve un inserimento multiplo)

nella pagina seguente in php fai cosi :

PHP:
<?php
$note=$_POST['note']
$tavoli=$_POST['tavoli']
$conta=count($note);
for ($i=0;$i<$conta;$i++){   
echo "<tr><td>".$riga['Descrizione']."</td><td>".$riga['Prezzo']."</td>";
echo "<td><INPUT TYPE='TEXT' NAME='Quanti' ID='Quanti' /></td>";
echo "<td><INPUT TYPE='TEXT' NAME='Note' ID='Note' /></td></tr>";
// o cmq tutte le istruzioni finche è vera quella condizione
}
?>
 
passi da gigante

Prima di tutto grazie mille Emix, mi sei stato di grande aiuto anche se ho dovuto studiare molto per carpire qualche cosa di utile dal tuo post.
Ho utilizzato un array nell'input per poterlo ripescare con il post ma qualche cosa non và... mi ritorna:

Notice: Undefined index: Quanti[0] in C:\Program Files\EasyPHP-DevServer-13.1VC9\data\localweb\ordine\righeord.php on line 10
Notice: Undefined index: Note[0] in C:\Program Files\EasyPHP-DevServer-13.1VC9\data\localweb\ordine\righeord.php on line 11
Notice: Undefined index: Quanti[1] in C:\Program Files\EasyPHP-DevServer-13.1VC9\data\localweb\ordine\righeord.php on line 10
Notice: Undefined index: Note[1] in C:\Program Files\EasyPHP-DevServer-13.1VC9\data\localweb\ordine\righeord.php on line 11
ecc. ecc.

Questo è tutto il mio lavoro:
index.php:
PHP:
<HTML>
<HEAD>
<TITLE>Ordine</TITLE>
</HEAD>
<BODY>
INSERIRE TAVOLO 0 PER ASPORTO <br />
<FORM ID="ORDINE" NAME="ORDINE" METHOD="POST"
ACTION="raccoglieord.php">
<LABEL>Sig:
<INPUT TYPE="TEXT" NAME="Sig" ID="Sig" />
</LABEL>
<P><LABEL>Tavolo:
<INPUT TYPE="TEXT" NAME="Tavolo" ID="Tavolo" />
</LABEL></P>
<P><LABEL>Note:
<INPUT TYPE="TEXT" NAME="Note" ID="Note" />
</LABEL></P>
<P>
<INPUT TYPE="SUBMIT" NAME="Submit" ID="Submit" VLUE="Invia" />
</P>
</FORM>
</BODY>
</HTML>

raccogliord.php:
PHP:
<?php include ("conn.php");?>
<?php
$Sig=$_POST ['Sig'];
$Tavolo=$_POST ['Tavolo'];
$Note=$_POST ['Note'];
$Ore=time();
$Ore=date('Y-m-d H:i:s', $Ore);
$query="INSERT INTO Ordini (Sig, Tavolo, Note, Ore)";
$query.="VALUES ('".$Sig."','".$Tavolo."','".$Note."','".$Ore."')";
mysql_query ($query,$conn);
$id = mysql_insert_id();
echo $id;
$query=mysql_query("SELECT Descrizione,Prezzo FROM menu WHERE Attivo=1 ORDER BY Settore"); 
 echo "<table><td>Descrizione</td><td>Prezzo</td><td>Quantità</td><td>Note</td>"; 
 echo "<FORM ID='RIORDINE' NAME='RIORDINE' METHOD='POST' ACTION='righeord.php'>";
 echo "<input type='TEXT' name='id' value='".$id."'>";
 $i=0;
while($riga=mysql_fetch_array($query))
{   
 echo "<tr><td>".$riga['Descrizione']."</td><td>".$riga['Prezzo']."</td>";
echo "<td><INPUT TYPE='TEXT' NAME='Quanti[".$i."]' ID='Quanti' /></td>";
echo "<td><INPUT TYPE='TEXT' NAME='Note[".$i."]' ID='Note' /></td></tr>";
$i ++;
}
echo "</table>";
?>
<P>
<INPUT TYPE="SUBMIT" NAME="Submit" ID="Submit" VLUE="Invia" />
</P>
</FORM>

righeord.php:
PHP:
<?php include ("conn.php");?>
<?php 
$id=$_POST ['id'];
$query1 = "SELECT * FROM menu WHERE Attivo=1";     
$result = mysql_query($query1) or die (mysql_error());     
$conta = mysql_num_rows($result); 
$query2=mysql_query("SELECT * FROM menu WHERE Attivo=1 ORDER BY Settore");
for ($i=0;$i<$conta;$i++){    
$riga=mysql_fetch_array($query2);
$Quanti=$_POST ["Quanti[".$i."]"];
$Note=$_POST ["Note[".$i."]"];
$Articolo = $riga['ID'];
$Prezzo = $riga['Prezzo'];
if ($Quanti != 0){
  $query="INSERT INTO righe_ordini (Articolo, Note, Quanti, Prezzo, Ordine)";
$query.="VALUES ('".$Articolo."','".$Note."','".$Quanti."','".$Prezzo."','".$id."')";
mysql_query ($query,$conn);
}
} 
?>
<?php include ("close.php");?>

Che sbaglio?
 
Funziona!!!!

Sono molto soddisfatto, funziona e ci sono riuscito da solo.
Grazie Emix per lo spunto.
Ora mi resta la parte più facile ma noisa: "l'estetica".
Posto i tre files per i novellini come me.

Index.php
HTML:
<HTML>
<HEAD>
<TITLE>Ordine</TITLE>
</HEAD>
<BODY>
INSERIRE TAVOLO 0 PER ASPORTO <br />
<FORM ID="ORDINE" NAME="ORDINE" METHOD="POST"
ACTION="raccoglieord.php">
<LABEL>Sig:
<INPUT TYPE="TEXT" NAME="Sig" ID="Sig" />
</LABEL>
<P><LABEL>Tavolo:
<INPUT TYPE="TEXT" NAME="Tavolo" ID="Tavolo" />
</LABEL></P>
<P><LABEL>Note:
<INPUT TYPE="TEXT" NAME="Note" ID="Note" />
</LABEL></P>
<P>
<INPUT TYPE="SUBMIT" NAME="Submit" ID="Submit" VALUE="Invia" />
</P>
</FORM>
</BODY>
</HTML>

Raccoglieord.php:
PHP:
<HTML>
<HEAD>
<TITLE>Ordine</TITLE>
</HEAD>
<BODY>
<?php include ("conn.php");?>
<?php
$Sig=$_POST ['Sig'];
$Tavolo=$_POST ['Tavolo'];
$Note=$_POST ['Note'];
$Ore=time();
$Ore=date('Y-m-d H:i:s', $Ore);
$query="INSERT INTO Ordini (Sig, Tavolo, Note, Ore)";
$query.="VALUES ('".$Sig."','".$Tavolo."','".$Note."','".$Ore."')";
mysql_query ($query,$conn);
$id = mysql_insert_id();
echo $id;
$query=mysql_query("SELECT Descrizione,Prezzo FROM menu WHERE Attivo=1 ORDER BY Settore"); 
 echo "<table><td>Descrizione</td><td>Prezzo</td><td>Quantità</td><td>Note</td>"; 
 echo "<FORM ID='RIORDINE' NAME='RIORDINE' METHOD='POST' ACTION='righeord.php'>";
 echo "<input type='TEXT' name='id' value='".$id."'>";
 $i=0;
while($riga=mysql_fetch_array($query))
{   
 echo "<tr><td>".$riga['Descrizione']."</td><td>".$riga['Prezzo']."</td>";
echo "<td><INPUT TYPE='TEXT' NAME='Quanti".$i."' ID='Quanti".$i."' /></td>";
echo "<td><INPUT TYPE='TEXT' NAME='Note".$i."' ID='Note".$i."' /></td></tr>";
$i ++;
}
?>
</table>
<P>
<INPUT TYPE="SUBMIT" NAME="Submit" ID="Submit" VALUE="Invia" />
</P>
</FORM>

</BODY>
</HTML>

Righeord.php
PHP:
<?php include ("conn.php");?>
<?php 
$id=$_POST ['id'];
$query1 = "SELECT * FROM menu WHERE Attivo=1";     
$result = mysql_query($query1) or die (mysql_error());     
$conta = mysql_num_rows($result); 
$query2=mysql_query("SELECT * FROM menu WHERE Attivo=1 ORDER BY Settore");
for ($i=0;$i<$conta;$i++){    
$riga=mysql_fetch_array($query2);
$Quanti=$_POST ["Quanti".$i];
$Note=$_POST ["Note".$i];
$Articolo = $riga['ID'];
$Prezzo = $riga['Prezzo'];
if ($Quanti != 0){
  $query="INSERT INTO `righe ordini` (Articolo, Note, Quanti, Prezzo, Ordine)";
$query.="VALUES ('".$Articolo."','".$Note."','".$Quanti."','".$Prezzo."','".$id."')";
mysql_query ($query,$conn);
echo $query;
}
} 
echo $id;
?>
<?php include ("close.php");?>

Grazie a tutti e Buon Lavoro :byebye:
 

Discussioni simili