Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [php & sql] Gestione partite di basket

    Salve a Tutti, sono nuova di questo forum e anche una neofita di php e mysql.
    Vorrei chiedere qualche consiglio e soprattutto aiuto per un progetto che sto realizzando.
    In pratica devo realizzare un sito, per un esame universitario, per la gestione di un campionato di basket, ovviamente in ambito ristretto a sole 5 squadre.
    Il progetto consiste di creare la funzione del login con divese utenze, nel mio caso: utenti generici, arbitri e giornalisti. Questa funzione sono riuscita a crearla grazie ad una guida presente nel sito di Html.it (la guida che ho usato è questa qui), una volta creata questa struttura ho realizzato il resto del sito. Ho database mysql di tipo relazionale (InnoDB) dove ho creato le diverse relazioni tra le entità. Il sito quindi deve essere completamente dinamico, in modo da prendersi i dati direttamente dal database tramite delle query sql.
    Ora un problema che ho trovato è quello relativo all'inserimento dei risultati delle partite nelle tabelle del mio database. In pratica ho 3 pagine su cui lavoro:
    1. nella prima pagina ho una tabella in cui sono presenti i dati di tutti gli incontri delle diverse giornate di campionato, cioè l'intera lista di tutte le partite presenti nella mia tabella "partite" del database. Ogni riga della tabella identifica un singolo incontro, ad esempio A vs B, C vs D ecc...cliccando sopra il singolo incontro (che è un link) passo ad una seconda pagina, dove si trova il modulo (form) di inserimento risultati. Ovviamente il link dell'incontro invia tramite una $_GET i nomi delle due squadre e quindi l'id della parita a questa seconda pagina, in modo da poter generare in maniera dinamica il modulo per quello specifico incontro.
    2. nella seconda pagina, come ho già accennato, si trova il modulo di inserimento dati. Questo è strutturato in 3 tabelle differenti: nella 1° tabella devo inserire il risultato della partita (Esempio: A vs B con punteggio 50-32) dati che si andranno ad inserire tramite una query UPDATE nella tabella "partite" del mio database. Ovviamente in questa tabella appaiono anche altri attributi di questo primo incontro che mi ricavo sempre dal database.
    Nella 2° tabella ho invece la lista dei giocatori per la squadra di casa, lista che ho generato tramite un ciclo while per ottenere i nomi di coloro che giocano nella squadra di casa, prendendo sempre i dati dalla tabella "giocatore" del mio database. Stesso ragionamento per la 3° tabella, in cui invece ci sono i giocatori della squadra ospite.
    3. nella terza pagina che mi serve per i salvataggi dei dati, ho messo delle query di tipo UPDATE per l'inserimento dei risultati della partita (che andranno ad aggiornare la tabella "parita") e INSERT per l'inserimento dei dei punteggi e i falli fatti da ogni singolo giocatore (che verranno inseriti nellla tabella "performance").

    Il problema fondamentale è che nella pagina di salvataggio non riesco a fare l'inserimento dei punti e falli di ogni singolo giocatore, le cui chiavi sono (IDpartita e IDgiocatore), mi risulta un po' difficile spiegare a parole il fatto che non riesco a far passare queste variabili tramite una $_GET, e il fatto che la lista dei giocatori presenti nel modulo di inserimento è generata da un semplice ciclo while.
    Inoltre prima di fare l'inserimento sia del risultato della squadra che dei punti dei giocatori, andrebbe fatto un controllo che mi verifica se la somma dei punti dei giocatori della squadra casa e ospite sia uguale a quello del risultato di partita.

    Non so se da questa spiegazione si capisca bene quello che dovrei fare, magari ho impostato male proprio la logica di inserimento dei dati, ma essendo inesperta non ho saputo "inventarmi" altro.

    Grazie per l'attenzione.

  2. #2
    E' un po' contorto...

    Forse bisognerebbe analizzarlo pezzo per pezzo...

  3. #3
    Posso provare a mostrarvi il codice delle pagine di inserimento e salvataggio dati, sicuramente ci saranno degli errori! Non conosco benissimo il linguaggio di php!

    Pagina di inserimento dati:
    Codice PHP:
    <?php
    include("top_foot.inc.php");
    include(
    "config.inc.php");
    top();

    $db mysql_connect($db_host$db_user$db_password);
    if (
    $db == FALSE)
    die (
    "Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name$db)
    or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

    $query "SELECT * FROM partita WHERE IDpartita='".$_GET['IDpartita']."'";
    $result mysql_query($query$db);
    $row mysql_fetch_row($result);
    echo 
    "
    Numero di Giornata: [i] "
    .$row[2]." [/i]
    <form method='post' action='prova_risultati3.php?IDpartita="
    .$_GET['IDpartita']."&Squadra_casa=".$row[9]."&Squadra_ospite=".$row[10]."'>
    <table width='95%' class='p' border='1'>
    <tr align='center'>
        <th>Incontro</th>
        <th>Risultato</th>
        <th>Supplementari</th>
        <th>Data</th>
        <th>Ora</th>
        <th>Luogo</th>
        <th>A/R</th>
    </tr>
    <tr align='center'>
        <td> "
    .$row[9]." vs ".$row[10]."</td>
        <td><input type='text' size='3' name='risultato_casa' />-<input type='text' size='3' name='risultato_ospite' /></td>
        <td><select name='supplementari'><option value='si'>si</option><option value='no'>no</option></select></td>
        <td>"
    .$row[4]."</td>
        <td>"
    .$row[5]."</td>
        <td>"
    .$row[3]."</td>
        <td>"
    .$row[1]."</td>
    </tr>
    </table>
    "
    ;
    //Tab giocatori casa
    $query "SELECT * FROM partita WHERE IDpartita='".$_GET['IDpartita']."'";
    $result mysql_query($query$db);
    $row mysql_fetch_row($result);
    echo 
    "
    <table width='95%' class='p' border='1'>
    <tr align='center'>
    <th colspan='4'>"
    .$row[9]."</th>
    </tr>
    <tr align='center'>
    <th>ID</th>
        <th>Nome</th>
        <th>Cognome</th>
        <th>Punti</th>
        <th>Falli</th>
     </tr> "
    ;
    $query "SELECT IDgiocatore, Nome, Cognome, Nome_squadra, Squadra_casa FROM giocatore, partita WHERE Nome_squadra='".$_GET['Squadra_casa']."' GROUP BY Nome, Cognome";
    $result mysql_query($query$db);
    while (
    $row mysql_fetch_array($result))
    {
    echo 
    "
    <tr align='center'>
    <td>
    $row[IDgiocatore]</td>
        <td>
    $row[Nome]</td>
        <td>
    $row[Cognome]</td>
        <td><input type='text' size='5' name='Marcature' /></td>
        <td><input type='text' size='5' name='Falli' /></td>
        </tr>
    "
    ;

     }
    echo 
    "
    </table>
    "
    ;

    //Tab giocatori ospite
    $query "SELECT * FROM partita WHERE IDpartita='".$_GET['IDpartita']."'";
    $result mysql_query($query$db);
    $row mysql_fetch_row($result);
    echo 
    "
    <table width='95%' class='p' border='1'>
    <tr align='center'>
    <th colspan='4'>"
    .$row[10]."</th>
    </tr>
    <tr align='center'>
        <th>Nome</th>
        <th>Cognome</th>
        <th>Punti</th>
        <th>Falli</th>
     </tr> "
    ;
    $query "SELECT Nome, Cognome, Nome_squadra, Squadra_ospite FROM giocatore, partita WHERE Nome_squadra='".$_GET['Squadra_ospite']."' GROUP BY Nome, Cognome";

    // SELECT Nome, Cognome, Nome_squadra, Squadra_ospite FROM giocatore, partita WHERE Nome_squadra=Squadra_ospite GROUP BY Nome
    $result mysql_query($query$db);
    while (
    $row mysql_fetch_array($result))
    {
    echo 
    "
    <tr align='center'>
        <td>
    $row[Nome]</td>
        <td>
    $row[Cognome]</td>
        <td><input type='text' size='5' name='Marcature' /></td>
        <td><input type='text' size='5' name='Falli' /></td>
    </tr>"
    ;

     }
    echo 
    "
    </table>

    <input type='submit' value='Inserisci Risultati' />

    <input type='reset' value='Cancella' />
    </form>"
    ;
     

    mysql_close($db);
    ?>
    Pagina di salvataggio:
    Codice PHP:
    <?
    include("config.inc.php");
    include(
    "top_foot.inc.php");
    $risultato_casa=$_REQUEST['risultato_casa'];
    $risultato_ospite=$_REQUEST['risultato_ospite'];
    $Marcature=$_REQUEST['Marcature'];
    $Falli=$_REQUEST['Falli'];
    top();

     
    $db mysql_connect($db_host$db_user$db_password);
      if (
    $db == FALSE)
        die (
    "Errore nella connessione. Verificare i parametri nel file config.inc.php");
      
    mysql_select_db($db_name$db)
        or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
     
    //inserimento punti partita (funzionante)
    $query =  "UPDATE partita SET risultato_casa='$risultato_casa', risultato_ospite='$risultato_ospite' WHERE IDpartita='".$_GET['IDpartita']."'";
    if (
    mysql_query($query$db))
      echo 
    "Il risultato è stato inserito correttamente per punteggi partita 
    "
    ;
    else
     echo 
    "Errore durante l'inserimento per la partita";

    //inserimento falli e punti del giocatore (non funziona)
    $query "SELECT IDgiocatore FROM giocatore WHERE Nome_squadra='".$_GET['Squadra_casa']."'";
    $result mysql_query($query$db);
    while (
    $row mysql_fetch_array($result))
    {
    $row[IDgiocatore];
    $query "INSERT INTO performance (IDpartita, IDgiocatore) VALUES ('".$_GET['IDpartita']."','$row[IDgiocatore]')";
        if (
    mysql_query($query$db))
    echo 
    "Il risultato è stato inserito correttamente per giocatore numero $row[IDgiocatore] 
    "
    ;
     else
     echo 
    "Errore durante l'inserimento giocatori
    "




    $query "SELECT IDgiocatore FROM performance WHERE IDpartita='".$_GET['IDpartita']."'";
    $result mysql_query($query$db);
    while (
    $row mysql_fetch_array($result))
    {
    $row[IDgiocatore];
    $row[Marcature] =$_REQUEST['Marcature'];
    $row[Falli] =$_REQUEST['Falli'];
    $query "UPDATE performance SET Marcature='$Marcature', Falli='$Falli' WHERE IDgiocatore='$row[IDgiocatore]'";
    if (
    mysql_query($query$db))
      echo 
    "update per punteggi 
    "
    ;
    else
     echo 
    "Errore durante update giocatori";

     
      
    mysql_close($db);
    foot();
    ?>

  4. #4
    Ci devo un attimo studiare perché è un po' contorto...

  5. #5
    Grazie 1000 della disponibilità!! Mi rendo conto che sia contorto...perchè come codice non si presenta proprio in maniera corretta e pulita...cerco di far girare le cose utilizzando le mie conoscenze di base.

  6. #6
    Codice PHP:
    //inserimento falli e punti del giocatore (non funziona) 
    $query "SELECT IDgiocatore FROM giocatore WHERE Nome_squadra='".$_GET['Squadra_casa']."'"
    $result mysql_query($query$db); 
    while (
    $row mysql_fetch_array($result)) {
    $row[IDgiocatore]; 
    $query "INSERT INTO performance (IDpartita, IDgiocatore) VALUES ('".$_GET['IDpartita']."','$row[IDgiocatore]')";     
    if (
    mysql_query($query$db))
     echo 
    "Il risultato è stato inserito correttamente per giocatore numero $row[IDgiocatore] 
    "
    ; else echo "Errore durante l'inserimento giocatori
    "
    ;
     }   
    $query "SELECT IDgiocatore FROM performance WHERE IDpartita='".$_GET['IDpartita']."'"$result mysql_query($query$db); 
    while (
    $row mysql_fetch_array($result)) { 
    $row[IDgiocatore]; 
    $row[Marcature] =$_REQUEST['Marcature'];
    $row[Falli] =$_REQUEST['Falli']; 
    $query "UPDATE performance SET Marcature='$Marcature', Falli='$Falli' WHERE IDgiocatore='$row[IDgiocatore]'"
    if (
    mysql_query($query$db))   echo "update per punteggi 
    "
    ;
     else echo 
    "Errore durante update giocatori"; }   
     
    mysql_close($db);
     
    foot();
     
    ?> 
    Mi spieghi un attimo a parole cosa vorresti che facesse questo pezzo...

  7. #7
    In teoria volevo fare una semplice query di inserimento dati in una tabella chiamata "performance" i cui campi sono idgiocatore, idpartita, marcature e falli.
    Dato che non riuscivo a far in modo che la tabella prendesse quei campi per i giocatori...ho cercato di invetarmi qualcosa e il risultato è quello che vedi, ossia:
    - con la prima query gli facevo selezionare i giocatori della squadra di casa e mi facevo restituire l'id del giocatore (chiave della tabella giocatore), poi con la seconda query di inserimento messa in un ciclo while facevo in modo che riempisse la tabella performance solo con gli idpartita e idgiocatore, dove l'idpartita lo prendevo da una $_GET che gli facevo passare dalla pagina di inserimento. Così in automatico ottenevo i due campi chiave della tabella performance inseriti.
    - con la seconda query volevo aggiornare la tabella...ossia fargli riempire i campi mancanti che sono le marcature (i punti) e i falli di ogni giocatore. Sia i falli che le marcature sono dati che posso ottenere solo inserendoli in un modulo di form.
    Fondamentalmente il programma gira in modo strano...cioè mi riempe i campi degli id per quanti sono i giocatori e non mi inserisce i punti e i falli di nessun giocatore.
    Ottengo qualcosa di questo tipo:
    id partita | id giocatore | marcature | falli
    1 | 1 | 0 | 0
    1 | 2 | 0 | 0
    1 | 3 | 0 | 0
    1 | 4 | 0 | 0
    1 | 5 | 0 | 0
    Diciamo che questo è l'output che ottengo per la prima partita di campioanto (idpartita=1) in cui ci sono 5 giocatori (nel mio caso sono anche i primi inseriti nella tabella giocatori del database).

  8. #8
    Ci studio ancora un po'... scusa ma non ho molto tempo...

  9. #9
    se passi i parametri con una get
    poi utilizzi $_GET['.......'] in una parte di codice (che funziona)
    poi utilizzi $_REQUEST['.......'] in un altra parte che non funziona


    prova a usare sempre $_GET['.......'];

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.