Newsgroup: it.comp.www.php
Titolo: [AIUTO] PROBLEMONE CON SHOW TABLE STATUS

Saluto a tutti.
Ho un problemone con la sintassi di "SHOW TABLE STATUS".
In breve:
ho una serie di pagine che si aggiornano dinamicamente prendendo i
dati dalle tabelle di un db.
Per automatizzare la scrittura della data di aggiornamento, ho
inserito il seguente script:
<? 
$te=mysql_query("SHOW TABLE STATUS FROM my_db LIKE 'campioni'",$conn);
$mese_alt=array("","gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre");
while($row=mysql_fetch_row($te)){
$data_aggiornamento=$row['Update_time'];
$anno=substr($data_aggiornamento,0,4);
$mese=substr($data_aggiornamento,5,2);
$giorno=substr($data_aggiornamento,8,2);
settype($mese,int);
echo "<b>$giorno $mese_alt[$mese] $anno</b>";
}; 
?>
In locale (utilizzo EasyPHP 1.6) funziona tutto a meraviglia.
Ho provato ad aggiornare le pagine su web e non funziona più nulla.
L'unica differenza che ho trovato è che il mio provider utilizza un
MYSQL 3.23.33 mentre la mia versione di MYSQL è la 2.23.49.
Ho provato la sintassi di SHOW TABLE STATUS sul database web e
"funziona" presentando i dati di tutte le tabelle presenti. 
Non riesco a trovare il modo per visualizzare solo i dati della
tabella 'campioni'.
Potete aiutarmi? Al momento sono ad un punto morto. Anche i
programmatori del provider stanno arrancando da questo
pomeriggio...(pensate un po' a me che non sono un
programmatore....)!!!
Grazie in anticipo a tutti.
CB   
claudiob...@lycos.it
Per rispondere togli le "z" dalla firma.

 programmatore....)!!!
La sintassi da te utilizzata è corretta
SHOW TABLE STATUS [FROM db_name] [LIKE wild]
Ho provato una query simile sul mio MySQL 4.0.15 e correttamente mi vengono
visualizzate tutte le tabelle il cui nome soddisfa il criterio del like.
Infatti il problema non sta nel db... ma nello script. :)
Tu apri il recordset recuperandone un array NUMERICO (mysql_fetch_row) e poi
cerchi di accedere al campo di indice 'Update_time', cosa possibile solo con
un array ASSOCIATIVO (ottenuto con mysql_fetch_assoc) e quindi ottieni solo
un errore di indice non definito (Undefined index)
mysql_fetch_row: restituisce il recordset come array numerico (chiave
intera)
mysql_fetch_assoc: restituisce un array associativo (chiave stringa)
mysql_fetch_array: restituisce un array con chiavi sia intere che stringhe
(ovvero l'i-esimo campo "field" di valore n sarà presente due volte, sia
come [i]->n che ["field"]->n)
Confronta
http://it2.php.net/manual/it/language.types.array.php
http://it2.php.net/manual/it/function.mysql-fetch-row.php
http://it2.php.net/manual/it/function.mysql-fetch-assoc.php
http://it2.php.net/manual/it/function.mysql-fetch-array.php
Un suggerimento: per ottenere la data è più veloce ed elegante utilizzare
un'espressione regolare (così stampi solo se ottieni dei valori corretti)
$data_aggiornamento=$row["Update_time"];
if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})", $data_aggiornamento, $regs)) {
    $anno = $regs[1];
    $mese = $mese_alt[(int)$regs[2]];
    $giorno = $regs[3];
    echo "<b>$giorno $mese_alt[$mese] $anno</b><br>";
}
Un ulteriore suggerimento: abilita l'error reporting a E_ALL, così non ti
sfugge più un errore del genere (nel php.ini oppure con
error_reporting(E_ALL) in testa allo script)
Saluti
LB