Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
* php/mysql stampare i nomi dei campi
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet
Precedente :: Successivo  
Autore Messaggio
moonba
Eroe
Eroe


Registrato: 08/05/07 09:59
Messaggi: 46

MessaggioInviato: 26 Gen 2009 17:02    Oggetto: * php/mysql stampare i nomi dei campi Rispondi citando

ciao a tutti ho una select in cui visualizzo i record di una tabella,in che modo posso integrare il codice qui sotto affinchè visualizzi nella tabella come intestazioni i nomi dei campi della tabella del db?
Codice:

$query = 'SELECT * FROM soggetti ';   
  $risultato = mysql_query($query,$db);//eseguo la query
  $affectedrows = mysql_affected_rows($db);//verifico quanti record sono interessati alla query
  // QUESTA TABELLA VISUALIZZA LA TABELLA SOGGETTI 1 E PERMETTE L'INSERIMENTO E LA MODIFICA DEI RELATIVI CAMPI'
  print("<table border =\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"tabella\" >\n");
  while($row = mysql_fetch_array($risultato, MYSQL_ASSOC))
  { 
       
     print ("<tr>\n");
     foreach($row as $k =>$v)
     {
      //  print_r($row);
        print("<td>$v ");
        if($row['codicesoggetto'] == $v )
        {
           print "<br>";
           print "<a href=\"cancellajoin.php? codicesoggetto=$row[codicesoggetto]\"><img class='icone' src='iconaelimina.gif' alt='elimina'></a>";
           print "<br>";
           print "<a href=\"modificaform.php? modalita=$modalita&codicesoggetto=$row[codicesoggetto]&cognome=$row[cognome]&nome=$row[nome]&datanascita=$row[datanascita]&citta=$row[citta]\"><img class='icone' src='iconamodifica.gif' alt='modifica' ></a>";
        }
        print("</td>");
        }
      print("</tr>\n");
       
  }
  print("</table>");
Top
Profilo Invia messaggio privato
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 21:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 26 Gen 2009 17:53    Oggetto: Rispondi citando

Ciao,
potresti usare mysql_fetch_field($rs,$offset).
Riceve il recordset e l'offset del campo e ritorna un oggetto con dei meta sul campo, tra cui il nome.

Quindi tu potresti provare con:

Codice:

<?php
   $query = 'SELECT * FROM soggetti ';   
   $risultato = mysql_query($query,$db);//eseguo la query
   $num=mysql_num_rows($rs);  //NON mysql_affected_rows perchè serve per le insert, gli update e le delete!!!!!
   print("<table border =\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"tabella\" >\n");
   
// stampiamo l'header
      print '<tr>';
         for ($i=0;$i < mysql_num_fields($risultato);++$i)
         {
            $meta=mysql_fetch_field($risultato, $i);
            print '<th>' . $meta->name . '</th>';
         }
      print '</tr>;
// ora le righe
   ...   
   print("</table>");
?>

al posto delle righe metti il tuo codice che non mi è proprio chiaro cosa fa, o meglio, cosa vorresti che facesse.

I campi ritornati da una select * sono nell'ordine in cui sono stati creati nella tabella,quindi se vuoi un altro ordine dovrai necessariamente esplicitarli.

Se vuoi stampare una tabella in modo classico, ossia un header di x colonne e tante righe di x colonne modifica il precedente codice con:
Codice:

<?php
   $query = 'SELECT * FROM soggetti ';   
   $risultato = mysql_query($query,$db);//eseguo la query
   $num=mysql_num_rows($rs);  //NON mysql_affected_rows perchè serve per le insert, gli update e le delete!!!!!
   $fields=array();
   print("<table border =\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"tabella\" >\n");
   
// stampiamo l'header
      print '<tr>';
         for ($i=0;$i < mysql_num_fields($risultato);++$i)
         {
            $meta=mysql_fetch_field($risultato, $i);
            $fields[]=$meta->name;
            print '<th>' . $meta->name . '</th>';
         }
      print '</tr>;
// ora le righe
      while ($row=mysqli_fetch_array($rs))
      {
         print '<tr>';
            foreach ($fields as $f)
            {
               print '<td>';
                  print $row[$f];
            /*
               Se vuoi stampare i link di comando solo se sei nella colonna 'codicesoggetto' quello che hai scritto è pericoloso perchè se capita un valore di un campo identicolo a $row['codicesoggetto'] i link vengono proposti anche nella colonna sbagliata.
               (Se non è come dico allora non ho capito la tua if)
               La soluzione potrebbe essere:
            */
                  if ($f=='codicesoggetto')
                  {
                     print "<a href=\"cancellajoin.php? codicesoggetto=$row['codicesoggetto']\"><img class='icone' src='iconaelimina.gif' alt='elimina'></a>";
           print "<br>";
           print "<a href=\"modificaform.php? modalita=$modalita&codicesoggetto=$row['codicesoggetto']&cognome=$row['cognome']&nome=$row['nome']&datanascita=$row['datanascita']&citta=$row['citta']\"><img class='icone' src='iconamodifica.gif' alt='modifica' ></a>";
                  }
               print '</td>';
            }
         print '</tr>;   
      }
   
   print("</table>");
?>

In pratica nel vettore $fields inserisci i nomi dei campi nell'ordine in cui li hai trovati così tramite print $row[$f] stampi il valore giusto per ogni colonna.

Ciao
Top
Profilo Invia messaggio privato
mdweb
Dio maturo
Dio maturo


Registrato: 18/12/07 16:59
Messaggi: 4412

MessaggioInviato: 26 Gen 2009 18:28    Oggetto: Rispondi

freemind ha scritto:
Ciao,
potresti usare mysql_fetch_field($rs,$offset).
Riceve il recordset e l'offset del campo e ritorna un oggetto con dei meta sul campo, tra cui il nome.

quoto:maggiori informazioni qui
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi