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

    [php] Organizzare un calendario con php

    Ciao a tutti, sto facendo un sito in php+mysql per il torneo di fantacalcio che faccio con gli amici. La cosa che mi piacerebbe fare è, però, quella di costruire il calendario delle partite direttamente attraverso una pagina php nel sito. Mettiamo, per esempio, che nel mio database la tabella con le squadre sia formata in questa maniera:

    nome char(30) PRI
    proprietario char(20) YES MUL NULL
    colore1 char(15) YES NULL
    colore2 char(15) YES NULL
    logo_id int(11) YES MUL NULL
    stadio char(30) YES NULL

    a me piacerebbe organizzare direttamente le partite senza andare a fare 10000000 si insert sul database....
    Avevo pensato a due for concatenati, però in sta maniera non riesco a salvare il numero della giornata. Qualcuno può aiutarmi?
    Grazie..

  2. #2
    Se mi spieghi come funziona il fantacalcio ti potrei aiutare! Purtroppo non so nemmeno da dove si comincia! Ricordo solo che all'inizio si fa un'asta e che si compra la gazzetta dello sport! basta!!!

  3. #3
    Guarda, il problema non è tanto il funzionamento del fantacalcio perchè è un problema di una particolare pagina php. Cmq nel fantacalcio ognuno si fa una squadra con i giocatori di Serie A mediante un'asta e ogni domenica fa la formazione e, a seconda di quanto prendono i giocatori che ha messo titolari e panchinari, arriverà a un totale che potrà essere maggiore, uguale o minore del suo avversario. Ma mi sa che sto andando un po' OT. Allora ti spiego bene:
    1) ogni utente quando si registra al sito, dà anche il nome alla propria squadra e alcune caratteristiche. Tutte queste cose riguardanti la squadra le ho salvate su una tabella "squadre" del mio database mysql ed è formato in questa maniera:

    Field Type Null Key Default Extra
    nome char(30) PRI
    proprietario char(20) YES MUL NULL
    colore1 char(15) YES NULL
    colore2 char(15) YES NULL
    logo_id int(11) YES MUL NULL
    stadio char(30) YES NULL

    Ogni squadra, naturalmente, deve fare alcune partite e le partite sono salvate nella tabella "giornate" del mio database. Questa tabella è così formata:

    Field Type Null Key Default Extra
    squadra_casa char(30) YES MUL NULL
    squadra_fuori char(30) YES MUL NULL
    gol_casa int(11) YES NULL
    gol_fuori int(11) YES NULL
    numero_giornata int(11) YES NULL
    id_partita int(4) PRI NULL auto_increment

    Quando tutti gli utenti si saranno iscritti avrò 10 squadre e con queste squadre voglio fare un calendario, ossia mettere tutte le combinazioni possibili tra le squadre nella tabella giornate.
    E' possibile fare tuttto questo con un apagina php automaticamente o devo fare tutto a mano con mysql?

  4. #4
    Ho capito: quindi alla fine tu vuoi semplicemente fare in modo che tutti giochino con tutti!

    E' possibile farlo però dovresti aspettare un po' che ci penso!

  5. #5
    Grazie mille.. ti do alcune indicazioni: siamo in 10 squadre, ogni squadra gioca una partita in casa e quella dopo fuori. Le giornate sono 36 in tutto, per cui si avranno 2 andate e 2 ritorni. Mi sto cervellando anch'io da un po', ma non riesco a trovare un algoritmo ottimale..

  6. #6
    Allora, io ho pensato di utilizzare un for ed un foreach.

    Le squadre sono memorizzate nel db. Quindi il primo passo da fare è sapere quante squadre ci sono (tu lo sai ma potresti anche non saperlo!).

    1) Pertanto per prima cosa estrai gli id delle squadre e li inserisci in un array.

    2) Esegui il foreach ed incrementi il contatore ($a++)
    codice:
    $a = 0;
    foreach ( $squadre as $key => $value )
    In questo modo scorri tutto l'array.

    3) A questo punto devi inserire un for che ti combini la squadra attuale (indicata dalla variabile $i) con tutte le altre
    codice:
    for ($b = 0 ; $b < count($squadre) ; $b++)
       {
          if ( $a != $b )
            {
              $squadre[$a] giocherà contro $squadre[$b]
            }
       }
    Il codice è molto molto generico. Più che altro è la spiegazione del procedimento che seguirei io. Cerca di combinare qualcosa. Se non ci riesci vedrò di aiutarti in modo più specifico. Purtroppo il tempo è tiranno e di più per adesso non posso! Fammi sapere! Ciao!

  7. #7
    Grazie mille Mircov. Ho provato a mettere in pratica il tuo esempio, ma putroppo non riesco ad andare avanti. Ce la faresti a buttarmi due righe di codice php tu? Thanks

  8. #8
    codice:
    $query = ... ,
    $result = ... ,
    $squadre = array();
    while ($row = mysql_fetch_array($result))
         {
            // Metti nell'array squadre
            // tutti gli id delle squadre
            $squadre = $row['id'] ;
         }
    
    // A questo punto scorri
    // l'array squadra per squadra
    
    $vs1 = array(); // Contiene la squadra che si scontra con $vs2
    $vs2 = array(); // Contiene la squadra che si scontra con $vs1
    foreach ( $squadre as $key => $value )
           {
              // Ora devi combinare ogni
              // squadra con le altre
              $i = 0;
              for ($i = 0 ; $i < count($squadre) ; $i++)
                 {
                    // Controllo che la squadra non
                    // sia quella processata dal foreach
                    if ( $i != $key )
                      {
                         $vs1[] = $value ;
                         $vs2[] = $squadre[$i];
                      }
                 }
           }
    Provalo e fammi sapere se va bene! Credo ci sia qualche errore perchè una cosa è ragionare un'altra mettere in pratica. Cmq vedremo di migliorarlo nel caso non vada bene. Ciao!

  9. #9
    Mircov, scusami m anon riesco a seguire il tuo ragionamento. Io avevo pensato ad una cosa del genere...:

    $query = "SELECT nome FROM squadre;";
    $result = mysql_query($query, $myconn) or die ("Errore...");
    $numrows = mysql_num_rows($result);
    for($x=0; $x<$numrows; $x++){
    $resrow = mysql_fetch_row($result);
    $nomesquadra[$x] = $resrow[0];
    }
    //primo for che è il numero di andate e ritorni cioè 4 in totale
    for ($y=1; $y<5; $y++) {
    //secondo for per il numero di partita da includere in un girone d'andata o ritorno cioè 9
    for ($z=1;$z<10;$z++) {
    //terzo for per trovare la squadra in casa e trasferta per ogni partita
    for ($k=1;$k<$numrows;$k=$k+2) {
    $query = "INSERT INTO giornate (squadra_casa, squadra_fuori, numero_giornata) VALUES ('$nomesquadra[$k]', '$nomesquadra[$k+1], $z*$y);";
    $result = mysql_query($query, $myconn) or die ("Errore...");
    $numrows = mysql_num_rows($result);

    Però a questo punto mi blocco perchè al max in questa maniera può funzionare la prima giornata, ma dopo il tutto non funzionerebbe più per le altre giornate. Qualche consiglio?

  10. #10
    Ma allora a te non serve solo combinare le squadre! Servono anche altre informazioni!

    Facciamo una cosa: dimmi tutto quello che ti serve così avrò un quadro più ampio del progetto e potrò aiutarti ad ottimizzare il codice. Spiegami un po' cosa vuoi di preciso: se non dovessi capire qualcosa chiederò a qualche mio amico dei chiarimenti (parlare a voce è molto più chiaro che parlare via forum certe volte!).

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 © 2025 vBulletin Solutions, Inc. All rights reserved.