PDA

View Full Version : passaggio variabili php con javascript


ReWeNgE
19-05-2005, 12:25
<?
$var=file('2004.txt');
$riga=0;
for($i=0;$i<count($var);$i=$i+3) {
...
$riga++;
?>
<form>
<TR class="t2">
<TD width=8%>
<select name="codice" size="1" multiple class="form"
onContextMenu="modifica(this,<? echo '.$riga.' ?>);">
<option value=""><? echo $var[$i][0]; ?></option>
</select>
</TD>

poi in modifica(sender,prova) ho messo
alert(prova);

ma non mi prende il valore!!
non mi fa vedere nessun valore :(

come la devo passare la variabile?

Another
19-05-2005, 12:55
hai provato a debuggare?

se stampi i valori dell'array senza la select cosa vedi a video?

perchè la select non comprende un ciclo for php? :confused:

ReWeNgE
19-05-2005, 22:37
mm spiegami cosa devo fare...

ho provato ad esempio a mettere $riga al posto di $var[$i..] e mi visualizza il valore senza problemi... il problema è solo nel passaggio della variabile $riga.. il resto funziona tutto bene

come devo debuggare?

non riesco a capire come devo scrivere $riga quando richiamo la funzione javascript :muro:

Another
21-05-2005, 13:32
<select name="codice" size="1" multiple class="form"
onContextMenu="modifica(this,<? echo '.$riga.' ?>);">
<option value=""><? echo $var[$i][0]; ?></option>
</select>


dov'è che hai messo $riga x prova? nella option?

inizia a visualizzare il codice html della pagina generata e verificare se è giusto.. :rolleyes:

ReWeNgE
23-05-2005, 13:01
Si praticamente se faccio:

<?
$var=file('2004.txt');
$riga=0;
for($i=0;$i<count($var);$i=$i+3) {
...
$riga++;
?>
<form>
<TR class="t2">
<TD width=8%>
<select name="codice" size="1" multiple class="form"
onContextMenu="modifica(this);">
<option value=""><? echo $riga; ?></option>
</select>
</TD>

mi viene visualizzato il valore di $riga... se invece aggiungo alla chiamata modifica()

modifica(this,<? echo '.$riga.' ?>)

la funzione in jscript poi non mi prende il valore di $riga
è qst il problema che non riesco a risolvere... probabilmente passo male la variabile ma non riesco
:muro:

Another
23-05-2005, 14:16
non dovresti scrivere

modifica(this,'<?=$riga?>') ?

ReWeNgE
23-05-2005, 18:21
ho provato... ma continua a darmi valore non definito

ReWeNgE
23-05-2005, 20:06
ho provato uno script ke ho trovat sul web:

<?
echo "<script>";
echo "alert(\"$riga\");";
echo "</script>";
?>

e quindi il mio codice è diventato:

<?
$var=file('2004.txt');
$riga=0;
for($i=0;$i<count($var);$i=$i+3) {
...
$riga++;
?>
<form>
<TR class="t2">
<TD width=8%>
<select name="acquisto" class="form" onContextMenu="modifica(this);">
<?
echo "<script>";
echo "alert(\"$riga\");";
echo "</script>";
?>

e funziona!! mi fa vedere la finestra con il valore di $riga..
ma io riga vorrei passarlo in modifica(this,$riga).. ho provato e riprovato prendendo spunto da quel codice ma niente da fare :help:

Another
24-05-2005, 07:58
si ma non puoi scrivere modifica(this,$riga).. perchè $riga nn è una var. javascript....

ti sto dicendo di visualizzare il codice html risultante per rendertene conto, fallo e stampalo qui.. devi mettere almeno un apice caspita, $riga che tipo di dati contiene?

ReWeNgE
24-05-2005, 13:01
si hai ragione.. era solo per far capire
ma aimè ho trovato l'errore..

modifica è una funzione che a seconda di una scelta fatta dall'utente, richiama un'altra funzione, ed era lì che mi ero dimenticato di passare il valore..

ora non riesco a fare un controllo sulla variabile this, che passo con modifica:

<select name="acquisto" class="form" onContextMenu="modifica(this,'<?=$i/3?>');">

praticamente this la passo a modifica(sender,riga)

e sender lo uso ad esempio in:

sender.options[sender.options.length-1].text

per avere il valore di una option.. ma vorrei mettere un controllo sullavariabile sender, cioè ke se contiene una determinata parola, fa una cosa, altrimenti un'altra...

ma quando vado a visualizzare sender, alert(sender); per vedere quale valore gli viene attribuito, mi da [object], così non capisco cosa contenga..

Another
24-05-2005, 22:12
ovvio, sender è nel tuo caso l'oggetto select, devi individuare i valori tramite selectedindex, è meglio che ti chiarisci le idee sulle specifiche javascript degli oggetti form, fai prima.. :)

ReWeNgE
25-05-2005, 07:10
mmm bè ho provato così..

sender.options[sender.selectedIndex].text

e mi da il valore della option selezionata, ma io ho bisogno di avere il nome della select :mc:

ho trovato in rete anche

sender.options[sender.selectedIndex].label

ma mi da valore nullo.. :doh:

Another
25-05-2005, 07:25
cosa intendi per "io ho bisogno di avere il nome della select " ?

ReWeNgE
25-05-2005, 11:51
nel senso, io con onContextMenu="modifica(this)" passo il riferimento alla select su cui clicco con il dx, mi servirebbe il nome della select, perchè ho:

<TD width=40%>
<select name="prova1" onContextMenu="modifica(this)">
<option value="">.......</option>
</select>
</TD>
<TD width=40%>
<select name="prova2" onContextMenu="modifica(this)">
<option value="">.......</option>
</select>
</TD>

quindi in avrei bisogno di ricavare da "this" il nome prova1 o prova2

Another
25-05-2005, 18:58
nn e' chiaro cosa fai in modifica, nn riesci a farlo usando this? cmq dovrebbe esserci una proprietà di this che ti da il nome, forse this.name ? nn sono sicuro..