Salve a tutti, questo è il mio primo messaggio sul forum
Mi sono affacciato da poco tempo al mondo del javascript e sono già inciampato.
Nell'interfaccia ho una select e qualche casella di testo. In base al valore della select, le caselle di testo assumono determinati valori, che sono presi presi da un database.
Codice PHP:
<script language="javascript">
function Visualizza()
{
<?php
$pro = "document.modulo.artisti.value"; //metto in $pro il valore assunto dalla select 'artisti'
$connessione = mysql_connect("127.0.0.1","root","") or die ("Errore: impossibile connettersi.").mysql_error();
$seleziona = mysql_select_db ("tribute_to_rock");
//LA QUERY PRENDE L'ELENCO DI TUTTI GLI ARTISTI
$query = "SELECT * FROM artisti WHERE codice = \"$pro\"";
$res = mysql_query ($query) or die ("Si è verificato un errore nel sistema");
$row = mysql_fetch_array($res);
echo "document.modulo.cognome.value = ".$pro.";"; //Per controllare il valore di $pro, faccio visualizzare il suo valore nella casella di testo 'cognome'
$jsonarray = json_encode($row['soprannome']); //Metto il valore di cui ho bisogno nella casella di testo 'nome'. Questo però non viene visualizzato
echo "document.modulo.nome.value = ".$jsonarray.";";
mysql_close($connessione);
?>
}
</script>
Nel codice PHP assegno il valore della select alla variabile $pro, che inserisco nella query. Ho verificato che la variabile assume il giusto valore anche dopo aver interagito con il database, ma dal database non preleva alcun dato.
Inoltre sono sicuro che la query è giusta, dal momento che se sostituisco
Codice PHP:
$pro = "document.modulo.artisti.value";
con
funziona tutto alla perfezione. Non capisco quale sia il problema, dal momento che la variabile $pro assume in ogni caso gli stessi valori.
Però, cosa curiosa, non funziona se invece assegno a $pro qualcosa diverso da un numero, ad esempio $pro = "asd";
Insomma mi sembra un problema di interazione tra il PHP e il javascript. Non ho abbastanza esperienza per capire fino a quanto possono comunicare l'uno con l'altro, dal momento che uno lavora su lato server e l'altro su lato client.
PS: non ho capito bene come funziona json_encode, so solo che se lo metto funziona (se assegno a $pro="01").