|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Mar 2008
Messaggi: 64
|
[PHP] array e query
ciao a tutti!
![]() avrei bisogno di una mano su un codice php che sto preparando... premetto di essere uno alle prime armi e che sto preparando una specie di gestionale sul web. Allora, io ho una serie di variabili POST del tipo: $_POST['1'], $_POST['2'], etc. che potrebbero potenzialmente arrivare all'infinito. Vorrei riuscire a salvare il loro contenuto in un database mysql e in particolare in delle colonne il cui nome è salvato in un array (nel mio caso $array_nomi) e quindi: il contenuto di $_POST['1'] vorrei che fosse salvato nella colonna il cui nome è contenuto in $array_nomi[0]; il contenuto di $_POST['2'] vorrei che fosse salvato nella colonna il cui nome è contenuto in $array_nomi[1]; etc. credo serva un foreach e una query del tipo INSERT INTO almeno, ma non saprei proprio come utilizzarli e i miei tentativi hanno portato a fallimenti clamorosi. grazie in anticipo a tutti! |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Sep 2001
Città: Pisa
Messaggi: 2212
|
se hai una lista di input omogenea puoi usare questa notazione nel form html (nomecampo+[])
Codice:
<input name="lista[]"></input> <input name="lista[]"></input> <input name="lista[]"></input> poi puoi loopparlo così Codice:
<?php $lista = $_POST['lista']; foreach ($lista as $item) { echo $item; } ?>
__________________
7800X3D | 32GB DDR5 6400C30@TUNED | RTX 4090 | LG 32GQ950-B | Fractal Torrent | bequiet! Dark Power Pro 11 850w | Iliad Fibra 5Gb |
![]() |
![]() |
![]() |
#3 | |
Member
Iscritto dal: Mar 2008
Messaggi: 64
|
Quote:
![]() e come posso fare per inserire i dati nel db? <? $lista = $_POST['lista']; foreach ($lista as $item) { foreach ($array_nomi as $column) { mysql_query("INSERT INTO '$column' VALUE ('$array_nomi') "); } } ?> così va bene? Ultima modifica di Cloud25 : 08-11-2013 alle 12:12. |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Sep 2001
Città: Pisa
Messaggi: 2212
|
non hai bisogno di un'altro loop all'interno del foreach. poi puoi trattare $lista come un oggetto in modo da avere l'indice ($key) e recuperare il campo dall'altro array:
Codice:
<?php $lista = $_POST['lista']; $fields = Array('nome','cognome','eta'); foreach ($lista as $key=>$item) { // $key sarà in successione 0,1,2 $campo = $fields[$key]; $valore = $item; echo($campo.': '.$valore); } ?> una INSERT non inserisce il valore in una specifica colonna ma serve a creare una nuova riga (se vuoi aggiornare colonne di una riga già esistente devi usare UPDATE) i comandi mysql_ sono deprecati in PHP, ti consiglio di passare a PDO o, più semplicemente a mysqli_ (più simile a mysql_)
__________________
7800X3D | 32GB DDR5 6400C30@TUNED | RTX 4090 | LG 32GQ950-B | Fractal Torrent | bequiet! Dark Power Pro 11 850w | Iliad Fibra 5Gb Ultima modifica di Tuvok-LuR- : 08-11-2013 alle 12:31. |
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Mar 2008
Messaggi: 64
|
grazie va una bomba
![]() |
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Mar 2008
Messaggi: 64
|
senza aprire nuovo topic.... ho un nuovo casino che non riesco a risolvere da qualche giorno
![]() il discorso è il seguente: devo recuperare dei dati presenti nella tabella "descr_movimenti" ma il nome di alcune colonne non è noto a priori ed è salvato nell'array $prefissi (mentre le colonne "tipologia", "data", "num_doc" sono note). Sono in grado di tirare fuori il contenuto delle colonne note, ma non riesco a stampare a video il contenuto delle colonne il cui nome è salvato nell'array... come posso fare? Codice:
$query = mysql_query("SELECT * FROM descr_movimenti WHERE ID_cliente = '$_POST[ID]' ORDER BY data") or die(mysql_error); $tipologia = array(); $data = array(); $num_doc = array(); while ($linea = mysql_fetch_array($query)){ $tipologia[] = $linea['tipologia']; $data[] = $linea['data']; $num_doc[] = $linea['num_doc']; } foreach ($prefissi as $key => $item) { echo "<tr><td align=center>".$tipologia[$key]."</td> <td align=center>".$data[$key]."</td> <td align=center>".$num_doc[$key]."</td> <td align=center>".$prezzo[$key]."€ x ".???."</td> ![]() |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Sep 2001
Città: Pisa
Messaggi: 2212
|
stasera spaghetti!
![]() prova così: Codice:
$query = mysql_query("SELECT * FROM descr_movimenti WHERE ID_cliente = '$_POST[ID]' ORDER BY data") or die(mysql_error); while ( $linea = mysql_fetch_array($query) ) { $tr = "<tr>"; $tr .= "<td align=center>".$linea['tipologia']."</td>"; $tr .= "<td align=center>".$linea['data']."</td>"; $tr .= "<td align=center>".$linea['num_doc']."</td>"; foreach ( $prefissi as $prefisso ) { $tr .= "<td align=center>".$linea[$prefisso]."</td>"; } $tr .= "</tr>"; echo $tr; }
__________________
7800X3D | 32GB DDR5 6400C30@TUNED | RTX 4090 | LG 32GQ950-B | Fractal Torrent | bequiet! Dark Power Pro 11 850w | Iliad Fibra 5Gb |
![]() |
![]() |
![]() |
#8 |
Member
Iscritto dal: Mar 2008
Messaggi: 64
|
esce da qui: (è un pezzo di codice subito prima di quello che mi hai dato te, che ovviamente funziona alla grande!
Codice:
//passo 1: recupero i prefissi $query = mysql_query("SELECT prefix_giacenza, quantity_giac FROM descr_clienti WHERE ID = '$_POST[ID]'"); while ($giac = mysql_fetch_array($query)) { $prefissi = unserialize($giac['prefix_giacenza']); } foreach ($prefissi as $key => $item) { $query = mysql_query("SELECT Libro, Prezzo From descr_libri WHERE prefisso = '$prefissi[$key]'"); $prezzo = array(); while ($dati = mysql_fetch_array($query)) { $libro = $dati['Libro']; $prezzo[] = $dati['Prezzo']; } echo "<td>".$libro."</td>"; } //chiudo rigo html ?> <td></td> </tr> |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:15.