Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    listing dati da database a tabella html con php

    Dovrei listare e mettere in classifica in 4 tabelle html, i docenti a seconda del numero di lezioni settimanali fatte.
    1) Uomini Settimana
    2) Donne Settimana
    3)Uomini Totale (Dall'inizio dell'anno)
    4)Donne Totale (Dall'inizio dell'anno)
    Come posso metterli in ordine crescente dall'insegnante con + lezioni a quello con - Lezioni avendo da un form queste variabili $anno=$_POST['year']; $sett=$_POST['week']; ?

    Vi posto il Dump delle tabelle.


    codice:
     -- Struttura della tabella `lezioni`
    --
    
    CREATE TABLE IF NOT EXISTS `lezioni` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `week` int(2) NOT NULL,
      `anno` varchar(4) COLLATE utf8mb4_unicode_ci NOT NULL,
      `lez` int(3) NOT NULL,
      `id_ins` int(10) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=19 ;
    
    --
    -- Dump dei dati per la tabella `lezioni`
    --
    
    -- --------------------------------------------------------
    
    --
    -- Struttura della tabella `maestri`
    --
    
    CREATE TABLE IF NOT EXISTS `maestri` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `citta` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
      `nome` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
      `cognome` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
      `sesso` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'uomo',
      PRIMARY KEY (`id`),
      UNIQUE KEY `id` (`id`),
      KEY `id_scuola` (`citta`),
      KEY `sesso` (`sesso`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=100 ;
    
    --
    -- Dump dei dati per la tabella `maestri`
    Primo


    Secondo


    Dove si legge "io" andranno i dati
    Grazie in anticipo per l'aiuto.

  2. #2
    innanzi tutto alcune piccole raccomandazioni: 1) non usare come charset utf8mb4_unicode_ci che può creare ambiguità ma usa il più semplice utf8_unicode_ci; 2) le tabelle non sono molto ben strutturate, c'è perdita di spazio, io ti consiglio di farle così:

    codice:
     -- Struttura della tabella `lezioni`
    --
    
    CREATE TABLE IF NOT EXISTS `lezioni` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `week` TINYINT(2) UNSIGNED NOT NULL,
      `anno` SMALLINT(4) UNSIGNED NOT NULL,
      `lez`SMALLINT(3) UNSIGNED NOT NULL,
      `id_ins` int(10) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=19 ;
    
    --
    -- Dump dei dati per la tabella `lezioni`
    --
    
    -- --------------------------------------------------------
    
    --
    -- Struttura della tabella `maestri`
    --
    
    CREATE TABLE IF NOT EXISTS `maestri` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `citta` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL,
      `nome` varchar(15) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
      `cognome` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
      `sesso` TINYINT(1) UNSIGNED NOT NULL VALUE=1,
      PRIMARY KEY (`id`),
      UNIQUE KEY `id` (`id`),
      KEY `id_scuola` (`citta`),
      KEY `sesso` (`sesso`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=100 ;
    per quanto riguarda la tua richiesta, per sapere ad esempio quanti insegnanti maschi ci sono per anno e settimana basta quanto segue (se id_ins è un codice insegnante):

    Codice PHP:
    //preleva dalla tabella maestri i singoli record uno per uno
    echo '<table><tr>'<td colspan="3">[img]scuola.jpg[/img]</td></tr>';
    echo '
    <tr><td>[b]Nome[/b]</td>[b]Scuola[/b]</td>[b]N° Lez.[/b]</td></tr>';
    foreach ($rows as $row) {
      $query = "SELECT SUM(lezioni.lez) AS totLez tot FROM lezioni WHERE id_ins = " . $row['
    id'] . " AND sesso = 1";
      //estrae dalla tabella lezioni il numero lezioni in un anno e l'
    anno  di ogni insegnante nella riga $row1
      
    echo '<tr><td>' trim($row['cognome'] . ' ' $row['nome'] . '</td><td>Scuola Giuseppe Garibaldi</td><td>' $row1['totLez'] . '</td></tr>';
    //ecc ecc



  3. #3
    Ciao.
    Per il database sono d'accordo infatti lo devo ottimizzare al più presto.

    Volevo sapere solo se per prelevare i record dalla tabella maestri potevo fare anche:

    Codice PHP:
    $sql="select * from maestri";
                     
    $dati=mysql_query($sql);
                     
    $rows=mysql_fetch_array($dati
    Perchè è una tabella dinamica, nel senso che possono essere tolti o aggiunti dei record nel corso del tempo.

  4. #4
    certo che puoi scrivere anche così, ma rpelevi solo tutti quanti i maestri senza distinzione di sesso...per dover poi fare i controlli e la somma delle ore di lezione ognuno! come vedi invece io faccio fare un ciclo foreach su ogni record per tirar fuori solo i maesttri maschi e il loro numero ore di lezione in una unica query MySQL!

  5. #5
    Scusa ho spiegato male io.

    Io intendevo una cosa del genere

    Codice PHP:
    <?php
            
            
    include "config.php";
            
    connettiDb();
            
            
    $sql="select * from maestri where sesso='uomo'";
                     
    $dati=mysql_query($sql);
                     
    $rows=mysql_fetch_array($dati)
            
                    foreach (
    $rows as $row) { 
      
    $query "SELECT SUM(lezioni.lez) AS totLez tot FROM lezioni WHERE id_ins = " $row['id'] . " AND sesso = 1"
     
            echo 
    '  <td style="vertical-align: top;">' trim($row['nome'] . ' ' $row['cognome']) . '

                      </td>
                      <td style="vertical-align: top;">' 
    trim($row['scuola'] ) . '

                      </td>
                      <td style="vertical-align: top;">DA INSERIRE
    '
    ;
                      }
    ?>
    Questo era quello che avevo pensato di fare per scrivere un array che prenda automaticamente i vari record dal database. però mi rilascia questo errore:

    codice:
    Parse error: syntax error, unexpected T_FOREACH

  6. #6
    in fondo alla riga $rows=mysql_fetch_array($dati) ti sei dimenticato il punto e virgola!!! $rows=mysql_fetch_array($dati);

  7. #7
    Arg vero però da ancora errore di sintassi su questa variabile

    Codice PHP:
     $sql="select * from maestri where sesso='uomo'"


    Questo è il codice completo:
    Codice PHP:
    <?php
            
            
    include "config.php";
            
    connettiDb();
            
            
    $sql="select * from maestri where sesso='uomo'";
                     
    $dati=mysql_query($sql);
                     
    $rows=mysql_fetch_array($dati);
            
                    foreach (
    $rows as $row) { 
      
    $query "SELECT SUM(lezioni.lez) AS totLez tot FROM lezioni WHERE id_ins = " $row['id'] . " AND sesso = 1"
     
            echo 
    '  <td style="vertical-align: top;">' trim($row['nome'] . ' ' $row['cognome']) . '

                      </td>
                      <td style="vertical-align: top;">' 
    trim($row['scuola'] ) . '

                      </td>
                      <td style="vertical-align: top;">DA INSERIRE
    '
    ;
                      }
    ?>

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.