• User

    Lista privata dei file caricati dall'utente

    Salve ...ho fatto 2 tabelle "utenti" e "file"; l'utente registrato può fare l'upload di file, nella sua area privata ho messto il collegamento alla pagina dei file condivisi(file_condivisi.php) dove sono stampati tutti i documenti caricati da ogni utente. Il mio problema è questo....volevo fare un collegamento alla pagina lista privata (file_privati.php) dove l'utente vede solo i file pubblicati da lui. E' possibile recuperare dalla tabella file solo i documenti dell'utente loggato?
    Grazie.


  • User

    ovvio, se tu metti un riferimento in tabella nella tupla dove hai memorizzato l'indirizzo del file anche un altro campo che contiene l'id dell'utente.
    A quel punto quando esegui la query di interrogazione selezioni tutte le tuple che hanno come campo ID_UTENTE l'ID dell'utente che le sta visualizzando (tale ID credo tu lo abbia salvato in una variabile di sessione al momento dell'accesso).

    In poche parole devi inserire una relazione tra la tabella FILE e quella UTENTI di tipo 1:molti in quanto un utente può caricare più file e quindi aggiungere il campo ID_UTENTE alla tabella 'file'.


  • User

    Esatto questa è la variabile $_SESSION['login_username'] = $user; Ti posto lo script perchè non riesco a capire dove è il mio errore!!!
    <?php
    // Includo la connessione al database
    require('config.php');
    session_start();
    $db_tabella = 'utenti'; // Nome del Database
    $connessione = mysql_connect($db_host,$db_utente,$db_password);

    // Se non è stata definita la variabile manda l'utente alla homepage
    if(!isset($_SESSION['login_username']))
    {
    header('Location: index.php');
    exit;

    }

    $query="SELECT * FROM file";
    $risultati=mysql_num_rows($query);

    $i=0;
    while ($i < $num) {
    $nome_file=mysql_result($risultato,$i,"nome_file");

     $_SESSION['login_username']=mysql_result($risultato,$i,"id_utente");
     $data_file=mysql_result($risultato,$i,"data_file");
    

    echo "<b>$nome_file</b> caricato il <b> $data_file</b>";

    $i++;
    }
    ?></p>


  • User

    Con questo script non mi fa vedere niente!!!! Nella tabella file ho fatto questi campi :id_file, nome_file, id_utente(stampa il nome dell'utente che ha caricato il file), tipo_file, data_file, dati_file


  • User

    Da quanto si può notare fai un pò di confusione con il linguaggio SQL.
    Nella query iniziale puoi già mettere il 'WHERE' che serve per inserire delle condizioni. Per informarti meglio vai su questo
    w3schools.com/sql/sql_where.asp

    Nel tuo caso intanto se non esegui la query non puoi sapere quanti risultati ti da [tabella risultato=$tab_ris].

    [PHP]
    <?php
    require('config.php');
    session_start();
    $db_tabella = 'utenti'; // Nome del Database
    $connessione = mysql_connect($db_host,$db_utente,$db_password);

    // Se non è stata definita la variabile manda l'utente alla homepage
    if(!isset($_SESSION['login_username']))
    {
    header('Location: index.php');
    exit;
    }

    $query="SELECT * FROM file WHERE id_proprietario=$user";
    $tab_ris=mysql_query($query) or die(mysql_error()); //esegue la query
    $risultati=mysql_num_rows($tab_ris);

    for(I=0; I<$risultati; I++){
    $riga=mysql_fetch_array($tab_ris);
    echo "<b>".$riga['nome']."</b> caricato il <b>". $riga['data_file']."</b><br>";
    }
    [/PHP]

    Prova in questo modo e fammi sapere. Io non ho provato, ho solo scritto 🙂


  • User

    Scusa se rispondo adesso, ho avuto problemi con la connessione....comunque non va mi dà questo errore:
    -You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1.
    Ti posto anche il codice che ho inserito:
    codice PHP:
    <?php
    require('config.php');
    session_start();
    $db_tabella = 'utenti'; // Nome del Database
    $connessione = mysql_connect($db_host,$db_utente,$db_password);

    // Se non è stata definita la variabile manda l'utente alla homepage
    if(!isset($_SESSION['login_username']))
    {
    header('Location: index.php');
    exit;
    }

    $query="SELECT * FROM file WHERE id_utente = $user";
    $tab_ris=mysql_query($query) or die(mysql_error()); //esegue la query
    $risultati=mysql_num_rows($tab_ris);

    for ($I = 0; $I<$risultati; $I++){
    $riga [] = mysql_fetch_array($tab_ris);
    echo "<b>".$riga['nome_file']."</b> caricato il <b>". $riga['data_file']."</b><br>";
    }

    ?>


  • User

    ok scusa,
    prova a sostituire questa riga:
    [PHP]$query="SELECT * FROM file WHERE id_proprietario=$user";
    [/PHP]
    con questa:
    [PHP]$query="SELECT * FROM file WHERE id_proprietario=".$user;
    [/PHP]


  • User

    Mi da sempre il solito problema:
    -You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1


  • User

    Ho risolto l'errore... era l'uguale (=) dentro le virgolette, l'ho tolto e ho lasciato -$query="SELECT * FROM file WHERE id_proprietario".$user;

    però non mi stampa la lista.


  • User

    Ho risolto tutto ti posto il codice VINCENTE!!!!!:)

    <?php

    require('config.php');

    session_start();

    // Se non è stata definita la variabile manda l'utente alla homepage
    if(!isset($_SESSION['login_username']))
    {
    header('Location: index.php');
    exit;
    }

    $query="SELECT * FROM file WHERE id_utente = '{$_SESSION['login_username']}'";
    $risultato = mysql_query($query)
    or die('Query non valida: ' . mysql_error());

    // se ci sono files nel DB
    if(mysql_numrows($risultato))
    {
    // estrazione dei risultati e stampa dei links ai files
    while ($tmp = mysql_fetch_array($risultato))
    {
    echo "<p><a href="mostra.php?id=$tmp[id_file]">$tmp[nome_file]</a> caricato il $tmp[data_file]<br></p>\n";
    }
    }
    else
    {
    echo '<p>Nessun file presente nel database</p>';
    }

    ?>.