Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 20 su 20

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Ho gli errori abilitati ma non mi da nulla.

    Non ho capito cosa intendi con l'errore array.

    Perdonami ma non sono praticissimo di PHP.

    Hai capito bene, l'ordinamento lo faccio così row1 è sempre il valore più votato e mi permette di usare la barra verde, row2, seconda scelta, barra rossa.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Riposto il mio codice con 3 risposte:

    Codice PHP:
    $query_risposta_01  "SELECT risposta_01, COUNT(*) AS numero FROM questionario WHERE risposta_01 != '' GROUP BY risposta_01 ORDER BY numero DESC";
    $result_risposta_01 mysql_query($query_risposta_01);

    $query_numero_votanti_risposta_01  "SELECT risposta_01, COUNT(*) FROM questionario WHERE risposta_01 != ''";
    $result_numero_votanti_risposta_01 mysql_query($query_numero_votanti_risposta_01); 
    Codice PHP:
    $row1 mysql_fetch_assoc($result_risposta_01);
    $row2 mysql_fetch_assoc($result_risposta_01);
    $row3 mysql_fetch_assoc($result_risposta_01);
    $numero_votanti_risposta_01 mysql_fetch_row($result_numero_votanti_risposta_01);

    if ( 
    $row1['risposta_01'] == 'Sì' ) {
        echo 
    $row1['risposta_01'] . '<br />' '<img src="../immagini/barra_verde.png" width="' round($row1['numero'] * 80 $numero_votanti_risposta_01[1], 0) . '%" height="16" /> ' $row1['numero'] . ' (' round($row1['numero'] * 100 $numero_votanti_risposta_01[1], 0) . '% di voti)<br /><br />';
    } else {
        echo 
    'Sì<br />' '0 (0 % di voti)' '<br /><br />';
    }

    if ( 
    $row2['risposta_01'] == 'No' ) {
        echo 
    $row2['risposta_01'] . '<br />' '<img src="../immagini/barra_rossa.png" width="' round($row2['numero'] * 80 $numero_votanti_risposta_01[1], 0) . '%" height="16" /> ' $row2['numero'] . ' (' round($row2['numero'] * 100 $numero_votanti_risposta_01[1], 0) . '% di voti)<br /><br />';
    } else {
        echo 
    'No<br />' '0 (0% di voti)' '<br /><br />';
    }

    if ( 
    $row3['risposta_01'] == 'Altro' ) {
        echo 
    $row3['risposta_01'] . '<br />' '<img src="../immagini/barra_rossa.png" width="' round($row3['numero'] * 80 $numero_votanti_risposta_01[1], 0) . '%" height="16" /> ' $row3['numero'] . ' (' round($row2['numero'] * 100 $numero_votanti_risposta_01[1], 0) . '% di voti)<br /><br />';
    } else {
        echo 
    'Altro<br />' '0 (0% di voti)' '<br /><br />';


  3. #3
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Tu dai per scontato che la prima riga siano i Si, la seconda i No e la terza gli Altro. Ma visto che l'ordinamento dipende dalle risposte date i tuoi if non funzionano.
    Andiamo per gradi, prova così:
    Codice PHP:
    $i 0;
    while(
    $row=mysql_fetch_assoc($result_risposta_01)){
         
    $barra = ($i==0)? 'verde' 'rossa';    

    echo 
    $row['risposta_01'] . '<br />' '<img src="../immagini/barra_'.$barra.'.png" width="' round($row['numero'] * 80 $numero_votanti_risposta_01[1], 0) . '%" height="16" /> ' $row['numero'] . ' (' round($row['numero'] * 100 $numero_votanti_risposta_01[1], 0) . '% di voti)<br /><br />';

        
    $i++;


  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    boots, grazie, ci siamo!

    2 anomalie però:

    Quando non ho voti voglio far comparire una cosa di questo genere:

    Metti caso che il No non ha voti:

    No
    0 (0% di voti)
    senza barra quindi, invece al momento non compare proprio nulla.

    Altra cosa, se 2 risposte hanno gli stessi voti, solo la prima risposta ha barra verde, la seconda, anche se stessi voti, ha barra rossa. Quando le barre hanno lo stesso punteggio, ma solo le prime 2, dovrebbero essere verdi entrambi.

  5. #5
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    L'array del post di prima serviva per le risposte non date:
    Codice PHP:
    $risposte = array('Si'=>true'No'=>true'Altro'=>true);
    $i 0;
    $prev 0;
    $barra 'verde';
    while(
    $row=mysql_fetch_assoc($result_risposta_01)){
         if(
    $i && $barra=='verde' && $prev!=$row['numero']){
             
    $barra 'rossa';
         }    

    echo 
    $row['risposta_01'] . '<br />' '<img src="../immagini/barra_'.$barra.'.png" width="' round($row['numero'] * 80 $numero_votanti_risposta_01[1], 0) . '%" height="16" /> ' $row['numero'] . ' (' round($row['numero'] * 100 $numero_votanti_risposta_01[1], 0) . '% di voti)<br /><br />';
        if(isset(
    $risposte[$row['risposta_01']]))
            unset(
    $risposte[$row['risposta_01']]);
        
    $i++;
        
    $prev $row['numero'];


    foreach(
    $risposte as $risp)
       echo 
    $risp.':<br/> 0% <br/><br/>'

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Benissimo!

    Noto una cosa: se non ho voti mi comprere "1:".

    Ultima cosa: in alcune domande con Altro ho un textbox libero dove l'utente può mettere parole o numeri, io non voglio conteggiare quante persone hanno scritto la parola "Pippo", quante "Pluto", ecc. ma conteggiare appunto tutte le risposte diverse da "Sì" e da "No".

    Così avrei:
    Sì = 10 voti
    No = 5 voti
    Altro = 3 voti (comprende 1 voto Pippo + 2 voti Pluto)

    nell'array alla voce Altro non si potrebbe mettere un qualche cosa simile a <?php echo $risposta_01 != 'Sì' && 'No' ? 'checked="checked"' : 'disabled="disabled"' ?>? In sostanza, come detto prima, è un modo per dire di tener conto di tutto ad eccezione dei Sì e dei No.

    Grazie di nuovo!
    Ultima modifica di harry80; 13-03-2014 a 13:24

  7. #7
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    In quel caso devi cambiare un po' tutto....
    Codice PHP:
    $risposte_standard = array('Si''No');
    $risposte = array('Si'=>0'No'=>0'Altro'=>0);
    $i 0;
    $prev 0;
    $barra 'verde';
    while(
    $row=mysql_fetch_assoc($result_risposta_01)){
        if(
    in_array($row['risposta_01'], $risposte_standard)){
              
    $risposte[$row['risposta_01']] = $row['numero'];
        }else{
              
    $risposte['Altro'] += $row['numero'];
        }
    }

    asort($risposte);

    foreach(
    $risposte as $risp => $numero)
         if(
    $i && $barra=='verde' && $prev!=$numero){
             
    $barra 'rossa';
         }    
         if(
    $numero == 0){
               echo 
    $risp.':<br/> 0% <br/><br/>';
    }else{ 
         echo 
    $risp '<br />' '<img src="../immagini/barra_'.$barra.'.png" width="' round($numero 80 $numero_votanti_risposta_01[1], 0) . '%" height="16" /> ' $numero ' (' round($numero 100 $numero_votanti_risposta_01[1], 0) . '% di voti)<br /><br />';
       }
        
    $i++;
        
    $prev $numero;

    Ps: sinceramente quel 1: non capisco da dove viene ....
    Ps2: ci potrebbero essere errori di battitura ...
    Ultima modifica di boots; 13-03-2014 a 14:01

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Mi andava in pagina bianca e ho tolto } alla fine, solo che mi mostra solo i Sì, però pare che il conteggio sia OK comunque, quindi non mostra solo i No e gli Altro che contengono appunto tutto quello che non è Sì o No.

  9. #9
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Sorry...mi son perso una graffa (rimetti quella che hai tolto) .

    foreach($risposte as $risp => $numero){

    e ci vuole un

    arsort($risposte) invece che asort

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    GRAZIE!

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