|
|||||||
|
|
|
![]() |
|
|
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: 2213
|
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;
}
?>
__________________
9800X3D | 32GB DDR5 6400C30@TUNED | RTX 4090 | LG 32GQ950-B | Fractal Torrent | NZXT C1200W | 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 13:12. |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Sep 2001
Città: Pisa
Messaggi: 2213
|
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_)
__________________
9800X3D | 32GB DDR5 6400C30@TUNED | RTX 4090 | LG 32GQ950-B | Fractal Torrent | NZXT C1200W | Iliad Fibra 5Gb Ultima modifica di Tuvok-LuR- : 08-11-2013 alle 13: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: 2213
|
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;
}
__________________
9800X3D | 32GB DDR5 6400C30@TUNED | RTX 4090 | LG 32GQ950-B | Fractal Torrent | NZXT C1200W | 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: 01:18.




















