problema estrazione dati dati da 2 tabelle

ciao,

ho 2 tabelle:

abbonamento:

id_abb |    tipo     |    prezzo

1            annuale        40

2            biennale       70

3            triennale       90

Nella seconda tabella "tbl_shipping" ho in un unica riga i costi di spedizione divisi per area gegrafica con l'id_abb della prima tabella.

adesso vorrei estrarre i dati di entrambe le tabelle  e inserirli all'interno di tabelle html per un eventuale modifica

se io faccio questa query:

<?php $query = "SELECT abbonamento.prezzo, tbl_shipping.id_abb, tbl_shipping.ship_it_1, tbl_shipping.ship_it_3, tbl_shipping.ship_eu_1, tbl_shipping.ship_eu_4, tbl_shipping.ship_ext_1, tbl_shipping.ship_ext_4  FROM abbonamento, tbl_shipping WHERE abbonamento.id_abb = 2";
$result =  mysql_query($query)or die(mysql_error());
while($row = mysql_fetch_array($result)){

   echo "<tr><td>".$row['prezzo']."</td></tr><tr><td>".$row['ship_eu_4']."</td></tr>";
}
?>

mi estre 3 volte il prezzo della tabella "abbonamenti" , mentre io lo vorrei estratto una sola volta.

ma, un'altra cosa, forse mi conviene fare 3 query? altrimenti come faccio a fare poi la query di update? non avrei via POST la variabile che mi serve.

spero di essermi spiegato.

grazie

inviato 10 anni fa
iTek
iTek
1
X 0 X

riporta anche la struttura della seconda tabella ed infine lo schema della tabella HTML da realizzare. Di quale id hai bisogno per effettuare l'UPDATE?

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

la 2a tabella:

id_shipping

id_abb  --> della 1a tabella

ship_it_1

ship_it_3

ship_eu_1

ship_eu_4

ship_ext_1

ship_ext_4

in pratica quello che mi serve è modificare il valore del campo "prezzo" della 1a tabella + tutti gli "ship" della seconda.

forse non mi serve l'id, mi basta il nome del campo <input>.

è la query come che l'ho impostata che non va bene, perchè anzichè estrarmi una sola riga di del campo prezzo, me le estrae tutte e 3

la struttura html da realizzare è un

<table>
<tr><td><input name="prezzo" type="text"  value="<?php echo $prezzo; ?>" </td></tr>
<tr><td><input name="ship_it_1" type="text"  value="<?php echo $ship_it_1; ?>" </td></tr>
....uguale per tutti gli altri "ship"
</table>
risposto 10 anni fa
iTek
iTek
1
X 0 X

Ok, prova così:

SELECT abbonamento.prezzo, tbl_shipping.id_abb, tbl_shipping.ship_it_1, tbl_shipping.ship_it_3, tbl_shipping.ship_eu_1, tbl_shipping.ship_eu_4, tbl_shipping.ship_ext_1, tbl_shipping.ship_ext_4  FROM abbonamento, tbl_shipping WHERE abbonamento.id_abb = tbl_shipping.id_abb AND abbonamento.id_abb = 2

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

effettivamente dopo il WHERE mi mancava qualcosa... :)

perfetto funziona.

un ultima domanda Gianni:

in questo caso io devo fare 3 query per estrarre tutti i tre prezzi della 1a query e relative spese dalla seconda

cioè

WHERE abbonamento.id_abb = tbl_shipping.id_abb AND abbonamento.id_abb = 1

WHERE abbonamento.id_abb = tbl_shipping.id_abb AND abbonamento.id_abb = 2

WHERE abbonamento.id_abb = tbl_shipping.id_abb AND abbonamento.id_abb = 3

è la cosa più corretta o è possibile farlo con una sola query?

grazie mille

 :bye:

risposto 10 anni fa
iTek
iTek
1
X 0 X

fallo solo con una, togliendo "AND abbonamento.id_abb = X". Però ti dovrai ingegnare un po' per mostrare i risultati, ma questa è la strada giusta.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

per ingegnarti intendi i nomi dei campi <input>?

per visualizzare i dati non ci sono problemi, però usando un ciclo while i nomi dei campi sono tutti uguali...

e poi come faccio per l'update? nel senso che se modifico solo i dati relativi a un abbonamento "abbonamento.id_abb = 1" ok,

ma se li modifico tutti e tre insieme?    ???

risposto 10 anni fa
iTek
iTek
1
X 0 X

Si, dovrai "ingegnarti" anche per l'UPDATE  :P

Per la visualizzazione pensa a come vengono restituiti i record e a come vorresti fossero mostrati. In pratica si tratta di prendere l'array di falori ottenuto dalla fetch e trasformarlo in un array di valori adeguato alla visualizzazione.

Per l'update dovreti aggiornare tutti i campi.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda