media per riga

Stato
Chiusa ad ulteriori risposte.

carlo.c

Nuovo Utente
7 Dic 2020
4
0
1
Salve a tutti;
vi scrivo perchè ho un problema ad implementare 2 query;
ho cercato nel forum mysql ma non ho trovato nulla che poteva darmi uno spunto.
Vi chiedo perdono fin da subito se scriverò delle bestialità sono un neofita e mi sono avvicinato al mondo dei db da appena un mesetto
causa fermo forzato coronavirus.

Dunque, sto facendo un db per mia moglie insegnante elementare la quale ha bisogno di una tabella dove inserire i voti delle
interrogazioni;
quindi ho creato una tabella(storia) composta da id_alunni e nomi_alunni,ad essi aggiungo di volta in volta la colonna denominata
col nome della prova es.i_fenici_20_10_2020 ($sql = "ALTER TABLE storia ADD $NEW_COLUMN CHAR(4) NULL";),
e nella quale inserisco i voti relativi all'interrogazione e così via.
il problema nasce nel momento in cui devo fare la media per alunno, infatti i voti per alunno non vengono messi in colonna,
bensì in riga:

id| nome_alunno | i_fenici_20_10_2020 |i_romani_21_10_2020 | MEDIA |
1 | pippo | 8 |6 |7 |
2 | topolino | 2 | |1 |

come vedete se topolino ha saltato l'interrogazione(o compito scritto) la media viene sballata.
Quindi la mia necessità sarebbe che nel caso di topolino il valore di media rimanesse 2.

ho provato con la funzione COUNT(nome colonna), essa infatti non conta il valore nullo quindi:
$sql = "SELECT (COUNT(a)+COUNT(b)) FROM storia as MEDIA WHERE id = $id";
con tale query individuo i valori null escludendoli dall'operazione che effettua la media.

quindi ho pensato (ecco la possibile bestialità):

nella pagina in cui dovrà apparire la tabella con le medie inserisco una 1^ query dalla quale estraggo la somma dei valori not null ottenendo così
una variabile ($divisore) da inserire nella 2^ query in cui è presente l'operazione vera e propria per ottenere la media di ogni alunno in base alle effettive prove sostenute.

$sql = "SELECT ALUNNI,$NomiProve,(($ProveScolastiche)/$divisore) as MEDIA FROM storia WHERE id = $id ORDER BY ALUNNI ASC";

praticamente avrei bisogno una funzione AVG che funzioni per riga e non per colonna.

problema numero 1) non so a priori come si chiameranno le prove e quante saranno le COUNT da vagliare {(COUNT(a)+COUNT(b)},
quindi avrei bisogno di trovare un modo tipo la funzione IMPLODE DI PHP.

problema numero 2) come ottenere l'eventuale variabile da mettere a denominatore per la media.
problema numero 3) tutto filava liscio fino a che mia moglie non mi ha chiesto come voleva le medie!!!!

p.s.motore myISAM

spero di essere stato esaustivo nella spiegazione del problema fornendo tutti i dati per la risoluzione dello stesso.
allego copia della pagina in questione:

<?php
//CONNESSIONE AL DB
$dbhost = 'localhost:3306';
$dbuser = 'root';
$dbpass = '';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(!$conn) {
die('Connessione impossibile. Errore: ' . mysqli_error($conn));
}
mysqli_select_db($conn,'scuolastoria');


//RICEVO LE VARIABILI RELATIVE AI NOMI DELLE PROVE SCOLASTICHE CREATE (ES I_FENICI_22_04_2020), IL NUMERO DI PROVE SCOLASTICHE ESEGUITE FIN'ORA($divisore), L'id DI OGNI ALUNNO.
$nome_materie = $_POST['nome_materie'];
$divisore = $_POST['divisore'];
$id = $_POST['id'];

//VERIFICO CHE SI TRATTI DI ARRAY
if( is_array($nome_materie))
{
$NumeroProve = count($nome_materie);
$NomiProve = implode(',', $nome_materie);
$ProveScolastiche = implode('+',$nome_materie);
}

//CREO LA QUERY
$sql = "SELECT ALUNNI,$NomiProve,(($ProveScolastiche)/$divisore) as MEDIA FROM storia WHERE id = $id ORDER BY ALUNNI ASC";
echo $sql."<br>";

echo "La media voti è stata fatta dividendo le prove per <b style='color:red'>$divisore</b><br> ";

$result= mysqli_query($conn,$sql);
$numFields = mysqli_num_fields($result);

//VISUALIZZO LA TABELLA CON TUTTE LE PROVE ESEGUITE,
//I VOTI MESSI (E NON) E LA MEDIA FATTA DIVIDENDO LA SOMMA DEI VOTI(E NON) DI OGNI ALUNNO / IL NUMERO DI PROVE FATTE.
//AD ES. L'alunno con id 1 ha avuto il voto su: ifenici(7), iromani(5), gli_egizi(null), ibabilonesi(6),
//MEDIA = (7+5+NULL+6)/4
echo "<table id='customers'>\n<tr>";
for ($i=0; $i < $numFields; $i++)
{
echo '<th>'.$fieldName = mysqli_fetch_field_direct($result, $i)->name.'</th>';
}
echo "</tr>\n";

while($row = mysqli_fetch_row($result))
{
echo '<tr><td>'.implode($row,'</td><td>')."</td></tr>\n";
}
echo "</table>\n";


mysqli_free_result($result);
mysqli_close($conn);
?>
</fieldset>
</div>
<input type="button" value="Stampa Tabella" id="btnPrint" />
</body>
</html>
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
Ciao, mi rendo conto che magari non vuoi cambiare perche ormai il database lo hai fatto, però la tabella così è strutturata male, cioè il fatto di dover aggiungere una colonna ad ogni verifica, oltre ad essere una "perdita di tempo", è anche molto difficile da gestire con SQL come vedi...
Se ti è possibile cambiare, io sceglierei una struttura di questo tipo, che con solo 2 tabelle racchiude tutte le materie ed è semplice da gestire con SQL:

Tabella1: 'verifiche', campi:
-id_verifica, materia, titolo

Tabella2: 'valutazioni', campi:
-id_verifica, alunno, voto

Dovrebbe funzionare così: nella tabella verifiche inserisci le varie verifiche e a ciascuna assegni la materia (storia), titolo (verifica fenici 08-12-20) e un id univoco, in modo che poi nella tabella delle valutazioni puoi inserire il voto di un determinati alunni nella verifica con quel determinato id. In questo modo tutto il discorso degli inserimenti e delle medie sarebbe molto più semplice e, se ti è possibile farlo, te lo consiglio vivamente perché ora come ora sembra davvero difficile da gestire
 
  • Like
Reactions: carlo.c
Stato
Chiusa ad ulteriori risposte.
Discussioni simili
Autore Titolo Forum Risposte Data
P (Cerco) Collaboratori per gestione social media Offerte e Richieste di Lavoro e/o Collaborazione 5
asevenx @media screen per stili responsive non riconosciuti HTML e CSS 3
J Canvas e media queries per responsive design HTML e CSS 3
J Quanto chiede in media un webmaster per un sito web statico?? Guadagnare col Sito 1
I Media di compenso all'ora per un graifico? Discussioni Varie 12
N Tempi/costi per la realizzazione di un sito di media complessità Altri Annunci 0
peppoweb Microsoft: aggiornamento per Media Player e nuova versione del tool anti-MyDoom Sicurezza e Virus 0
peppoweb Aggiornamento della protezione per Windows Media Player Sicurezza e Virus 0
A media degli elementi estratti da una query MySQL 0
T contatore totale click e media in secondi PHP 7
C [VENDO] Social Media Manager - SEO - ADS Offerte e Richieste di Lavoro e/o Collaborazione 0
C [Offro][Retribuito] Social Media Manager al miglior prezzo! Offerte e Richieste di Lavoro e/o Collaborazione 0
S [PHP] Estrarre dati da tabella e fare la media ad intervalli di tempo PHP 11
Tommy03 [PHP] Media valori presi da una query PHP 3
M [RISOLTO]Windows media player non mi funziona più su win 10 pro 64 bit Windows e Software 2
B Inquadramento Social Media Manager Leggi, Normative e Fisco 2
Instagramsocialmedia 151K Vendo pagina Instagram e servizi Media social Marketing Annunci servizi di Social Media Marketing 1
Instagramsocialmedia Social media Marketing mi presento Presentati al Forum 0
bubino8 [HTML] @media screen Errore px HTML e CSS 4
T [RETRIBUITO] Risolvere problemi di geometria livello 2a media Offerte e Richieste di Lavoro e/o Collaborazione 4
xone Partita iva come consulente SEO e social media Leggi, Normative e Fisco 1
skiri Cerco Esperto in webmaster marketing SEO & Social Media Offerte e Richieste di Lavoro e/o Collaborazione 4
booklisa Compressione immagini e gestione media CMS (Content Management System) 1
Alessandro Ad Adbooth Media Group, piattaforma di pubblicità Vendere e Acquistare pubblicita' online 0
asevenx Problema compatibilità browser con @media screen HTML e CSS 2
C Social Media Marketing: Facebook VS Instant messaging App Social Media Marketing 1
M problema con media query CSS HTML e CSS 1
N Aiuto con html nascondere i media HTML e CSS 4
J Media queries HTML e CSS 1
F inserire un video windows media player HTML e CSS 2
P Problema con media queries HTML e CSS 2
F break point media queries HTML e CSS 2
A css media query HTML e CSS 1
A Scartare righe in una media MySQL 2
M media di alcune variabili PHP 4
F media query HTML e CSS 1
L Media queries e jquery mobile jQuery 0
L Centri Media in Italia: mappa dei clienti (aggiornata) SEO e Posizionamento 9
K Nascondere i css3 ai vecchi broswer usando @media HTML e CSS 0
F Ciao da Fandango Media Group! Presentati al Forum 2
B collegare telecamera a media player Javascript 0
S How to build ASP.NET Media Player Control in C# .Net code .NET Framework 0
S How to build ASP.NET Media Player Control in C# .Net code ASP.NET 0
J Web based JavaScript Media Player Javascript 0
catellostefano JW FLV media player Javascript 0
P WordPress: problemi con "Aggiungi Media" WordPress 2
M problema media player zindex HTML e CSS 1
K Problemi con Windows Media Player 11 Windows e Software 0
M tratteggio embedded windows media player HTML e CSS 1
S windows media player 11 nn funzionante!! Windows e Software 1

Discussioni simili