Visualizzazione dei risultati da 1 a 10 su 10

Discussione: file

  1. #1

    file

    Ok ho realizzato il quiz!
    I risultati vengono salvati in un file di testo
    in questo modo
    $risultato=$nickname . $spazio . $punteggio . $spazio ;
    $risultati_file="risultati.txt" ;
    $fp=fopen($risultati_file,"a+") ;
    $fw=fwrite($fp,$risultato) ;
    fclose($fp) ;

    le mie domande sono 2:
    - come faccio a far visualizzare i risultati a capo e non uno accanto all'altro nel file di testo

    la seconda è c'è possibilità di far vedere automaticamente la classifica del quiz?

  2. #2
    Utente di HTML.it L'avatar di flessciato
    Registrato dal
    Jun 2002
    Messaggi
    1,522
    $risultato=$nickname . "
    " . $spazio . "
    " .$punteggio . "
    " . $spazio ;
    echo "$risultato";
    Slack 10 - Apple G5 2.5 - winzoz xp
    php/mysql/apache
    Flash MX / roba in 3D / roba per il video e l'audio

  3. #3
    io intendevo nel file di testo non nel file php del sito.

  4. #4

    Re: file

    [supersaibal]Originariamente inviato da Alexsuper1987
    Ok ho realizzato il quiz!
    I risultati vengono salvati in un file di testo
    in questo modo
    $risultato=$nickname . $spazio . $punteggio . $spazio ;
    $risultati_file="risultati.txt" ;
    $fp=fopen($risultati_file,"a+") ;
    $fw=fwrite($fp,$risultato) ;
    fclose($fp) ;

    le mie domande sono 2:
    - come faccio a far visualizzare i risultati a capo e non uno accanto all'altro nel file di testo

    la seconda è c'è possibilità di far vedere automaticamente la classifica del quiz? [/supersaibal]
    allora.. forse dovresti strutturare un filo meglio il file di database se vuoi ottimizzare il tutto..
    il mio consiglio è di usare un file .php nel quale registri della variabili e dei conseguenti valori con un paio di finzioncine e un array multidimensionale [parolone, ma non ti spaventare!!]

    ---struttura file---
    <?php
    $risultato[0][0]="$nome0";
    $risultato[0][1]="$punteggio0";
    ..etc..

    allra array multidimensionalre prchè?? perchè puoi mettere nello stesso campo più informazioni, ovvero in $risultato[$x] hai al primo posto il nick e alse condo il punteggio..

    ----funzione di scrivi file database---
    suppornsndo una var $risultato già strutturata come detto prima
    codice:
    function scrivi_db($ris)
    {
    $file=fopen($risultati_file,'w');
    fputs($file,"<?php\n");
    fputs($file,"echo \"You can't read this file.. SORRY!\";");//comunica che è un file riservato.. cmq nn verrebbe visualizzato nulla!
    for ($x=0;$x<sizeof($ris);$x++)
    {
     echo "\$risultato[$x][0]=\"$ris[$x][0]\";\n";
     echo "\$risultato[$x][1]=\"$ris[$x][1]\";\n";
    }
    fputs($file,"?>");
    fclose($file);
    }
    per avere i dati immagazzinati in un database fatto così ti basterà fare
    include "$risultati_file";
    e otterrai tutto scritto dentro alla variabile $risultato

    ---per ordinare la classifica.. altra funzioncina---
    una volta incluso il file..
    codice:
    function ordina()
    {
    global $risultato;
    foreach($risultato as $res)
         $sortAux[] = $res[1];
    
    array_multisort($sortAux, SORT_DESC, $risultato);
    }
    ti trovi nell'array ordinati dal posto 0 con valore di punteggio più alto alll'ultimo posto il valor edi punteggio più basso..
    .......................

    ultima cosa e poi credo di aver finito, quando hai un nuovo valore da inserire mettiamo $n_nick $n_punti

    $risultato[sizeof($risultato)+1][0]=$n_nick;
    $risultato[sizeof($risultato)+1][]=$n_punti;

    .,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,..,.,. ,.,.,
    spero essere stato chiaro..

    ciao ciao

    ..IcE..
    visit the BEST italian fotolog http://www.ghiacciato.it/fotolog

    "Solo due cose sono infinite, l'universo e la stupidità dell'essere umano.. ma sulla prima ho ancora delle riserve.." A.Einstein

  5. #5
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478

    Re: file

    [supersaibal]Originariamente inviato da Alexsuper1987
    Ok ho realizzato il quiz!
    [...]
    le mie domande sono 2:
    - come faccio a far visualizzare i risultati a capo e non uno accanto all'altro nel file di testo

    la seconda è c'è possibilità di far vedere automaticamente la classifica del quiz? [/supersaibal]
    In risposta alle tue 2 domande, molto brevemente, per andare a capo devi usare \n su win oppure \r\n se sei su sistemi unix.

    Per mostrare la classifica del quiz, potresti usare la funzione rsort()

    Fermo restando che quanto detto da ice rappresenta una possibile soluzione, provo a farti un esempio un po' più semplice di come potresti realizzare il tutto. Quando scrivi i dati nel file di testo, userai un separatore per dividere i valori e il fine riga \n per memorizzare i dati una riga per volta.
    codice:
    //il file che conterrà i dati
    $file = "risultati.txt";
    
    //memorizzo i dati in $file separandoli con |
    //scrivendoli su righe separate
    $fp = fopen($file, "a");
    fwrite($fp, "$punteggio|$nickname\r\n");
    fclose($fp);
    Ora, quando estrai i dati ricreando la "classifica", userai la funzione rsort() per ordinare i risultati in maniera decrescente in base al "numero più alto".
    codice:
    //leggo i risultati da $file e li ordino in base al numero più alto
    $records = file($file);
    rsort($records, SORT_NUMERIC);
    for($i = 0; $i < count($records); ++$i) {
      list($punteggio, $nickname) = explode("|", trim($records[$i]));
      echo "Nickname: $nickname - Punti: $punteggio
    ";
    }
    Come puoi vedere sono solo poche righe di codice. Se volessi visualizzare la "classifica" in ordine crescente potresti usare direttamente la funzione sort() al posto di rsort(). Ovvio che può essere ottimizzato ma, solo per cominciare, potrebbe andar bene...

  6. #6
    col codice che mi hai scritto visualizza tutti i risultati del file di testo appena qualcuno finisce il quiz ma non li ha ordinati in ordine di punteggio

  7. #7
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Se hai adattato il codice che ti ho suggerito, quali modifche hai fatto? Se non hai fatto modifiche, in che ordine visualizza i risultati?

  8. #8
    Ti scrivo il codice per essere + chiaro

    <?php
    $punteggio=$_GET["punteggio"];
    $nickname=$_GET["nickname"];
    $spazio=" " ;
    if ($dom27=="Galli") $punteggio=$punteggio+1 ;
    if ($dom27!="Galli") $punteggio=$punteggio ;
    echo "$nickname hai conseguito un punteggio di $punteggio" ;
    $risultato=$nickname . $spazio . $punteggio ;
    $risultati_file="risultati.txt" ;
    $fp=fopen($risultati_file,"a+") ;
    $fw=fwrite($fp,"$risultato\r\n") ;
    fclose($fp) ;
    $records = file($risultati_file);
    rsort($records, SORT_NUMERIC);
    for($i = 0; $i < count($records); ++$i) {
    list($punteggio, $nickname) = explode("|", trim($records[$i]));
    echo "$nickname . $punteggio
    ";
    }
    ?>

    Questo è il codice che ho nella pagina e praticamente vedo i risultati in ordine casuale

  9. #9
    Il problema sta che nel file sputano ogni volta due risultati al posto di uno, un altro problema è che non vengono ordinati



  10. #10
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Riguardo al problema dell'ordinamento, non avviene semplicemente perché nel file di testo i dati li memorizzi diversamente da come dovrebbero essere. Con l'esempio che ti ho indicato, nel file di testo, avresti dovuto ottenere una cosa tipo:
    codice:
    100|pippo
    150|pluto
    30|paperino
    dove i numeri si riferiscono alla variabile $punteggio, e i nomi (preceduti dal separatore "|") sono relativi alla variabile $nickname.

    Nel codice che hai postato i dati non li memorizzi così come ti ho indicato. Usi la variabile $spazio, ma se decidi di adattare il codice che ti ho indicato, non ti servirà per scrivere i valori nel file risultati.txt.

    Comunque, anche se non mi è chiaro cosa intendi per "spuntano due riasultati al posto di uno", ho ritoccato un po' il tuo codice.

    Provalo e vedi se va bene (se farai delle modifiche non stravolgere il modo in cui memorizzi i dati nel file di testo...)
    codice:
    $risultati_file = "risultati.txt";
    
    $punteggio = $_GET["punteggio"];
    $nickname = $_GET["nickname"];
    
    if($dom27=="Galli") $punteggio = $punteggio+1;
    if($dom27!="Galli") $punteggio = $punteggio;
    
    echo "$nickname hai conseguito un punteggio di $punteggio
    
    ";
    
    $fp = fopen($risultati_file,"a+");
    fwrite($fp, "$punteggio|$nickname\r\n");
    fclose($fp);
    
    $records = file($risultati_file);
    rsort($records, SORT_NUMERIC);
    for($i = 0; $i < count($records); ++$i) {
      list($punteggio, $nickname) = explode("|", trim($records[$i]));
      echo "$nickname - $punteggio
    ";
    }

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.