Da funzione php a funzione js

andrex1191

Utente Attivo
5 Apr 2011
78
0
0
Salve,
devo usare l'evento onchange di una select, in pratica quando l'utente sceglie un'opzione verrà eseguita una funzione che prenderà in input il value della option scelta e darà in output una stringa..
il codice della on change è questo:
HTML:
 <select name="date" onchange="this.form.txtrisultato.value=nomeFunzione(this.value);" >
e fin quì ci sono..il problema è che la mia funzione è in php e non in javascript
Quindi ora vi chiedo..
1)è possibile convertire la mia funzione php in js in modo da poterla richiamare nell'onchange come ho fatto?? la funzione è questa:
PHP:
function nomeFunzione($idses)
   {
       
       $query = "SELECT orario_inizio, orario_fine FROM sessione WHERE id = '{$idses}'";
       $es = mysql_query($query) or die("errore nell'invio della query in funzione".mysql_error());
       $arr = mysql_fetch_assoc($es);

       $inizio = $arr['orario_inizio'];
       $fine = $arr['orario_fine'];

       $ris = "Dalle ".$inizio." alle ".$fine;
       return $ris;

   }

2)oppure è possibile richiamare all'interno dell'evento onchange una funzione php ?(credo sia una cosa molto stupida ma lo chiedo comunque)

Grazie per le risposte
e scusate se ho chiesto una cosa fuori dal mondo..
 
Non sono un esperto ma io ho sempre usato questa tecnica:

Invio la form con l'evento onchange,

HTML:
<select name="date" onchange="this.form.submit();">


Poi se il post è settato richiamo la funzione,

PHP:
if(isset($_POST['date']) {

$esegui = nomeFunzione($_POST['date']);

}

L'unico difetto è che la pagina si deve ricaricare ma secondo me, che ho ancora tanto da imparare, è molto piu semplice che usare javascript
 
Grazie per la risposta..
ma non ho capito molto bene..
il mio form deve puntare alla stessa pagina?
come passo alla mia funzione il value della option scelta?
 
Si il form deve richiamare la stessa pagina:

HTML:
<form method='post'>

o

HTML:
<form method='post' action='stessapagina.php'>

Il value della option viene memorizzato nel POST['date'] in questo caso

HTML:
<select name='date'....

richiamando la funzione come ho scritto sopra nella variabile $esegui verrà memorizzato il risultato della funzione e potrai usare la variabile per mandare in output il risultato

PHP:
if(isset($_POST['date']) {

$esegui = nomeFunzione($_POST['date']);//$_POST['date'] è il value della option scelta

}  

echo "Siamo aperti " . $esegui; //$esegui è il return della tua funzione

Se attualmente il tuo form richiama un altra pagina per elaborare i dati bisogna trovare un altra soluzione o adattare entrambe le pagine
 
Ho capito ora il tuo metodo ma non è quello che cerco, mi serve una cosa dinamica anche perchè nella pagina successiva devo rielaborare tutti i dati inseriti..quindi mi risulta scomodo. Grazie mille comunque..
spero in un aiuto divino..è una settimana che ci sono dietro e non ci salto fuori
 
Ho appena trovato una nuova soluzione che non richiede il js e fa tutto dinamicamente..
pensandoci forse è un metodo "poco ortodosso" però funziona !!
in pratica consiste nel fare Tutto nella creazione delle option passando come value per ogni option l'intera stringa "dalle__alle__" in questo modo:
HTML:
  <select name="date" onchange="this.form.mostraorario.value =this.value" >
PHP:
<?php
while ($arraysessione = mysql_fetch_assoc($eseguises))
{
                                 
$inizio = $arraysessione['orario_inizio'];
$fine = $arraysessione['orario_fine'];
$ris = "Dalle".$inizio."alle".$fine;
$data = $arraysessione["Data"];

 echo '<option value='.$ris.' >'.$data.'</option>';

 }
  ?>

in questo modo nella text "mostraorario" uscirà l'orario corrispondente alla data scelta l'unico grosso problema è che il value di una option non accetta spazi..quindi il DalleAlle mi esce tutto attaccato :|
(le sto provando tutte)
 
tutto bene quel che finisce bene, alla fine ce l'ho fatta e senza usare ajax..
in questo modo:

HTML:
<select name="date" onchange="this.form.orario.value = formattaorario(this.value);>
nella select all'evento onchange richiamo una funzione js che riceve in input la value della option scelta

PHP:
<?php
 while ($arraysessione = mysql_fetch_assoc($eseguises))
{
$inizio = $arraysessione['orario_inizio'];
$fine = $arraysessione['orario_fine'];
$data = $arraysessione["Data"];
$value = $inizio."-".$fine."-".$data;

echo '<option value='.$value.' >'.$data.'</option>';

}
?>
Per ogni option la value sarà uguale ad una stringa contenente gli orari senza spazi (perchè è un value) ma divisi da trattini
così facendo con una semplice funzione js riformatto(grazie ai trattini) il value ricevuto in input e restituisco la stringa che mi serve con gli spazi:
Codice:
function formattaorario(stringa)
                   {
                       var arr = stringa.split('-');
                       var orario = "dalle" + arr['0'] + "alle" + arr['1'];
                       return orario;
                   }

Sono convinto che stilisticamente parlando faccia schifo..ma l'importante per me è che funzioni, soprattutto senza l'uso di ajax

Saluti :D e grazie
 

Discussioni simili