Problemone con allineamento in tabella

  • Creatore Discussione Creatore Discussione marcopa
  • Data di inizio Data di inizio

marcopa

Nuovo Utente
13 Set 2011
11
0
0
sassari
Ciao a tutti, sono da giorni alle prese con un problema che non riesco a risolvere, provo a spiegare nella speranza che a qualcuno abbia un aiuto da darmi...

Devo allineare in una tabella composta in questo modo :
HTML:
<table class="table1">
                <thead>
                    <tr>
                        <th></th>
                        <th scope="col" abbr="Musica">Musica</th>
                        <th scope="col" abbr="Letteratura">Letteratura</th>
                        <th scope="col" abbr="Arte">Arte</th>
                        <th scope="col" abbr="Cucina">Cucina</th>
                    </tr>
                </thead>
                
                <tbody>
                    <tr>
                        <th scope="row">Italiano</th>
                     </tr>
                    <tr>
                        <th scope="row">Inglese</th>
                     </tr>
                    <tr>
                        <th scope="row">Francese</th>
                    </tr>
                     <tr>
                </tbody>
            </table>
I dati li ho scritti per far capire cosa avranno le tabelle ma non posso sapere l'ordine
vengono letti da database e creano le colonne.
Devo riuscire ad "infilare" i dati letti da mysql nella corrispondente cella
Se il libro tratta arte ed è Italiano... come diavolo posso sapere dove lo devo mettere?

Avete qualche dritta da darmi?
Grazie!
 
Ciao
La tabella come è fatta piu o meno?
hai un campo che identifica la lingua?
 
Scusami, in visual basic, esisteva un comando che ti permetteva esattamente di posizionare un dato in una data cella
Colpos(), Rowpos(), una corrispondenza esiste?
 
ed il campo lingua dove trovi Italiano,inglese,francese
si questi

ma che linguaggio stai usando adesso?

ps: se PHP piu tardi provo a buttarti giu qualcsoa
 
Ultima modifica:
si questi

ma che linguaggio stai usando adesso?

ps: se PHP piu tardi provo a buttarti giu qualcsoa

Scusa, sto usando PHP.
te ne sarei molto grato, riesco ad ottenere delle tabelle ma disordinate, sotto la colonna arte mi ritrovo totalizzato
anche musica o altro, proprio non riesco a mettere in ordine il codice.
 
Aspetta, se vuoi aiutarmi evita di riscrivere tutto, io ho già scritto questo.
HTML:
<div id="content">        
             
<h2><center> Totali libri per categoria </center></h2>
            
            <table width="1022" class="table1">
                 <thead>
                    <tr>
                        <th></th>
                        <?php creacolonne();?>
                    </tr>
                </thead>                  
            
                <!---------------------------------------- Cerco Regioni --------------------------------->
                <tbody>
                    <tr>
                       <?php Lingue();?>
                  <tr>
                </tbody>
            </table> 
        </div> 		
</div> 
</body>
</html>
PHP:
<?PHP
function creacolonne()
{
	include "funzioni_mysql.php";

$datagestori = new MysqlClass();
$datagestori->connetti();

$categorie='';
 
$select="SELECT DISTINCT(tipo_categ) as categoria FROM libri order by lingua,tipo_categ"; 
 
$query = $datagestori->query($select);


	 while ($row = mysql_fetch_array($query))
	 {
 			$cat =$row['tipo_categ'];
			
             echo '<th scope="col" ><div id="' .$cat. '">' .$cat .'</div></th>';

	 }
 

$datagestori ->disconnetti();

return;


}
//--------------------------------------------------------------------------------------------------
function lingue()
{
$datagestori = new MysqlClass();
$datagestori->connetti();
$lingua ='';
 
$commento_sql = $datagestori->query("SELECT * FROM libri order by lingua asc ");

if(mysql_num_rows($commento_sql) > 0) 
  {  
  		while($commento_obj = $datagestori->estrai($commento_sql)) { 

 			      $lingua =  $commento_obj->lingua;
 			
 				  echo '<th scope="row" id="'.$lingua.'" >'.$lingua.'</th>';
				  
				  categoria($lingua);
                  
 
		}
  }

 
$datagestori ->Disconnetti();

return;
}

// --------------------------------------------------------------------------------------------------------------------

function categoria($lingua)
{

$datagestori = new MysqlClass();
$datagestori->connetti();
 
$select="SELECT tipo_categ, COUNT(*) as totali  FROM libri where lingua =$lingua GROUP BY tipo_categ"; 

$query = $datagestori->query($select);


	 while ($row = mysql_fetch_array($query))
	 {
 		 
 		 echo '<td><div id="' .$row['tipo_categ'].'">'.$row['totali']. '</div></td>' ;

	 }
 

echo ' </tr>';
echo ' <tr>';

$datagestori ->disconnetti();

return;
}

?>
 
Ultima modifica di un moderatore:
Rieccomi, sto cercando di darti più informazioni possibili, libri.jpg
ho allegato un print_screen della tabella per far capire dove sta l'errore
come puoi vedere nella tabella è indicato 1 Libro di bricolage in Inglese ma nel database non esiste.
In Inglese ho solo libri di Arte e Letteratura, in arte ho 1 libro ma in letteratura non ho nulla.
 
se ho capito...
hai una tabella piu o meno cosi

letteratura - inglese
cucina - italiano
cucina - inglese
musica - inglese
letteratura - italiano
letteratura - italiano
cucina - italiano
i valori possono ripetersi
e dovresti fare un count() ragruppando per tipo e lingua

credo che te la puoi cavare con una sola funzione e una sola query
pensavo di creare un array su misura e di ciclarlo per creare la tabella

ma probabilmente sono troppo fuso per ragionare decentemente
ti posto l'inizio della mia idea magari puo darti qualche spunto
ho usato la libreria mysql per connettermi
PHP:
<?php
$conn = mysql_connect("localhost", "root", "");
$db = mysql_select_db("database");
// in questo array metterai le categorie che hai sul db
$array_categorie = array("musica", "cucina", "letteratura");
// costruiamo la query
$query = "SELECT count(*) as conta,tipo_categ,lingua FROM libri GROUP BY tipo_categ, lingua";
// eseguiamola
$res = mysql_query($query);
// costruiamo l'array 
$array = array();
while ($rows = mysql_fetch_assoc($res)) {
    if (in_array($rows['tipo_categ'], $array_categorie)) {
        $array[$rows['tipo_categ']][$rows['lingua']] = $rows['conta'];
    }
}
// vediamo cosa ne è uscito
var_dump($array);
sicuramente domani mattina a mente fresca ragiono meglio
 
Ciao, scusa ma ieri notte sono rientrato troppo tardi, pizzata con ex compagni di scuola!!!
Ora provo, ma ho visto che hai messo in array le categorie....mmm, credo si possa fare
anche se non conosco tutte quelle inserite, diciamo che le potrei codificare e unificarle.
Ho visto nel db originale che alcuni testi sono Lettere, Letteratura, Lettera
ma questo è un problema risolvibile...
Ora provo la tua soluzione. Poi ti dico
Grazie.
 
anche se non conosco tutte quelle inserite

al massimo puoi fare una query sul db per costruirti dinamicamente l'array delle categorie
 
$query = "SELECT count(*) as conta,tipo_categ,lingua FROM libri GROUP BY lingua, tipo_categ ";

In realta, andrebbe selezionata al contrario, l'esempio che mi hai postato mi seleziona :

Arte : 1 italiano, 1 Inglese.
Sarebbe il contrario
Italiano 1 arte 1 Cucina 1 Bricolage
Inglese 1 arte 0 cucina 0 Bricolage
 
prova ad invertire il group by e l'ordine dei campi

Codice:
SELECT lingua,count(*) as conta,tipo_categ FROM libri GROUP BY tipo_categ, lingua

EDIT e anche il cliclo mi sa
 
Grazie Ragazzi, ho risolto in questo modo, anche se non molto pulito, ma funge.
Considerando che le categorie sono in tutto 9, può andare bene....
Peccato, con vb lo avevo fatto in 10 minuti, ma per il web è macchinoso!!

PHP:
$select="SELECT tipo_campo, COUNT(*) as totali  FROM campi where id_reg =$id_reg GROUP BY tipo_campo"; 
$query = $datagestori->query($select);


	 while ($row = mysql_fetch_array($query))
	 {
 		 $cat =$row['tipo_campo'];

             if ($cat=='Arte')
               {

                 echo '<td>>'.$row['totali']. '</td>' ;
 		 echo '<td></td>' ;
 		 echo '<td></td>' ;
 		 echo '<td></td>' ;
              }
             if ($cat=='Bricolage')
               {
 		 echo '<td></td>' ;
                 echo '<td>>'.$row['totali']. '</td>' ;
 		 echo '<td></td>' ;
 		 echo '<td></td>' ;
              }
             if ($cat=='Cucina')
               {

 		 echo '<td></td>' ;
 		 echo '<td></td>' ;
                 echo '<td>>'.$row['totali']. '</td>' ;
 		 echo '<td></td>' ;
              }

	 }
 

Discussioni simili