Visualizzazione risultati 1 fino 10 di 10

Discussione: Selezionare risultati query

  1. #1
    Guest

    Exclamation Selezionare risultati query

    Salve a tutti

    Codice PHP:
    $tod = date("j");
    $tom = date("m");
    $toy = date("Y");

    $result = mysqli_query($con,"SELECT * FROM eventi ORDER BY anno, mese, giorno");
    if (
    $result->num_rows >0)
    {while(
    $row = mysqli_fetch_array($result))
    {if(
    $row['anno']==$toy)
    {if(
    $row['mese']==$tom)
    {if(
    $row['giorno']>=$tod)
    {echo
    $row['giorno'] . " - " . $row['evento'] . " - " . $row['luogo'] . "<br>";}}
    else{if(
    $row['mese']>$tom){echo $row['giorno'] . " - " . $row['evento'] . " - " . $row['luogo'] . "<br>";}}}
    else{if(
    $row['anno']>$toy){echo $row['giorno'] . " - " . $row['evento'] . " - " . $row['luogo'] . "<br>";}}}}
    Ho utilizzato questo codice per estrarre i dati selezionando solo quelli che hanno una data maggiore o uguale a quella di oggi, ma dovrei visualizzare solo i primi due:
    pensavo bastasse inserire "LIMIT 2" nella query ma in questo modo le due righe ottenute contengono eventi già passati, i quali vengono filtrati dagli if e come risultato non viene visualizzato niente...

    grazie! =)

  2. #2
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Cambia la tua query in:

    Codice PHP:
    "SELECT * FROM eventi ORDER BY anno, mese, giorno DESC LIMIT 2"
    Apprezzi l'aiuto? Offrimi un caffè!

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da miki92 Visualizza messaggio
    Cambia la tua query in:

    Codice PHP:
    "SELECT * FROM eventi ORDER BY anno, mese, giorno DESC LIMIT 2"
    no, non funziona :(
    DESC non cambia solo l'ordine dei risultati?

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Non mi piacciono tutti quegli if. Le elaborazioni, quando possibile, è meglio farle con mysql. Una cosa del tipo:

    Codice PHP:
    $result = mysqli_query($con,"SELECT * FROM eventi WHERE MAKEDATE(anno, mese, giorno ) > CURDATE() ORDER BY MAKEDATE(anno, mese, giorno )");
    if (
    $result->num_rows >0)
    {
    while(
    $row = mysqli_fetch_array($result))
    {
    echo
    $row['giorno'] . " - " . $row['evento'] . " - " . $row['luogo'] . "<br>";
    }
    }
    (non ho provato se funziona).
    Documentazione.

    Comunque, se avessi salvato la data in formato "data", e non in 3 valori differenti, sarebbe stato più facile, ma soprattutto avresti risparmiato memoria dovendo salvare una cosa invece che tre. .

    Ciao!
    Ultima modifica di alemoppo : 23-01-2014 alle ore 20.14.41

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Non mi piacciono tutti quegli if. Le elaborazioni, quando possibile, è meglio farle con mysql. Una cosa del tipo:

    Codice PHP:
    $result = mysqli_query($con,"SELECT * FROM eventi WHERE MAKEDATE(anno, mese, giorno ) > CURDATE() ORDER BY MAKEDATE(anno, mese, giorno )");
    if (
    $result->num_rows >0)
    {
    while(
    $row = mysqli_fetch_array($result))
    {
    echo
    $row['giorno'] . " - " . $row['evento'] . " - " . $row['luogo'] . "<br>";
    }
    }
    (non ho provato se funziona).
    Documentazione.

    Comunque, se avessi salvato la data in formato "data", e non in 3 valori differenti, sarebbe stato più facile, ma soprattutto risparmieresti memoria dovendo salvare una cosa invece che tre. .

    Ciao!
    Grazie mille! provo subito =)

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Ah, mi son dimenticato il LIMIT 2!

    Fammi comunque sapere se va...

    Ciao!

  7. #7
    Guest

    Predefinito

    MAKEDATE però non utilizza il valore "mese".. soltanto anno e giorno dell'anno da 0 a 365 :(

  8. #8
    Guest

    Predefinito

    ho cambiato i tre campi anno-mese-giorno con data... ora basta usare questa
    Codice PHP:
    SELECT * FROM eventi WHERE data >= CURDATE() ORDER BY data LIMIT 2
    invece ora ho un altro problema
    se prima per visualizzare un campo bastava
    Codice PHP:
    echo $row['mese'];
    ora come faccio?

    grazie ancora

  9. #9
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Citazione Originalmente inviato da wingtest Visualizza messaggio
    MAKEDATE però non utilizza il valore "mese".. soltanto anno e giorno dell'anno da 0 a 365 :(
    Giusto, non men'ero accorto.

    Comunque, per il nuovo problema:
    Codice:
    SELECT *,DAY(data) as giorno, MONTH(data) as mese, YEAR(data) as anno FROM eventi WHERE data >= CURDATE() ORDER BY data LIMIT 2
    Ciao!
    Ultima modifica di alemoppo : 23-01-2014 alle ore 22.11.33

  10. #10
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Giusto, non men'ero accorto.

    Comunque, per il nuovo problema:
    Codice:
    SELECT *,DAY(data) as giorno, MONTH(data) as mese, YEAR(data) as anno FROM eventi WHERE data >= CURDATE() ORDER BY data LIMIT 2
    Ciao!
    grande!

Tags for this Thread

Regole di scrittura

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