Strano errore su funzioni di utilità di stampa di array

Ciao,

  il mio problema è che sto facendo la stampa in forma tabellare di array mono e multi dimensionali. faccio le mie 2 funzioni distinte, copiando perissequamente gli esempi trovati su it.php.net:

function TabellaDatiMono($rec){
   $nEle=count($rec);
   print_r($rec);
   if ($nEle > 0) {
      echo "<table border=\"1\">\n";
      echo "<tr>\n";
      foreach ($rec as $key => $val) {
         echo "<th>$key</th>\n";
      }
      echo "</tr>\n";
      echo "<tr>\n";
      foreach ($rec as $key => $val) {
           echo "<td>$val</td>\n";
      }
      echo "</tr>\n";
      echo "</table>\n";
   } else {
      echo "Nessun dato trovato<br />\n";
   }     
   echo "$nEle campi Inseriti<br />\n";
}

function TabellaDatiMulti($rec){
   $nEle=count($rec);
   if ($nEle > 0) {
      echo "<table border=\"1\">\n";
      echo "<tr>\n";
      foreach ($rec as $key => $val) {
        echo "<th>$key</th>\n";
      }
      echo "</tr>\n";
     
      for ($i = 0; $i < $nEle; $i++) {
        echo "<tr>\n";
        foreach ($rec as $data) {
            echo "<td>$data[$i]</td>\n";
        }
        echo "</tr>\n";
      }
      echo "</table>\n";
   } else {
      echo "No data found<br />\n";
   }     
   echo "$nrows Records Selected<br />\n";
   return true;
}
?>

richiamando da metodi degli oggetti, che poi faranno l'inserimento su DB, mi da il seguente errore:

Fatal error: Cannot redeclare tabelladatimono() (previously declared in C:\www\MetaMagister\Utility.php:2) in C:\www\MetaMagister\Utility.php on line 22

Queste funzioni le richiamo da metodi di Oggetti che ho creato. Quindi se ho l'oggetto karenina e ilic, dal metodo karenina->Spostamento richiamo la funzione comune TabellaDati.

Ultima cosa è che richiamo prima la seconda funzione poi la prima, anche se non è influente...

Andrea

inviato 9 anni fa
cybaSsh
X 0 X

L'errore indica una doppia dichiarazione di una stessa funzione, non è che includi + volte il file che contiene le funzioni?

risposto 9 anni fa
LonelyWolf
X 0 X

Ciao,

  allora quello che faccio  è(cerco di fare un digrammino di navigazione stilizzato e, spero comprensibile):

Nonno.html->padre.php->figlio.php

padre e figlio includono primo.php, secondo.php (dove sono implementate le classi da usare).

Primo e secondo includono la stessa pagina Utility.php dove vengono implementate le due funzioni richiamate dai metodi degli oggetti istanziati dalle classi di primo e secondo.

ok? sembra un po il "quesito della Susy" della settimana enigmistica ... lo so... chiedo scusa se son stato contorto...

Andrea

risposto 9 anni fa
cybaSsh
X 0 X

Appunto, se in primo.php hai già incluso le funzioni non è necessario che secondo.php le includa nuovamente, essendo tutte nella stessa pagina sono già disponibili.

Se il problema è che secondo.php può essere incluso senza che precedentemente sia incluso primo.php allora anziche include(utility.php) usa in entrambi  include_once(utility.php)  che ti permette di evitare di includere + volte lo stesso file.

risposto 9 anni fa
LonelyWolf
X 0 X

ops...  non sapevo... primo non include secondo, e nonostante ciò automaticamente c'è visibilità .... se è lecito,come mai?

Grazie

risposto 9 anni fa
cybaSsh
X 0 X

Allora non ho capito cosa hai scritto.

primo.php include utility

secondo.php  include utility

padre.php include  primo.php secondo.php

figlio.php include  primo.php secondo.php

Ora ho capito bene?

risposto 9 anni fa
LonelyWolf
X 0 X

L.W ha scritto:

Allora non ho capito cosa hai scritto.

primo.php include utility

secondo.php  include utility

padre.php include  primo.php secondo.php

figlio.php include  primo.php secondo.php

Ora ho capito bene?

Perfettamente...

risposto 9 anni fa
cybaSsh
X 0 X

quindi è come se facessi + volte la dichiarazione delle stesse funzioni.

usa include_once() e sei a posto.

risposto 9 anni fa
LonelyWolf
X 0 X

ok

Grazie

Andrea

risposto 9 anni fa
cybaSsh
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda