Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    138

    Assegnazione Punti - come strutturare la cosa ?

    Ciao a tutti
    sto cercando di creare un sistema per gestire une lega di gare automobilistiche
    ora devo riuscire ad assegnare i punteggi della gara a seconda della posizione in classifica

    questa è la struttura della tabella `gare`

    CREATE TABLE `gare` (
    `race_id` tinyint(3) NOT NULL default '0',
    `pos_gara` tinyint(2) NOT NULL default '0',
    `nome_pilota` varchar(50) NOT NULL default '',
    `auto` varchar(50) NOT NULL default '',
    `giri_gara` tinyint(3) NOT NULL default '0',
    `tempo_gara` varchar(20) NOT NULL default '',
    `gap_gara` varchar(20) NOT NULL default '',
    `fastest_laptime` varchar(20) NOT NULL default '',
    `fastest_lapnr` tinyint(3) NOT NULL default '0',
    `pos_quali` tinyint(2) NOT NULL default '0',
    `tempo_quali` varchar(20) NOT NULL default '',
    `gap_quali` varchar(20) NOT NULL default ''
    ) TYPE=MyISAM;

    l'aggiornamento di detta tabella lo faccio uploadando i dati da un file CSV che passo al DB con questo codice

    Codice PHP:
    <?

    // QUESTE RIGHE RENDONO LO SCRIPT COMPATIBILE CON LE VERSIONI
    // DI PHP PRECEDENTI ALLA 4.1.0
    if(!isset($_FILES)) $_FILES $HTTP_POST_FILES;
    if(!isset(
    $_SERVER)) $_SERVER $HTTP_SERVER_VARS;

    /********************* VARIABILI DA SETTARE ********************/
    // Directory dove salvare i files Uploadati ( chmod 777, percorso assoluto)
    $upload_dir $_SERVER["DOCUMENT_ROOT"] . "/upload";

    // Eventuale nuovo nome da dare al file uploadato
    $new_name "";

    //$allowed_types = array("text/csv");

    // Se $new_name è vuota, il nome sarà lo stesso del file uploadato
    $file_name = ($new_name) ? $new_name $_FILES["upfile"]["name"];

    if(
    trim($_FILES["upfile"]["name"]) == "") {

    die(
    "Non hai indicato il file da uploadare !");

    }

    //if(@is_uploaded_file($_FILES["upfile"]["tmp_name"])) {

    //if(!in_array($_FILES["upfile"]["type"],$allowed_types)) {

    //die("Il file non è di un tipo consentito, sono ammessi solo i seguenti: " . implode(",", //$allowed_types) . ".");
    //echo "<a href=\"java script:history.go(-1);\">Torna Indietro</a>
    ";
    //exit;
    //}
    //}

    //e poi qui recuperi il file...elimini tutti i dati dalla tabella

    $_DATAFILE=file($_FILES['upfile']['tmp_name']); 
    include("
    config.inc.php" );
    $db = mysql_connect("$db_host", "$db_user", "$db_password" ) or die("Problem connecting" ); 
    mysql_select_db("
    $db_name",$db)or die("Problem selecting database" ); 


    while(list(
    $key,$_VALUES)=each($_DATAFILE)) { 
    $_PARAMS=split(";",$_VALUES); 
    //Qui aggiunge i vari parametri 
    while (list(
    $key,$value)=each($_PARAMS)) { 
    $value=str_replace("#","\#",$value); 
    $value=str_replace("--","\--",$value); 
    $value=str_replace("'","'",$value); 
    $value=str_replace(",",".",$value);
    $_PARAMS[$key]=$value


    $_querysql="INSERT INTO gare (pos_gara, nome_pilota, auto, giri_gara, tempo_gara, gap_gara, fastest_laptime, fastest_lapnr, pos_quali, tempo_quali, gap_quali) VALUES ('{$_PARAMS[0]}','{$_PARAMS[1]}','{$_PARAMS[2]}','{$_PARAMS[3]}','{$_PARAMS[4]}','{$_PARAMS[5]}','{$_PARAMS[6]}','{$_PARAMS[7]}','{$_PARAMS[8]}','{$_PARAMS[9]}','{$_PARAMS[10]}')"

    if(!
    mysql_query($_querysql,$db)) {
    echo 
    "Errore, modifica dei record non riuscita
    "
    ;
    exit;
    } else {
    echo 
    "<font color='DARKRED' class='risultatitabebig' face='verdana'>Gara Inserita Nel DB</a></font>
    "
    ;
    }


    echo 
    "<hr>"

    ?>
    ora, so che potrei aggiungere una colonna al foglio excel e gestire i punti da li ma vorrei capire se esiste la possibilità di associare in qualche modo alla variabile pos_gara (che indica la posizione in gara), il punteggio da assegnare (es. 20 punti al primo, 15 al secondo e cosi vià)
    il problema è soprattutto concettuale...
    diciamo che il campo diventerebbe il 12° e si chiamerebbe "punti",
    il valore però dovrebbe essere relativo al campo numero 1 (ovvero pos_gara) quindi sarebbe possibile inserire un ciclo IF all'interno della variabile tipo
    IF '$_PARAMS[1]' == 1 $punti = 20
    ELSE IF '$_PARAMS[1]' == 2 $punti = 15

    ovviamente starò sparando str...ate...

    avete delle idee alternative, anche appoggiandosi ad una eventuale altra tabella ?

    scusate il casino


    sono un po' arrugginito col php

  2. #2
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    ti fai una tabellina di punteggi in cui ci metti:

    posizione|punteggio
    1 | 20
    2 | 15
    .
    .
    6 | 1

    e senza uscire dalla richiesta sql, senza quindi php.. con una join semplicemente "gli aggiungi quel campo" alla richiesta..

    ci sarebbe un pò da riflettere sulla "giustezza" di tele scela.. visto che la join è un'operazione molto (la +) costosa in termini computazionali e quindi forse converre bbe aggiungere semplicemente il campetiello.. posto che tali valori siano fissi e nn soggetti a variazioni.. tipo "bell e buon" si decide che per far riprendere sciummi si assegnano 180 ppunti al primo classificato.. allora tale scelta sarebbe "'o drag".. perchè dovresti alterare una sola tabella per trovarti tutti i rec magicamente aggiornati...

    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    138
    luke innanzitutto grazie per la tua disponibilità...

    ma come faccio a fare una join in un inserimento dati ???
    il dato (punti) dovrei poi recuperarlo per fare una SUM

    forse non ho proprio capito quello che intendi fare

  4. #4
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    allora.. questa tabellina la useresti solo per "moltiplicare la posizione per il suo valore" nn va mai toccata (salvo variazione nelle regolamentazioni delle gare)

    quando vuoi il tabellino dei tizi con i totali fai una join che attacchi il campettino, quindi raccogli per l'id dei tizzi e sommi sul campo in esame così avrai invece che una somma delle posizioni insignificanti, la somma dei punti accumulati in ogni gara...

    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    138


    quindi dovrei crearmi un campo $punteggio che sia tabellapunti.punti moltiplicato tabellagara.posizione

    o non ho capito nulla un'altra volta ???

  6. #6
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    none.. fai na join su quella tabellina coi valori del podio usando la posizione come legame tra le due... e quindi sommi su tale colonna "aggiuntiva" che ti riporta il punteggio totale (che automaticamente sarà na cosa del tipo [(20*num_primi_posti)+(20*num_secondi_posti)....ect])

    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    138

    Codice PHP:
    $query "SELECT p.*, g.* FROM punti AS p JOIN gare AS g ON p.posizione = g.posizione; 
    e questa mi tira fuori i punti in base alla posizione....

    cosa me ne faccio ora ???

    necessito di esempio pratico

  8. #8
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    tbl punti
    -pos
    -punti

    Codice PHP:
    $sql="SELECT g.*,p.*,sum(p.punti) AS punteggio FROM gare g INNER JOIN punti p ON g.pos_gara=p.pos GROUP BY g.nome_pilota"
    1. mi sto riferendo alla tua tabella gare + la tabellina indicata sopra..

    2. recuperi così per ogni tizio il suo punteggio (nuovo campo somma dei punti, grazie a sum ed AS)

    3. fai attenzione quando richiami i campi che nn esistono!!!

    4. posta gli errori che ottieni...
    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    138
    premesso che devo ancora provare e che ti ringrazio molto per l'aiuto che mi stai dando...
    in questo modo ottengo il punteggio totale di un dato pilota
    esiste un modo per ottenere il punteggio di ogni singola gara in modo da ottenere una classifica tipo

    PILOTA GARA1 GARA2 GARA3 GARA4 TOTALE
    Schumi 0 10 5 4 19
    Ascari 32 4 12 0 48


  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    138
    uppino...

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.