Newsgroup: it.comp.www.php
Titolo: sito multilingue





apro una pagina che è 
www.miosito.it/pagina1.php?lang=ita
 dove 
c'è una serie di parole in italiano o inglese in base alla lingua 
scelta


 


e il codice è questo


 


if($GET['lang'] && $GET['lang'] == 
"ita")
{      
mysql_select_db($database_server, 
$server);
$query_Recordset1 = "SELECT idparole, itanews FROM 
parole";
$Recordset1 = mysql_query($query_Recordset1, $server) or 
die(mysql_error());
$row_Recordset1 = 
mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = 
mysql_num_rows($Recordset1);
}
else
{
mysql_select_db($database_server, 
$server);
$query_Recordset1 = "SELECT idparole, engnews FROM 
parole";
$Recordset1 = mysql_query($query_Recordset1, $server) or 
die(mysql_error());
$row_Recordset1 = 
mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = 
mysql_num_rows($Recordset1);
}


 


perchè mi spunta sempre l'elenco di parole in 
inglese se seleziono l'italiano con lang=ita??


 



 
1 - non scrivere in html
2 - se una istruzione sta sia nell'if che nell'else tirala fuori:
3 - l'esistenza di una variabile si testa con isset
quindi:
$newsfield = isset($GET['lang']) && $GET['lang'] == 
"ita"?'itanews':'engnews';
mysql_select_db($database_server, $server);
$query_Recordset1 = "SELECT idparole,$newsfield FROM parole";
$Recordset1 = mysql_query($query_Recordset1, $server) or die(mysql_error
());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
4 - non fai vedere come stampi i risultati  della query

 if($GET['lang'] && $GET['lang'] == "ita")
$_GET, non $GET
Ciao.
-- 
*** Linux user # 198661 ---_ ICQ 33500725 ***
    ***  Home  
http://www.kailed.net
  ***
        ***  Powered by openSUSE  ***

 $_GET, non $GET
mein gott, manco me ne ero accorto
è venerdì....

 4 - non fai vedere come stampi i risultati  della query
il risultato lo stampo cosi
<a href="pagina2.php?lang=<?php echo $_GET['lang']; ?>"><?php echo 
$row_Recordset1['itanews']; ?> <?php echo $row_Recordset1['engnews']; 
?>2</a>
ma se come $row_Recordset1['itanews'] volessi far stampare la riga 3 della 
query e non la prima riga che trova come devo fare? 

 della query e non la prima riga che trova come devo fare?
iterare sui query result fino alla terza iterazione, qua degli esempi:
http://www.php.net/mysql_fetch_assoc

 quindi, riprendendo il mio codice dove viene definito $newsfield la riga
diventa :
<a href="pagina2.php?lang=<?php echo $_GET['lang']; ?>"><?php echo
$row_Recordset1[$newsfield]; ?> 2</a>
che � anche pi� compatto e leggibile.
ma non funziona! non stampa nulla!

 ma non funziona! non stampa nulla!
hai corretto il $GET con $_GET dappertutto?


mein get!

 ha scritto nel messaggio 
news:hoin4j$37n$5...@tdi.cu.mi.it...



sii 

 mein get!
ROTFL!!

 sii
ed hai controllato cosa c'è dentro $newsfield?
fai unpo' di stampe e debugga, poi nel caso posta il codice completo

 mein get!
$_APPLAUSI;

fai unpo' di stampe e debugga, poi nel caso posta il codice completo
dentro c'è il codice giusto! non capisco!!!
$newsfield = isset($_GET['lang']) && $_GET['lang'] ==
"ita"?'itanews':'engnews';
mysql_select_db($database_server, $server);
$query_Recordset1 = "SELECT idparole,$newsfield FROM parole";
$Recordset1 = mysql_query($query_Recordset1, $server) or die(mysql_error
());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
<body>
<p><a href="pagina1.php?lang=ita">italiano</a> <a 
href="pagina1.php?lang=eng">english</a>
</p>
<p><a href="pagina2.php?lang=<?php echo $_GET['lang']; ?>"><?php echo 
$row_Recordset1['$newsfield']; ?>2</a></p>
</body> 

fai unpo' di stampe e debugga, poi nel caso posta il codice completo
semplicemnte $row_Recordset1['$newsfield'];   non andava tra gli apici! 

 ha scritto nel messaggio 
news:hoi90d$37n$1...@tdi.cu.mi.it...


e se il get puo essere ita eng esp e deu e conseguentemente il campo 
corrispondente della query + itanews engnews franews e deunews come diventa 
il codice?? 

 ha scritto nel messaggio 
news:4bae21a1$0$1131$4faf...@reader3.news.tin.it...



nessuno si fa avanti? 

 nessuno si fa avanti?
ovviamente l'operatore ternario (che ti permette di selezionare tra due 
pssibili scelte) non va più bene.
quindi o usi una cascata di if else o usi switch, e se lang non è 
definita usi la lingua di default (diciamo l'italiano):
if(!isset($_GET['lang'])) {$newsfield = 'itanews';}
else {
switch ($_GET['lang']) {
    case 'ita':
        $newsfield = 'itanews';
        break;
    case 'eng':
        $newsfield = 'engnews';
        break;
    case 'fra':
        $newsfield = 'franews';
        break;
     ...
     ...
     ...
    default:
        $newsfield = 'itanews';
 
}
}

 nessuno si fa avanti?
ovviamente l'operatore ternario (che ti permette di selezionare tra due
pssibili scelte) non va pi� bene.
quindi o usi una cascata di if else o usi switch, e se lang non �
definita usi la lingua di default (diciamo l'italiano):
ok grz