Visualizzazione risultati 1 fino 5 di 5

Discussione: problema estrazione dati da database filtrando account

  1. #1
    Guest

    Predefinito problema estrazione dati da database filtrando account

    Salve, sto facendo un piccolo sito dove andrò a caricare i miei file, fin qui tutto bene.
    Ho creato il form per caricare, adesso devo poter visualizzare e poter gestire i file dal pannello.

    Dovrei poter estrarre i file filtrando tramite nome account.

    Codice:
    Codice PHP:

    @session_start();
    @include_once
    'db/functions.php';
    $id = $_SESSION['id'];

    if (
    $_SESSION['login']==false) @header("location:login.php");

    $nome = mysql_query("SELECT nome_utente FROM iscritti WHERE id_utente='$id'") or die('Errore: ' .mysql_error());

    $query = mysql_query("SELECT * FROM uploads") or die(mysql_error());

    while (
    $row = mysql_fetch_array($query, MYSQL_ASSOC) ) {
    if (
    $nome == $row['nome_uploader'])
    {
    echo
    "<tr><td>Nome File: ".$row['nome_file']."Link File:".$row['url_file']"</td></tr>\n";

    }
    else echo
    "nessun file presente nel tuo account";
    }
    Ho fatto delle prove caricando dei file, nel database risulta il nickname in modo corretto di chi ha caricato il file, quando vado ad aprire la pagina mostra comunque "nessun file presente nel tuo account".
    Aiuto.
    Ultima modifica di superupload : 03-10-2017 alle ore 19.39.52

  2. #2
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    in mysql_query stai recuperando solo il campo nome_utente if ($nome == $row['nome_uploader']) non esisterà mai nome_uploader mentre $query restituirà il file se presente if($row['nome_uploader']) {
    //bla bla
    }
    else {
    //bla bla
    }
    potrebbe esserci... PS. Cosi recuperi sempre l'ultimo file :D
    Ultima modifica di darbula : 03-10-2017 alle ore 20.06.59

  3. #3
    Guest

    Predefinito

    togliendo l'if i file caricati li mostra tutti normalmente dal primo all'ultimo, come dovrei fare allora?

  4. #4
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Magari studiando o effettuare donazioni a chi ti aiuta? :D ... umh nella tabella uploader è già presente lo stesso id della tabella iscritti? Beh questo è un modo sicuro per recuperare il/i file dello stesso id (utente)..
    Poi effettui una join https://www.mrwebmaster.it/mysql/join_6812.html per altervista bisogna abilitare dal pannello di controlli innodb
    Ultima modifica di darbula : 03-10-2017 alle ore 21.25.46

  5. #5
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    I problemi più grossi riguardano queste due righe:
    Codice PHP:
    $nome = mysql_query("SELECT nome_utente FROM iscritti WHERE id_utente='$id'") or die('Errore: ' .mysql_error());
    ...
    if (
    $nome == $row['nome_uploader'])
    Nella prima inizializzi $nome al risultato di un interrogazione alla base di dati, nell'altra controlli se la stringa conenuta in $row['nome_uploader'] è uguale a $nome, il che è sempre falso perché una stringa non potrà mai essere uguale ad un record set restituito da mysql_query.

    Ci sono poi diverse altri aspetti migliorabili:
    • non usare mai l'operatore di soppressione degli errori (la @): in fase di sviluppo se ci sono errori è bene che ti siano mostrati, in fase di produzione non ci devono essere errori, dunque è inutile
    • non ha senso recuperare tutte le righe di una tabella (mi riferisco a SELECT * FROM uploads) solo per poi effettuare un ciclo per escluderne alcune, è molto più efficiente andare a recuperare solo le righe che interessano aggiungendo una clausola WHERE
    • usa nomi pertinenti per le variabili, ad esempio mysql_query restituisce un record set o result, non un nome o una query
    • le funzioni mysql_* sono deprecate, andrebbero sostituite con mysqli o PDO


    Quindi:
    Codice PHP:
    session_start();
    include_once
    'db/functions.php';

    $id = $_SESSION['id'];

    // Redirect se il login non è stato effettuato
    if ($_SESSION['login'] == false) {
    header("location:login.php");
    }

    // Recupera il nome utente
    $query = "SELECT nome_utente FROM iscritti WHERE id_utente='$id'";
    $result = mysql_query($query) or die('Errore: ' . mysql_error());
    $row = mysql_fetch_array($result, MYSQL_ASSOC) or die("Errore: Nessun utente con id $id");
    $nome_utente = $row['nome_utente'];

    // Recupera i file caricati dall'utente
    $query = "SELECT * FROM uploads WHERE nome_uploader='$nome_utente'";
    $result = mysql_query($query) or die(mysql_error());

    // Mostra i file caricati dall'utente
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo
    "<tr><td>Nome File: ".$row['nome_file']."Link File:".$row['url_file']"</td></tr>\n";
    }
    Potrebbero esserci degli errori di sintassi, quindi ti invito a controllare.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •