è colpa di mysql_fetch_array ?

gaberiele

Nuovo Utente
11 Giu 2009
13
0
0
Bari
ciao a tutti, verrò subito al dunque. Ho due richiami alla stessa tabella con la stessa query in parti differenti del sito. in locale vengono visualizzate entrambe bene, online se ne vede solo una e l'altra non da errore ma non compare nulla.


Questa è la parte che viene visualizzata sempre.

PHP:
$getlist = mysql_query("SELECT id_category, name_{$lang} FROM category ORDER BY name_{$lang} desc");

for ($i = mysql_num_rows($getlist) - 1; $i >= 0; $i--) {
if (!mysql_data_seek($getlist, $i)) {
echo "Cannot seek to row $i\n";
continue;
}
if(!($row = mysql_fetch_object($getlist)))
continue;
else {
$idcat= $row->id_category;


if ($lang=="it") {
echo "$row->name_it <br />\n";
} elseif ($lang=="en") {
echo "$row->name_en <br />\n";
} elseif ($lang=="se") {
echo "$row->name_se <br />\n";
} elseif ($lang=="ru") {
echo "$row->name_ru <br />\n";
}


Questa invece solo in locale (è all'interno di un <select> )


PHP:
$q = "SELECT id_category, name_{$_SESSION['lang']} FROM category ORDER BY name_{$_SESSION['lang']} desc";
    
    $r = mysql_query ( $q );
    while ( $w = ( mysql_fetch_array ( $r ) ) ) {
        if ($categoria==0){
            print "<option value='" . $w['id_category'] . "'" . ( $w['id_category'] == $_SESSION['categoria'] ? " selected" : "" ) . ">" . $w['name_'.$_SESSION['lang']] . "</option>";
        }else{
        print "<option value=''" . ( $w['id_category'] == $categoria ? " selected" : "" ) . ">" . $w['name_'.$_SESSION['lang']] . "</option>";
        
        }
    }

Dove sbaglio?
L'unica differenza che ho notato è che uno utilizza mysql_fetch_object e l'altro mysql_fetch_array, dipenderà da questo? E se si come posso migliorarlo?

Spero che qualcuno mi sia d'aiuto.

Ciao.:book:
 
La differenza che mi balza per prima all'occhio è che nella prima query usi una variabile $lang per formare il nome di un campo, mentre nella seconda usi $_SESSION['lang'].

Non sapendo il resto non posso sapere se è corretto, ma a prima vista sembra un'incongruenza...
 
grazie trogo, mi hai indirizzato nella giusta direzione, infatti dipendeva dalla variabile $lang che non passava nulla.

:beer:
 
In effetti mi sembra una cosa molto strana, anche perchè dal primo post avrei potuto pensare il contrario, dato che la query che usava $lang funzionava...

Questa è la parte che viene visualizzata sempre.

Codice PHP:
$getlist = mysql_query("SELECT id_category, name_{$lang} FROM category ORDER BY name_{$lang} desc");

Mi sarei aspettato che fosse $_SESSION['lang'] ad essere vuota!!!
 
ciao
un altro piccolo dubbio
se $_SESSION['lang'] == NULL
la query che la usa diventa

$q = "SELECT id_category, name_{$_SESSION['lang']} FROM category ORDER BY name_ desc";

per cui mysql_query e/o mysql_fetch_array avrebbe dato errore in quanto, credo, non esiste un campo di nome nome_ ma nome_XYZ

se non da errore probabilmente non è un errore di php/mysql
 
la stranezza è appunto quella, che in locale passano i valori ma online il valore non passava e non dava errore.
 
prova a confrontare le due versioni del php.ini, probabilmente in quello locale hai abilitata la possibilità di utilizzare globali non d'ambiente
 

Discussioni simili