• Bannato User •

    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?


  • User Attivo •

    @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


  • Bannato User •

    @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]


  • User •

    ti conviene fare due query differenti e poi giocare come vuoi con mysql_fetch_array()..


  • Bannato User •

    @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.


  • User •

    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..


  • Bannato User •

    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?


  • User •

    si sta bene...ma al posto di campo devi mettere le colonne presenti nelle tabelle..capito?


  • Bannato User •

    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]


  • User •

    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..;)


  • Bannato User •

    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...


  • User •

    ricorda di mettere <br> alla fine di ogni echo...


  • Bannato User •

    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]


  • User •

    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]


  • Bannato User •

    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 ancora

    Quindi 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 esempio

    Indietro 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


  • User •

    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..


  • Bannato User •

    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?


  • User •

    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?


  • Bannato User •

    un pò si.... magari ci provo e se ho problemi magari riposto qui...


  • User •

    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..