- Home
- Categorie
- Coding e Sistemistica
- PHP
- Prelevare dati da due tabelle
-
Prelevare dati da due tabelle
Ciao ragazzi!
Mi serve un aiuto. Avrei bisogno di prendere dati da due tabelle contemporaneamente.
Per esempio nella prima tabella ho la necessita di prelevare due dati e nella seconda altri due e poi devo stamparli contemporaneamente nella stessa pagina.
Qualcuno mi può dare una mano?
-
@giannididonna said:
Ciao ragazzi!
Mi serve un aiuto. Avrei bisogno di prendere dati da due tabelle contemporaneamente.
Per esempio nella prima tabella ho la necessita di prelevare due dati e nella seconda altri due e poi devo stamparli contemporaneamente nella stessa pagina.
Qualcuno mi può dare una mano?
select t1.campo, t2.campo from tabella1 t1 join tabella 2 t2 on t1.chiave = t2.chiave
-
@joker197cinque said:
select t1.campo, t2.campo from tabella1 t1 join tabella 2 t2 on t1.chiave = t2.chiave
In realtà non è proprio cosi..... mi servirebbe poter accedere liberamente alle tabelle e disporre i dati a mio piacimento come se fosse una
Per esempio una volta aperte le tabelle vorrei disporre in questo modo.
[CENTER]Dato1 tabella1
Dato1 tabella 2 - Dato2 tabella 1 - dato2 tabella2
In protica ho la necessita di connettermi a tutte e due le tabelle contemporaneamente.
Posso fare una cosa del genere?
[/CENTER]
-
ti conviene fare due query differenti e poi giocare come vuoi con mysql_fetch_array()..
-
@nicodj88 said:
ti conviene fare due query differenti e poi giocare come vuoi con mysql_fetch_array()..
Potresti postare un esemio?
Sai non sono un esperto....
Grazie per il tuo interessamento.
-
bhe..
[PHP]
$tab1 = mysql_query("") or die ("la query sulla tab1 nn va");
$tab2 = mysql_query("") or die ("la query sulla tab2 nn va");// a questo punto disponi i risultati come vuoi
for ( $i=0; ;$i++ ) {
$row_tab1 = mysql_fetch_array($tab1);
$row_tab2 = mysql_fetch_array($tab2);// se i record di una delle due query sono finiti esco dal for
if ( $row_tab1[campo] == NULL || $row_tab2[campo] == NULL )
break;echo "Dato$i : $row_tab1[campo] - tabella 1";
echo "Dato$i : $row_tab2[campo] tabella 2";}
[/PHP]
xo nn è certo la soluzione ottimale..ma da quel che ho capito puo andare bene..
-
Cosi potrebbe andare bene?
[php]
$tab1 = mysql_query("SELECT * FROM tabella1 ORDER BY id") or die ("la query sulla tab1 nn va");
$tab2 = mysql_query("SELECT * FROM tabella2 ORDER BY id") or die ("la query sulla tab2 nn va");// a questo punto disponi i risultati come vuoi
for ( $i=0; ;$i++ ) {
$row_tab1 = mysql_fetch_array($tab1);
$row_tab2 = mysql_fetch_array($tab2);// se i record di una delle due query sono finiti esco dal for
if ( $row_tab1[campo] == NULL || $row_tab2[campo] == NULL )
break;echo "Dato$i : $row_tab1[campo] - tabella 1";
echo "Dato$i : $row_tab2[campo] tabella 2";}
[/php]
Puoi vedere se ho impostato bene le query?
-
si sta bene...ma al posto di campo devi mettere le colonne presenti nelle tabelle..capito?
-
In pratica se ho un campo nella prima tabella che si chiama hits e un campo che nella seconda tabella che si chiama nome sarà:
(ho inserito anche i dati della connessione puoi vedere se è tutto ok?)
[php]
include("config.inc.php");
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE)
die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
// effettui la query$tab1 = mysql_query("SELECT * FROM tabella1 ORDER BY id") or die ("la query sulla tab1 nn va");
$tab2 = mysql_query("SELECT * FROM tabella2 ORDER BY id") or die ("la query sulla tab2 nn va");// a questo punto disponi i risultati come vuoi
for ( $i=0; ;$i++ ) {
$row_tab1 = mysql_fetch_array($tab1);
$row_tab2 = mysql_fetch_array($tab2);// se i record di una delle due query sono finiti esco dal for
if ( $row_tab1[campo] == NULL || $row_tab2[campo] == NULL )
break;echo "Dato$i : $row_tab1[hits] - tabella 1";
echo "Dato$i : $row_tab2[nome] tabella 2";}
[/php]
E' giusto? (grazie per la tua velocità ed il tuo interessamento)
Puoi vedere se ho impostato bene le query?[/quote]
-
ttt ok...ti correggo solo una cosa..ma sta bene anche come lo hai fatto tu..è solo una questione di...mmm...velocita..:D ..
[PHP]
// $db = mysql_connect($db_host, $db_user, $db_password);
// if ($db == FALSE)
// die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");// DIVENTA
$db = mysql_connect($db_host, $db_user, $db_password) or die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
[/PHP]
x il resto tt ok..;)
-
In Definitiva dovrebbe essere cosi...
[php]
include("config.inc.php");
$db = mysql_connect($db_host, $db_user, $db_password) or die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
// effettui la query$tab1 = mysql_query("SELECT * FROM tabella1 ORDER BY id") or die ("la query sulla tab1 nn va");
$tab2 = mysql_query("SELECT * FROM tabella2 ORDER BY id") or die ("la query sulla tab2 nn va");// a questo punto disponi i risultati come vuoi
for ( $i=0; ;$i++ ) {
$row_tab1 = mysql_fetch_array($tab1);
$row_tab2 = mysql_fetch_array($tab2);// se i record di una delle due query sono finiti esco dal for
if ( $row_tab1[campo] == NULL || $row_tab2[campo] == NULL )
break;echo "Dato$i : $row_tab1[hits] - tabella 1";
echo "Dato$i : $row_tab2[nome] tabella 2";}
[/php]
Ora lo testo un attimo e ti faccio sapere...
-
ricorda di mettere <br> alla fine di ogni echo...
-
Testato...
Questo è il file completo che ho testato e in pratica la connessione avviene con successo ma non mi vengono stampati i risultati, come mai?
Dove devo mettere il <b> ?
[php]
<?
include("config.inc.php");
$db = mysql_connect($db_host, $db_user, $db_password) or die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
// effettui la query
$tab1 = mysql_query("SELECT * FROM categories ORDER BY gallid ") or die ("la query sulla tab1 nn va");
$tab2 = mysql_query("SELECT * FROM pictures ORDER BY pid") or die ("la query sulla tab2 nn va");
// a questo punto disponi i risultati come vuoi
for ( $i=0; ;$i++ ) {
$row_tab1 = mysql_fetch_array($tab1);
$row_tab2 = mysql_fetch_array($tab2);
// se i record di una delle due query sono finiti esco dal for
if ( $row_tab1[campo] == NULL || $row_tab2[campo] == NULL )
break;
echo "Dato$i : $row_tab1[description] - tabella 1";
echo "Dato$i : $row_tab2[name] tabella 2";
}
?>[/php]
-
fai questo e dimmi cosa ti esce :
[PHP]
include("config.inc.php");
$db = mysql_connect($db_host, $db_user, $db_password) or die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");// effettui la query
$tab1 = mysql_query("SELECT * FROM categories ORDER BY gallid ") or die ("la query sulla tab1 nn va");
$tab2 = mysql_query("SELECT * FROM pictures ORDER BY pid") or die ("la query sulla tab2 nn va");echo "<br>TABELLA 1<BR>";
while ( $row = mysql_fetch_array($tab1) )
foreach ( $row as $k => $v )
echo $k." => ".$v."<br>";
echo "<br><br>TABELLA 2<BR>";
while ( $row = mysql_fetch_array($tab2) )
foreach ( $row as $k => $v )
echo $k." => ".$v."<br>";
[/PHP]
-
Mi escono tutti i risultati in questo modo:
TABELLA 1
0 => 2
gallid => 2
1 => Acqua
gallname => Acqua
2 => gallery.gif
gallimg => gallery.gif
3 => Acqua
galloc => Acqua
.
.
.
.
.
.
Continua ancora
TABELLA 2
0 => 1
pid => 1
1 => 17
gid => 17
2 => BACK00.GIF
img => BACK00.GIF
3 => 92
counter => 92
4 => Staff
.
.
.
.
.
.
.
.
Continua ancoraQuindi la connessione alle due tabelle funziona correttamente.
Ora si tratta solo di estrarre i dati desiderati...
Un'altra cosa... è possibile disporre un tot di dati per pagina con dei collegamenti fra le pagine?
Per esempioIndietro 1 2 3 4 5 6 7 8 avanti
Nella pagina 1 ci sono i dati da 1 a 10
Nella pagina 2 ci sono i dati da 11 a 20 etc etc
-
x l'impaginazione aspetta..cmq torniamo al codice..ho trovato il tuo errore
[PHP]
include("config.inc.php");
$db = mysql_connect($db_host, $db_user, $db_password) or die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
// effettui la query
$tab1 = mysql_query("SELECT * FROM categories ORDER BY gallid ") or die ("la query sulla tab1 nn va");
$tab2 = mysql_query("SELECT * FROM pictures ORDER BY pid") or die ("la query sulla tab2 nn va");
// a questo punto disponi i risultati come vuoi
for ( $i=0; ;$i++ ) {
$row_tab1 = mysql_fetch_array($tab1);
$row_tab2 = mysql_fetch_array($tab2);
// se i record di una delle due query sono finiti esco dal for
// ********* QUI DEVI CAMBIARE CAMPO CN UN CAMPO DELLA TAB AD.ESEMPIO
if ( $row_tab1[description] == NULL || $row_tab2[name] == NULL )
break;
echo "Dato$i : $row_tab1[description] - tabella 1";
echo "Dato$i : $row_tab2[name] tabella 2";
}
[/PHP]
ora dovrebbe andare..
-
OK adesso vengono i dati vengono prelevati e disposti cosi:
(questi sono i dati di due tabelle a caso dei miei database che contengono gif)Dato0 : Gif Animate sul tema dell'acqua - GIF animated water - tabella 1Dato0 : BACK 00 tabella 2Dato1 : Gif Animate sui numeri e le lettere - GIF animated numbers and the letters - tabella 1Dato1 : BACK01.GIF tabella 2Dato2 : Gif animate sul tema dell'amore - GIF animated love - tabella 1Dato2 : BACK02.GIF tabella 2Dato3 : Gif animate sul tema degli angeli - GIF animated angels - tabella 1Dato3 : BACK03.GIF tabella 2Dato4 : Gif animate sul tema degli animali - GIF animated animals - tabella 1Dato4 : BACK04.GIF
Continua ancora...
Per limpaginazione mi puoi dare una mano?
-
per un maggiore ordine inserisci <br> alla fine dei due echo...cmq l'impaginazione è una cosa un po piu complessa..tu lo conosci un po il php?..sei in grado di capire uno script gia costruito?
-
un pò si.... magari ci provo e se ho problemi magari riposto qui...
-
vai qui
http://www.guidoz.it/forum/viewforum.php?f=2
è un forum dove è presente una funzione appunto di paginazione..se hai problemi posta pure li..ti risponderanno..