View Full Version : [PHP] array e query
ciao a tutti! :D
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!
Tuvok-LuR-
08-11-2013, 12:01
se hai una lista di input omogenea puoi usare questa notazione nel form html (nomecampo+[])
<input name="lista[]"></input>
<input name="lista[]"></input>
<input name="lista[]"></input>
a php verrà passato il solo parametro $_POST['lista'] che sarà un array.
poi puoi loopparlo così
<?php
$lista = $_POST['lista'];
foreach ($lista as $item) {
echo $item;
}
?>
se hai una lista di input omogenea puoi usare questa notazione nel form html (nomecampo+[])
<input name="lista[]"></input>
<input name="lista[]"></input>
<input name="lista[]"></input>
a php verrà passato il solo parametro $_POST['lista'] che sarà un array.
poi puoi loopparlo così
<?php
$lista = $_POST['lista'];
foreach ($lista as $item) {
echo $item;
}
?>
grazie mille non avevo idea di poter usare l'html in quel modo! appena torno a casa provo:D
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?
Tuvok-LuR-
08-11-2013, 12:13
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:
<?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);
}
?>
inoltre ricordati che:
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_)
senza aprire nuovo topic.... ho un nuovo casino che non riesco a risolvere da qualche giorno :mbe:
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?
$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>
ps. so di usare funzioni php deprecated ma purtroppo non ho tempo materiale per aggiornarmi :(
Tuvok-LuR-
11-11-2013, 14:17
stasera spaghetti! :D
prova così:
$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;
}
manca il prezzo che non ho capito da dove esce fuori
manca il prezzo che non ho capito da dove esce fuori
esce da qui: (è un pezzo di codice subito prima di quello che mi hai dato te, che ovviamente funziona alla grande!
//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>
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.