- Home
- Categorie
- Coding e Sistemistica
- PHP
- Prelevare dati da due tabelle
-
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..
-
grazie! Sicuramente domani gli darò un occhiata..
GRAZIE MILLE PER TUTTO!
-
:)..prego ciao...