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

Discussione: Query somma Risposte

  1. #11
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Sei sicuro che per qualche ID ci arrivi a 2?
    Non è che hai 5 ID diversi ognuno con un solo "RISP_valore = 0.5"? Perché è così che sembra.

  2. #12
    costruisci la tua query in modo tale che il lavoro sporco lo faccia il db; cicla il tuo array PER COSTRUIRE la query, che deve essere tipo questa:

    codice:
    SELECT SUM(RISP_valore) AS totale FROM risposte WHERE RISP_id IN (1,2,4,7,12,23)
    In pratica, nella IN metti tutte le risp_id da cercare; poi una interrogazione sola e hai subito il totale complessivo

  3. #13
    Utente di HTML.it
    Registrato dal
    Jun 2021
    residenza
    Padova
    Messaggi
    9
    Prima di tutto grazie per la risposta, ho fatto come hai suggerito




    codice:
    $_D_query="SELECT * FROM domande";
    $_D_totale= $db->query($_D_query);
    while($_D_rigo = mysqli_fetch_array($_D_totale, MYSQLI_ASSOC))
    {
    $_D_id_dom = $_D_rigo ["DOM_id"];
    //==================================================================================
    	$_conta_risposta = isset($_POST["ris_".$_D_id_dom]) ? $_POST["ris_".$_D_id_dom] : array();
    //==================================================================================
    	foreach($_conta_risposta as $_conta_risposte)
    	{
    //==================================================================================
    $_conta_R="SELECT sum(RISP_valore) as totale FROM risposte where RISP_id IN ($_conta_risposte)";
    
    
    echo $_conta_R."<br>";
    
    
    $_R_conta_totale = $db->query($_conta_R);
    while($_R_conta_rigo = mysqli_fetch_array($_R_conta_totale, MYSQLI_ASSOC))
    {
    $_R_valore = $_R_conta_rigo["totale"];
    echo ($_R_valore)."<br>";
    }
    //==================================================================================
    	}
    echo $_conta_R mi visualizza:


    SELECT sum(RISP_valore) as totale FROM risposte where RISP_id IN (4)
    SELECT sum(RISP_valore) as totale FROM risposte where RISP_id IN (6)
    SELECT sum(RISP_valore) as totale FROM risposte where RISP_id IN (15)


    Ma i valori non li somma e echo $_R_valore mi dà:


    RISP_valore 0.5
    RISP_valore 0.5
    RISP_valore 0


    Grazie di tutto

  4. #14
    non ho detto quello. il flusso è
    codice:
    while
       costruisci "IN"
    wend
    query SUM()...IN
    leggi totale
    la query va fuori dal ciclo dell'array, che serve SOLO a costruire la IN

  5. #15
    Utente di HTML.it
    Registrato dal
    Jun 2021
    residenza
    Padova
    Messaggi
    9
    Perdonami e grazie, non riesco a capire, sono un neofita di MySQL e PHP da un paio di mesi che mi avvicino, dato che sono in pensione dopo 43 anni di lavoro.
    Mi dai qualche aiuto per cortesia, te ne sono grato
    Buona giornata

  6. #16
    più di così dovrei scriverti io il codice, ma non conosco PHP così bene (e, sinceramente, se te lo scrivessi io, impareresti di meno )
    magari qualche altro forumista che ne sa più di me riesce a darti una mano
    intanto rileggi con calma i miei suggerimenti

  7. #17

  8. #18
    Utente di HTML.it
    Registrato dal
    Jun 2021
    residenza
    Padova
    Messaggi
    9
    Ti ringrazio, ma non trovo qualcosa di utile

  9. #19
    Creare una stringa da un Array con la funzione implode()

    in fondo alla pagina

    da quello che capisco così non serve il ciclo while

  10. #20
    Utente di HTML.it
    Registrato dal
    Jun 2021
    residenza
    Padova
    Messaggi
    9
    Prima di tutto voglio ringraziare optime, credo di aver risolto, sperando che sia valido:

    codice:
    $_D_query="SELECT * FROM domande";
    $_D_totale= $db->query($_D_query);
    while($_D_rigo = mysqli_fetch_array($_D_totale, MYSQLI_ASSOC))
    {
    $_D_id_dom = $_D_rigo ["DOM_id"];
    //==================================================================================
    	$_conta_risposta = isset($_POST["ris_".$_D_id_dom]) ? $_POST["ris_".$_D_id_dom] : array();
    //==================================================================================
    	foreach($_conta_risposta as $_conta_risposte)
    	{
    //==================================================================================
    $_conta_R="SELECT sum(RISP_valore) as totale FROM risposte where RISP_id IN ($_conta_risposte)";
    //echo $_conta_R."<br>";
    $_R_conta_totale = $db->query($_conta_R);
    while($_R_conta_rigo = mysqli_fetch_array($_R_conta_totale, MYSQLI_ASSOC))
    {
    $valore[]=$_R_conta_rigo["totale"];
    }
    //==================================================================================
    	}
    //==================================================================================
    }
    $_somma = $valore;
    
    
    echo "Totale Somma:".array_sum($_somma)."</p>";
    Le risposte hanno valore:
    RISP_valore 0.5
    RISP_valore 0.5
    RISP_valore 0.5
    RISP_valore 0


    e array_sum($_somma) mi dà Totale Somma:1.5

    Buona giornata

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