Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    55

    Prelevare i dati da 2 tabelle mysql ed integrarli

    Salve!
    Gradirei un aiuto
    Premetto: sono alle prime armi
    Dovrei prelevare dati da 2 tabelle del database mysql (cnbya_value e users)


    I campi di ciascuna sono:

    cnbya: vid, uid, fid, value

    users: user_id, name, username

    uid e user_id sono uguali


    Bene dovrebbero crearsi tante righe come predisposta sotto in modo che vengano prelevati
    La user_id e la username dalla tabella users e i dati value solo dove fid ha un valore di 29 e 33 e ordinarli nella sequenza value:

    User_id username value dove fid = 29 value dove fid = 33


    Sono riuscito a compilare questa query ma non sono riuscito ad integrare le due tabelle,
    qualcuno mi può aiutare?

    $query = " SELECT uid,fid,value FROM cnbya_value " .
    " WHERE fid = 29 ORDER BY value DESC LIMIT $offset,$rowsPerPage";
    $result = mysql_query($query) or die('ERRORE, RICHIESTA FALLITA');

    Ringrazio anticipatamente e porgo cordiali saluti
    Dino

  2. #2
    Ciao,

    se ho ben capito prova in questo modo:

    Codice PHP:
    $query "SELECT uid,fid,value 
    FROM cnbya 
    JOIN users ON cnbya.uid = users.user_id 
    WHERE fid = 29  OR  fid = 33 ORDER BY value DESC LIMIT 
    $offset,$rowsPerPage"
    In pratica per legare i valori di due tabelle diverse che hanno un campo in comune, bisogna utilizzare il JOIN, la clausola ON serve per specificare il capo in comune.
    Il JOIN può essere utilizzato su più tabelle.
    Comunque questa è una spiegazione "molto sintetica", per maggiori informazioni consultare la documentazione.
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    55
    Ma per selezionare anche i dati della tabella users dovrei inserirli in questo modo?
    e per richiamare il valore del campo 33 come dovrei fare?:


    codice:
    $query = "SELECT uid,fid,value,name,username
       
    FROM cnbya  
    JOIN users ON cnbya.uid = users.user_id  
    WHERE fid = 29  OR  fid = 33 ORDER BY value DESC LIMIT $offset,$rowsPerPage";

    Grazie per l'aiuto
    Dino

  4. #4
    Quando usi le JOIN puoi selezionare tutti i campi che vuoi, come se fossero tutti campi di un'unica tabella, a patto che siano univoci, se così non fosse devi anteporre il nome della tabella al campo quindi nomeTabella.nomeCampo.
    Se poi hai l'esigenza di selezionare tutti i campi di tutte le tabelle puoi utilizzare SELECT *, sempre però se tutti i campi sono univoci.
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    55
    Sei stato molto esaudiente!!
    E già ho visto i primi risultati. Ma adesso mi manca visualizzare i dati del campo 29 e 33 nella stessa riga ma in due colonne

    codice:
    $query = "SELECT uid,fid,value,name,username  
    FROM nuke_cnbya_value  
    JOIN nuke_users ON nuke_cnbya_value.uid = nuke_users.user_id  
    WHERE fid = 29  OR  fid = 33 ORDER BY value DESC LIMIT $offset,$rowsPerPage";
    
    
    while($row = mysql_fetch_array($result))
    {
    echo "<tr><td> ".$row['username']."</td><td>".$row['uid']."</td><td>".$row['value']."</td><td>".$row['value??????????']."</td></tr>";
    }
    echo "</table></center>";
    Grazie ancora
    Dino

  6. #6
    Non ho ben capito, vuoi mostrare i due risultati sulla stessa riga?
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    55
    Si, quelli del campo 29 e quelli del campo 33.
    In pratica non deve ripetermi l'utente due volte (1 per vedere il dato del 29 e l'altro per vedere il dato del 33)
    Grazie

  8. #8
    Allora ti converrebbe mettere tutto in un array, quindi:
    Codice PHP:
    $array = array ();
    while ( 
    $row mysql_fetch_array($result) ) {
        
    $array [$row ['uid']] ['username'] = $row ['username'];
        
    $array [$row ['uid']] ['value'] [] = $row ['value'];

    poi stampi il codice html

    Codice PHP:
    foreach ( $array as $uid => $valori ) {
        echo 
    "<tr><td> $valori[username]</td><td> $uid</td><td>";
        foreach ( 
    $valori as $value ) {
            echo 
    "<tr><td> $value </td>";
        }
        echo 
    "</tr>";

    N.B. lo devi provare, potrei aver commesso qualche errore, non avendo la tabella del db.
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    55
    codice:
    $query = "SELECT uid,fid,value,name,username
    FROM nuke_cnbya_value  
    
    JOIN nuke_users ON nuke_cnbya_value.uid = nuke_users.user_id
    
    WHERE fid = 29  OR  fid = 33 ORDER BY uid DESC LIMIT $offset,$rowsPerPage";
    
    
    $result = mysql_query($query) or die('ERRORE, RICHIESTA FALLITA');
    
    $array = array (); 
    while ( $row = mysql_fetch_array($result) ) { 
        $array [$row ['uid']] ['username'] = $row ['username']; 
        $array [$row ['uid']] ['value'] [] = $row ['value']; 
       
    }
    
    foreach ( $array as $uid => $valori ) { 
        echo "<center><table width=\"70%\" border=1><tr><td> $valori[username]</td><td> $uid</td><td><tr>"; 
        foreach ( $valori as $value ) { 
            echo "<td> $value </td>"; 
        } 
        echo "</tr></table></center>";

    Purtoppo il codice non va, mi crea 2 righe per nominativo ripetendo la user, e nella seconda colonna della seconda riga "Array":

    monnalisa 2064
    monnalisa Array

    Tancredi 2028
    Tancredi Array

    Se non ti tedio più di tanto riesci a comprenderne il motivo?
    Dino

  10. #10
    Scusami avevo commesso degli errori, sostituisci tutte le istruzioni dopo il while con quelle che seguono.
    N.B. ho aggiunto anche delle istruzioni che stampano delle celle vuote in modo da avere ogni riga con lo stesso numero di colonne.


    Codice PHP:
    $lunghezza 0;
    foreach ( 
    $array as $uid => $valori ) {
        
    $lunghezzaTemp sizeof $valori ['value'] );
        if (
    $lunghezzaTemp $lunghezza) {
            
    $lunghezza $lunghezzaTemp;
        }
    }

    echo 
    "<center><table width=\"70%\" border=1>";
    foreach ( 
    $array as $uid => $valori ) {
        echo 
    "<tr><td> $valori[username]</td><td> $uid</td>";
        
    $cont 0;
        foreach ( 
    $valori ['value'] as $value ) {
            
    $cont ++;
            echo 
    "<td> $value </td>";
        }
        for(
    $i $cont$i $lunghezza$i ++) {
            echo 
    "<td></td>";
        }
        echo 
    "</tr>";
    }
    echo 
    "</table></center>"
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.