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 10 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 10 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 10 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 10 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 10 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 10 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 10 anni fa
cybaSsh
X 0 X

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

usa include_once() e sei a posto.

risposto 10 anni fa
LonelyWolf
X 0 X

ok

Grazie

Andrea

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