Visualizzazione risultati 1 fino 3 di 3

Discussione: Lista record in mysql con esclusione

  1. #1
    gianlucaweb non è connesso Utente attivo
    Data registrazione
    01-01-2003
    Messaggi
    466

    Predefinito Lista record in mysql con esclusione

    Ciao,

    Mi stavo chiedendo come estrarre i dati da un DB MYSQL con PHP escludendo dalla lista uno secondo un criterio.

    Diciamo che da un query semplice e classica come questa:

    Codice PHP:

    $sql 
    "SELECT * FROM utenti";
    $result mysqli_query($con$sql) or die(mysql_error()); // $con è la connessione al database MySQL
    while($row mysqli_fetch_accoc($result )){

    $nomeUtente $row['nome'];
    $cognomeUtente $row['cognome']; 
    io volessi escludere dalla stampa della lista il primo utente (o il terzo).

    Cosa dovrei aggiungere al codice?
    Scusate, ma sono un po' (troppo) arrugginito con il codice php. È da parecchio tempo che non metto mano ad un progetto.
    Grazie
    Ultima modifica di gianlucaweb : 14-01-2019 alle ore 12.32.54

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

    Predefinito

    In generale per escludere risultati è prevista una sintassi apposita per la query:
    Codice:
    SELECT * FROM tabella WHERE campo != valore;
    così facendo vengono selezionati tutte le righe in cui la colonna campo non contiene valore. Dualmente, vengono escluse le righe in cui campo contiene valore.

    Ci sono però condizioni che non è possibile (o conveniente) esprimere in SQL. Per esempio "escludere il primo risultato": poiché i risultati restituiti da MySQL non sono ordinati (si parla infatti di record set, non record list) è impossibile determinare chi sia il primo. Quello che puoi fare è lavorare col "PHP standard" saltando la prima iterazione di un ciclo:
    Codice PHP:
    $i 0;
    while (
    $row mysqli_fetch_assoc($result)) {
        ++
    $i;
        if (
    $i == 1) {
            continue;
        }

        
    ehco $row['nome'];

    questo ovviamente non ha nulla a che fare con SQL (e nemmeno con PHP in modo specifico), è programmazione pura e semplice.

    Ancora diverso è se sei in grado di trasformare il risultato di un'interrogazione in un insieme (totalmente) ordinato e, al contempo, i risultati che vuoi escludere sono i primi k:
    Codice:
    SELECT * FROM tabella ORDER BY campo ASC OFFSET 10
    significa di ordinare i risultati in base al valore di campo (crescente) ed escludere i primi 10.

    I suggerimenti che do più spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  3. #3
    gianlucaweb non è connesso Utente attivo
    Data registrazione
    01-01-2003
    Messaggi
    466

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    In generale per escludere risultati è prevista una sintassi apposita per la query:
    Codice:
    SELECT * FROM tabella WHERE campo != valore;
    così facendo vengono selezionati tutte le righe in cui la colonna campo non contiene valore. Dualmente, vengono escluse le righe in cui campo contiene valore.

    Ci sono però condizioni che non è possibile (o conveniente) esprimere in SQL. Per esempio "escludere il primo risultato": poiché i risultati restituiti da MySQL non sono ordinati (si parla infatti di record set, non record list) è impossibile determinare chi sia il primo. Quello che puoi fare è lavorare col "PHP standard" saltando la prima iterazione di un ciclo:
    Codice PHP:
    $i 0;
    while (
    $row mysqli_fetch_assoc($result)) {
        ++
    $i;
        if (
    $i == 1) {
            continue;
        }

        
    ehco $row['nome'];

    questo ovviamente non ha nulla a che fare con SQL (e nemmeno con PHP in modo specifico), è programmazione pura e semplice.

    Ancora diverso è se sei in grado di trasformare il risultato di un'interrogazione in un insieme (totalmente) ordinato e, al contempo, i risultati che vuoi escludere sono i primi k:
    Codice:
    SELECT * FROM tabella ORDER BY campo ASC OFFSET 10
    significa di ordinare i risultati in base al valore di campo (crescente) ed escludere i primi 10.
    Risposta più che soddisfacente. Grazie mille!!

    Ci lavoro un po' sopra nel senso che proverò a inserire la modifica in un paio di piccoli progetti che ho da tempo e a cui non metto mano da molto, cogliendo così anche l'occasione per rispolverare le mie conoscenze (accidenti ho dimenticato quasi tutto). Se ho ancora dei dubbi o trovo delle difficoltà al lilmite mi faccio risentire almeno giusto per consolidare la compresione di questo passaggio.
    Ultima modifica di gianlucaweb : 14-01-2019 alle ore 16.14.18

Regole di scrittura

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