regà, mi succede una cosa assurda!
prima di postarvi il codice e il relativo errore a video, spiego brevemente:
l'applicazione legge tutte le righe associate a quel preventivo, e per ogni riga mostra campi di form da completare.
ovviamente in fase di UPDATE della tabella, deve sapere qual'è la riga da modificare, quindi ho usato questo codice:
Codice PHP:
<? $id_prev = ($_POST["id_prev"]);
echo "<input type=\"hidden\" name=\"id_prev\" value=\"$id_prev\">";
$query = "SELECT * from dettagli_preventivi where `id_preventivo` = '$id_prev' order by id_riga";
$risultato = mysql_query($query) or die ($query."
".mysql_error());
$i = 0;
while ($row = mysql_fetch_array($risultato,MYSQL_ASSOC))
{
echo "<input type=\"hidden\" name=\"id_riga[$i]\" value=\"".$row["id_riga"]."\" />";
$i++;
echo "<tr><td>Fornitore</td>\n";
$fornitori = "select * from `ana_forn`";
$lista_fornitori = mysql_query($fornitori) or die ("non eseguo la query fornitori");
echo "<td><select name=\"fornitori[$i]\">\n";
echo "<option value=\"0\">- Selezionare Fornitore -</option>\n";
eccetera eccetera...
come vedete, ho lasciato volutamente a video l'echo della variabile id_riga per vedere cosa stampa, ed in effetti mi ha stampato a video un bel 45 (ossia riga 4 e 5 associate a quell'id_prev)
quindi passo all'inserimento tramite update con questa query:
Codice PHP:
foreach ($_POST["id_riga"] as $i => $id_riga)
{
$query3 = " UPDATE dettagli_preventivi SET costo = '".$_POST["costo_$i"]."', ricarico = '".$_POST["ricarico_$i"]."', prezzo_vendita = '".$_POST["prezzo_vendita_$i"]."', fornitore = '".$_POST["fornitori"][$i]."', data_realizzo = '".$_POST["data_realizzo"]."', materiale = '".$_POST["materiale"]."' WHERE id_preventivo = '".$_POST["id_prev"]."' AND id_riga = '".$_POST["id_riga"][$i]."'";
mysql_query($query3) or die ($query3."
".mysql_error()); echo "$query3"; }
e guardate un po' che succede:
UPDATE dettagli_preventivi SET costo = '11111', ricarico = '1', prezzo_vendita = '11222.11', fornitore = '1', data_realizzo = '1 mese', materiale = '
sdasdfasfdas
' WHERE id_preventivo = '3' AND id_riga = '5'
UPDATE dettagli_preventivi SET costo = '22222', ricarico = '2', prezzo_vendita = '22666.44', fornitore = '1', data_realizzo = '1 mese', materiale = '
sdasdfasfdas
' WHERE id_preventivo = '3' AND id_riga = ''
dove sbaglio?!
e perchè prende l'ultima riga correttamente (la 5) e la 4 invece me la passa come se fosse vuota?!
x favore aiutatemi che non capisco dove cavolo è l'errore...
grazie,
Fabrizio