Visualizzazione risultati 1 fino 3 di 3

Discussione: operazioni condizionali dalla query

  1. #1
    pierinik non è connesso Utente
    Data registrazione
    26-03-2010
    Messaggi
    122

    Predefinito operazioni condizionali dalla query

    Salve a tutti,
    oggi vorrei fare delle operazioni, come da oggetto, sui valori dei dati estratti da una query.
    Pensavo di passare i valori ad un array, ma non ci riesco, per questo ho bisogno di una mano.
    Presento prima l'idea.
    Devo organizzare delle tavolate. Ad ogni tavolo devono sedersi 4 giocatori, non a caso.
    Quello che devo fare è gestire i posti in base a delle operazioni matematiche.
    Non mi dilungo a spiegare i perchè, ma questo è il succo.

    Questo è quello che ho fatto:
    Codice PHP:
    $query="SELECT * FROM nomi";

    $result=$mysqli->query($query);
    $num=0;
    // CICLO
    while ($row = $result->fetch_object())
    {
    // valore A parte da 1
    $A = ++$num;
    // numera i tavoli
    echo '<td style="text-align: center;"><font color="blue">'.$A.'</font></td>
    // primo giocatore
    <td>'
    .$row->nome.'</td><td>con</td>';
    // secondo giocatore
    echo '<td>'.$row->nome.'</td>
    <td></td>'
    ;
    // terzo giocatore
    echo '<td>'.$row->nome.'</td><td>con</td>';
    // quarto giocatore
    echo '<td>'.$row->nome.'</td><tr>';
    }
    echo
    '</table>';
    ?>
    In questo modo però ottengo solo una lista ripetuta. Come si vede dall'immagine sotto.


    Per questo pensavo di usare varie varibili.
    Avendo un elenco tipo
    1 - Piero
    2 – Mario
    3 – Aldo
    4 – Giulietta
    5 – Giulio
    6 – Luigino
    7 – Luca
    8 – Franco
    9 – Alessandro
    10 – Pino
    11 – Giuseppe
    12 - Andrea
    Imposterei con:
    A = inizia dai primi nomi in elenco
    B = inizia dall'ultimo valore in elenco (cioè il totale dei giocatori)
    C = inizia dal valore della metà dei giocatori (quindi il totale dei giocatori diviso 2, ovvero B/2)
    D = invece equivale a B - (B/4)

    In questo modo otterrei:
    Tavolo 1: Piero + Andrea contro Luigino + Alessandro
    Tavolo 2: Mario + Giuseppe contro Giulio + Franco
    Tavolo 3: Aldo + Pino contro Giulietta + Luca

    In altre parole, lo schema sopra equivale a questi valori:
    1 con 12 contro 6 con 9
    2 con 11 contro 5 con 8
    3 con 10 contro 4 con 7
    Come si può vedere il valore di A s'incrementa, mentre quelli di B C e D si decrementano ogni volta.

    Sono stato un pò lungo, ma era necessario per spiegare la mia esigenza e come intendevo fare.
    Capisco che sia tutto molto articolato, ma ho bisogno di fare in questo modo.
    Grazie a tutti e soprattutto a chi avrà la pazienza di darmi una mano.
    Buona giornata

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

    Predefinito

    Un modo semplice è memorizzare preventivamente i dati dei giocatori in un vettore e solo successivamente usare quest'ultimo per stampare le informazioni:
    Codice PHP:
    $query = "SELECT * FROM nomi";
    $result = $mysqli->query($query) or die("Errore nella query: " . $mysqli->error);
    $players = $result->fetch_all(MYSQLI_ASSOC);

    $n = count($players);
    for (
    $i = 0; $i < $n / 4; ++$i) {
    $a = $i;
    $b = $n - 1 - $i;
    $c = $n / 2 - $i - 1;
    $d = $c + $n / 4;

    echo
    $i . ": " . $players[$a]["nome"] . " con " . $players[$b]["nome"]
    .
    " vs "
    . $players[$c]["nome"] . " con " . $players[$d]["nome"] . "<br>";
    }
    Se sei disposto a cambiare il criterio con cui sono formate le coppie, ce n'è uno molto più facile:
    Codice PHP:
    $query = "SELECT * FROM nomi";
    $result = $mysqli->query($query) or die("Errore nella query: " . $mysqli->error);
    $players = $result->fetch_all(MYSQLI_ASSOC);

    for (
    $i = 0; $i < count($players); $i += 4) {
    echo
    $i . ": " . $players[$i]["nome"] . " con " . $players[$i + 1]["nome"]
    .
    " vs "
    . $players[$i + 2]["nome"] . " con " . $players[$i + 3]["nome"] . "<br>";
    }

    I suggerimenti che do più spesso:


  3. #3
    pierinik non è connesso Utente
    Data registrazione
    26-03-2010
    Messaggi
    122

    Predefinito

    Grandioso.
    Ho fatto un pò fatica ha capire tutto, ma funziona.
    Mi va bene la prima impostazione, per motivi organizzitivi del gioco.
    Infatti questa è solo la prima combinazione, poi al giro sucessivo devo rimescolare i giocatori nei tavoli, quindi devo cambiare la combinazione degli incroci delle coppie di giocatori.
    Badando a cambiare anche le coppie.
    E' un pò elaborato come meccanismo, ma è così che prevede il gioco.

    Nei prossimi giorni, vedo di andare avanti.
    Adesso che mi hai dato l'imbeccata, spero di riuscire da solo.
    Altrimenti tornerò a chiedere aiuto.
    Grazie infinite mzanella

Regole di scrittura

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