Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Classifica che si aggiorna in base al calendario.

    Ciao a tutti.
    Ancora un altro problema, sempre di fantasia : tra una settimana devo pubblicare sul mio sito il calendario del campionato di Eccellenza, dove milita la squadra della mia città. Per non aggiornarlo ogni domenica modificando il file .htm e ripubblicandolo, vorrei memorizzare il calendario in una tabella del mio database in modo tale da aggiornarlo tramite uno script che poi scriverò.

    Il problema è questo: siccome il calendario sarà strutturato così "Squadra1 - Squadra2 1 - 0", come faccio per far capire a php che se una squadra ha avuto punteggio maggiore deve aggiungere tre punti, se hanno pareggiato 1 ciascuno, e se ha perso niente? :master:

    Alla fine della pagina che conterrà il calendario imposterò una query che invierà i punti di ogni squadra alla tabella classifica che automaticamente aggiornerà la classifica in Home Page.

    Grazie in anticipo come sempre.


  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Domanda interessante.

    Supponendo di avere una tabella strutturata così

    id
    squadra1
    squadra2
    psq1 (reti squadra casa)
    psq2 (reti squadra trasferta)

    potresti fare

    codice:
    select squadra,sum(punti) as punteggio from
    (
    select squadra1 as squadra,
    if(psq1 > psq2, 3, if (psq1 < psq2, 0,1)) as punti
    from campionato
    union all
    select squadra2 as squadra,
    if(psq1 > psq2, 0, if (psq1 < psq2, 3,1)) as punti
    from campionato 
    )as tab
    group by squadra
    order by punteggio desc
    L'ho provata con pochi record ma mi sembra che funzioni. Fammi sapere.

  3. #3
    Potresti spiegarmi la query per favore?

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Allora,

    select squadra1 as squadra,
    if(psq1 > psq2, 3, if (psq1 < psq2, 0,1)) as punti
    from campionato

    estrae la squadra che gioca in casa. L'if serve per recuperare il punteggio, 3 punti in caso il numero di gol sia maggiore dei gol segnati dalla squadra in trasferta, 1 in caso di pareggio e 0 in caso di sconfitta.

    Con l'union all praticamente crei un'unica colonna relativa alle squadre, sia che giochino in casa o in trasferta.

    select squadra2 as squadra,
    if(psq1 > psq2, 0, if (psq1 < psq2, 3,1)) as punti
    from campionato

    query quasi identica alla precedente per calcolare i punti da attribuire alla squadra in trasferta.

    Una volta creata questa tabella fittizia tramite le due query unite con l'union all fai la query esterna in cui calcoli la somma dei punteggi per ciascuna squadra e le ordini in ordine decrescente.

  5. #5
    Ma per il calendario?

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da F@bius
    Ma per il calendario?
    Ti ho scritto la query per calcolarti la classifica una volta che inserisci i risultati degli incontri. Mi sembra che la tua domanda fosse quella.

  7. #7
    Questo pomeriggio proverò ad iniziare lo script.

    Ti farò sapere.

  8. #8
    Allora, non trovo vie d'uscite. Spiego meglio cosa ho in mente di fare.

    Innanzitutto ho creato una nuova tabella all'interno del mio db chiamata "calendario". I campi di questa tabella sono "id (chiave primaria)", "data (in formato datatime, meglio)", "partite", "girone (se andata o ritorno)". Dopo aver installato la tabella ho creato uno script con i campi data, una textarea per inserire tutte le partite di quella giornata e un campo di testo per il girone.

    Però mi è venuto un dubbio: visto che la pagina "calendario" sarà una pagina .php che conterrà una query SELECT e un ciclo while per visualizzare tutto il campionato, quando il mio collaboratore dovrà immettere i risultati di quella giornata, essi si memorizzeranno nel campo "partite", ovvero quello che contiene le partite della giornata. Di conseguenza PHP non potrà capire quale sia la squadra che ha vinto e quale no e consequenzialmente non potrà calcolare il punteggio di ciascuna compagine.

    Se io inserisco una sola partita per volta seguita dalla data e dal campo risultato, la pagina calendario.php anziché visualizzare la data della giornata, il girone e le partite di quel giorno, visualizzerà tutte le partite con a fianco la data, anziché visualizzare quest'ultima una sola volta.

    Se riesco a risolvere il problema del calendario, devo trovare il modo in cui fare capire a PHP che deve sommare punti alla squadra vincitrice e alle squadre in parità, mentre non deve operare su quelle vinte e siccome si tratta solo di stringhe di testo che verranno visualizzate, non trovo la soluzione per poter espletare il tutto.

  9. #9
    Allora, propongo una possibile soluzione.

    Ho pensato di creare un form con il campo Data, uno per la Giornata, uno per il Girone e anziché creare una textarea per le partite, creo tanti campi di testo quante sono le squadre, e così anche per i risultati: campo_squadra1 - campo_squadra2 ris1 - ris2 ecc. Per far in modo che tutte le partite compresi i risultati siano memorizzati in una stessa riga, nel file d'inserzione creo una variabile contenente tutte i campi_squadra separati da
    e lo stesso faccio per i risultati. In tal modo il file calendario.php visualizzerà il calendario correttamente, e quando dovrò estrarre la giornata di campionato per poter immettere i risultati, con un SELECT la estraggo, con explode separo squadre e risultati e li immetto nei vari campi di testo automaticamente e creando dei nomi unici per ogni campo di testo eseguo diversi if che mi calcolino il risultato e lo mandino ai tot della tabella classifica.

    Cosa ne pensi?

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Ovvio che dovrai usare dei campi separati: uno per la squadra che gioca in casa, uno per quella in trasferta, uno per il numero di reti segnate dalla squadra che gioca in casa e uno per l'altra.
    Mi sembrava chiaro dalla bozza di struttura che ti avevo già proposto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.