Visualizzazione dei risultati da 1 a 6 su 6

Discussione: relazione fra tabelle

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683

    relazione fra tabelle

    ciao a tutti!!! devo stampare una tabella da database più un pezzo di un altra tabella, allora, io ho due tabelle, una che si chiama utenti e l'altra mp3.
    la tabella mp3 ha iduser, file, voto
    praticamente stampo questi valori tranne iduser che mi servirà per stampare il nickname contenuto nella tebella utenti, quindi dove iduser della tabella mp3 è uguale a id della tabella utenti stampo il nick
    il pezzo di script è sotto e l'errore è questo:
    Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\programmi\easyphp1-8\www\classifica\classifica.php on line 26

    quindi sulla linea: $controllo = mysql_query ("SELECT *FROM `utenti` WHERE `id` = '$row['iduser']' LIMIT 0 , 1");

    Codice PHP:
        $query "SELECT iduser,file,voto FROM mp3 ORDER BY voto DESC LIMIT $start,$step";
        
    $result mysql_query($query$db);
        
        
    $pos $start;
        echo 
    '<table border="1"><tr><td>posizione</td><td>nickname</td><td>voto</td><td>file</td></tr>';
        while (
    $row mysql_fetch_array($result))
        {
            
    $controllo mysql_query ("SELECT *FROM `utenti` WHERE `id` = '$row['iduser']' LIMIT 0 , 1");
            
    $result1 mysql_query($controllo$db);
            
    $row1 mysql_fetch_array($result1);
            
            
    $pos $pos 1;
            echo 
    '<tr><td>'; echo $pos; echo '</td><td>'; echo $row1['nick']; echo '</td><td>'; echo $row['voto']; echo '</td><td>echo $row['file'];</td></tr>'
        }
        echo 
    '</table>'
    grazie in anticipo

  2. #2
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    Il database non c'entra, è un errore di sintassi in PHP.

    Per recuperare il valore da un array dentro una stringa esistono due modi:
    1- spezzandola e concatenando le varie parti col punto

    Codice PHP:
    $array['chiave'] = '-';

    echo 
    "prima parte della stringa" $array['chiave'] ."seconda parte";
    // Visualizzerà: prima parte della stringa-seconda parte 
    2- usando la complex syntax, inserendo la variabile tra parentesi graffe

    Codice PHP:
    $array['chiave'] = '-';

    echo 
    "prima parte della stringa {$array['chiave']} seconda parte";
    // Visualizzerà: prima parte della stringa-seconda parte 
    Piccola nota per la complex syntax: se la chiave è numerica non servono gli apici; le parentesi graffe devono esserci comunque.

    Spesso vengono omesse sia le parentesi graffe che gli apici che delimitano la chiave dell'array ma è una tecnica errata. Così facendo PHP cerca prima una costante col nome della chiave e se non lo trova risolve la questione senza nemmeno mostrare errori.
    Insomma, non è bella programmazione ;P
    Buon lavoro!

    Daniele


    Edit: il tuo script comunque si potrebbe semplificare usando una sola query, incrociando le due tabelle (Inner Join).
    Ti consiglio di leggere questa pagina: http://database.html.it/guide/lezion...so-delle-join/ che spiega cosa sono e come usarle.

    E' una soluzione più performante per il database, soprattutto se la prima query restituisce un elevato numero di record.
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    ho provato con l'inner join, va molto meglio, prima non stampava nulla ora stampa tutto, tranne il nick name (non so se l'ho fatta bene questa cosa dell'inner join), se individuate l'errore ditemelo grazie
    Codice PHP:
        $query "SELECT iduser,file,voto FROM mp3 ORDER BY voto DESC LIMIT $start,$step";
        
    $result mysql_query($query$db);
        
        
    $pos $start;
        echo 
    '<table border="1"><tr><td>posizione</td><td>nickname</td><td>voto</td><td>file</td></tr>';
        while (
    $row mysql_fetch_array($result))
        {
            
    $controllo mysql_query ("SELECT * FROM mp3 AS o JOIN utenti AS c on o.nick = c.nick WHERE iduser >0; ");
            
    $result1 mysql_query($controllo$db);
            
    $row1 mysql_fetch_array($result1);
            
            
    $pos $pos 1;
            echo 
    '<tr><td>'
            echo 
    $pos
            echo 
    '</td><td>'
            echo 
    $row['nick']; 
            echo 
    '</td><td>'
            echo 
    $row['voto']; 
            echo 
    '</td><td>';
            echo 
    $row['file'];'</td></tr>'
        }
        echo 
    '</table>'

  4. #4
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    Intendevo un'ottimizzazione ancora più grande

    Così:

    Codice PHP:
    $query "SELECT  F.file,F.voto,
                      U.nick
                FROM  mp3 AS F,
                      utenti AS U
               WHERE  F.iduser = U.id
            ORDER BY  F.voto DESC
               LIMIT  
    $start,$step";
        
    $result mysql_query($query$db);
        
        
    $pos $start;
        echo 
    '<table border="1"><tr><td>posizione</td><td>nickname</td><td>voto</td><td>file</td></tr>';
        while (
    $row mysql_fetch_array($result))
        {
            
            
    $pos $pos 1;
            echo 
    '<tr><td>'
            echo 
    $pos
            echo 
    '</td><td>'
            echo 
    $row['nick']; 
            echo 
    '</td><td>'
            echo 
    $row['voto']; 
            echo 
    '</td><td>';
            echo 
    $row['file'];
            echo 
    '</td></tr>'
        }
        echo 
    '</table>'
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    aaaaa ora ho capito, bè, perfetto, grazie ancora

  6. #6
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    Di nulla
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

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 © 2025 vBulletin Solutions, Inc. All rights reserved.