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