PDA

View Full Version : [PHP] con JavaScript...?


ianaz
13-08-2006, 14:34
Salve,
non é la prima volta che riscontro questo problema...in un IF di Javascript devo inserire php... Ho provato così:


<?php
echo "
<script language=JavaScript>
if(confirm('Vuoi inserire il tuo nome nel database?'))
{
";
$db->query("INSERT INTO...");

echo "
}
</script>";
?>

non funziona ovviamente... come posso fare?

loris_p
13-08-2006, 15:11
e continuerai a trovarlo fintanto che mescolerai JS e php ;)
php viene interpretato dal server, mentre JS dal client..in pratica al tuo browser arriva qualcosa del tipo:
<script language=JavaScript>
if(confirm('Vuoi inserire il tuo nome nel database?'))
{

}
</script>";
perché l'interprete php ha già provveduto ad eseguire gli echo e ad assegnare la variabile $query..ma di questo JS non ne sa nulla :)

puoi piuttosto provare una cosa del genere:

<script language=JavaScript>
if(confirm('Vuoi inserire il tuo nome nel database?'))
window.location(<path_dello_script_che_esegue_la_query>);
</script>";

la pagina php sarà qualcosa del tipo:
<apertura connessione>
<creazione query>
<sottomissione query>
<chiusura connessione>
header("Location:<pagina dove ritornare>")

se non conosci bene la funzione header di php documentati al sito ufficiale di php perché è potentissima e non permette solo semplici redirect come questo ;)

ianaz
13-08-2006, 15:13
Ok, grazie mille... provo subito ;)

ianaz
13-08-2006, 15:19
Non capisco comqunue cos'abbia di così potente la funzione header...

andbin
13-08-2006, 15:25
Non capisco comqunue cos'abbia di così potente la funzione header...Ti permette di aggiungere degli header HTTP nel response fornito dal web server!!

Una possibilità, molto usata, è far fare, a livello di HTTP, un redirect al browser con:
header("Location: http://.....");

oppure far fare autenticazioni HTTP, ad esempio.

loris_p
13-08-2006, 15:25
invia headers http :)
poi se a te non serve è un'altra questione ;)

Xalexalex
13-08-2006, 19:20
Scusate se mi intrometto... Qualcuno ha una guida, o una sorta di lista degli headers che possono essere trasmessi?
Io conosco quelli per il redirect, per l'auth HTTP, per i download dei vari tipi di files, però suppongo ce ne siano molti altri.
Grazie,
ciaozz

loris_p
13-08-2006, 19:26
buon divertimento (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html) ;)

andbin
13-08-2006, 19:44
Qualcuno ha una guida, o una sorta di lista degli headers che possono essere trasmessi?
Io conosco quelli per il redirect, per l'auth HTTP, per i download dei vari tipi di files, però suppongo ce ne siano molti altri.Ecco dei link: [1] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html) [2] (http://www.cs.tut.fi/~jkorpela/http.html)

loris_p
13-08-2006, 19:46
il primo dei due è lo stesso che gli ho dato io :)
w3 rulez :ave:

andbin
13-08-2006, 19:55
il primo dei due è lo stesso che gli ho dato io :)
w3 rulez :ave:Ops .... non avevo visto che quello che hai scritto è un link ... :doh: :doh: non ho l'abitudine di passare il cursore dappertutto :p

Xalexalex
13-08-2006, 19:56
Grazie a entrambi, andbin ottimamente disponibile come sempre, dovrebber farti mod di sezione ^^.
Ciaozz

loris_p
13-08-2006, 19:56
già in effetti forse non era proprio chiaro :D :D

Xalexalex
13-08-2006, 19:58
il primo dei due è lo stesso che gli ho dato io :)
w3 rulez :ave:
E il secondo è una serie di link alla prima pagina :asd:

andbin
13-08-2006, 20:01
E il secondo è una serie di link alla prima pagina :asd:Già ... è vero. :doh: Chiedo scusa x i link poco utili.

Xalexalex
13-08-2006, 20:08
Già ... è vero. :doh: Chiedo scusa x i link poco utili.
Eeeefigurati :D
Ma in pratica se cerco standards, references etc cerco su w3.org ?

loris_p
13-08-2006, 20:12
quando devi cercare qualsiasi cosa che riguardi come il web dovrebbe crescere vai a vedere li ;)
compresi linguaggi come xml, soap, rdf, javascript, ecc.. (la guida a javascript del w3 è libidinosa..con tutto il DOM descritto bene e farcito di esempi.. :)
saluto e ringrazio l'unico suo componente che conosco: il mio illustre professor Massimo Marchiori dell'università di Venezia :ave: :ave: :ave: :ave:

fedo
28-08-2006, 14:28
ritiro in ballo il thread perchè volevo cercare con voi una soluzione per usare il popup di conferma Javascript per condizionare l'esecuzione di codice php..



if(!$conferma_ok){
?><script>
if(window.confirm('Vuoi confermare?')){
<? setcookie ("confermato","1", time()+1200);
$conferma_ok=1;
?>
}
</script>
<?php
}


Che però non funziona in quanto se premo 'Cancel' sul popup javascript, mi esegue ugualmente il codice PHP.. se do ok, ovviamente funziona :D


Consigli?

P.S. non posso fare refresh della pagina, dunque nessun redirect!

andbin
28-08-2006, 14:45
if(!$conferma_ok){
?><script>
if(window.confirm('Vuoi confermare?')){
<? setcookie ("confermato","1", time()+1200);
$conferma_ok=1;
?>
}
</script>
<?php
}No, siamo sempre daccapo: PHP è lato server mentre Javascript è lato client.

Ammesso che all'inizio, $conferma_ok valga false, si entra allora nel blocco if.
Quindi poi quel blocco di codice php dove c'è setcookie viene eseguito dal PHP. E quando la pagina arriva al browser, il codice Javascript è come se fosse scritto:
<script>
if(window.confirm('Vuoi confermare?')){
}
</script>
Quindi un blocco if ... vuoto!

loris_p
28-08-2006, 14:48
in questo stesso post avevo già scritto ;)

e continuerai a trovarlo fintanto che mescolerai JS e php
php viene interpretato dal server, mentre JS dal client

in pratica cosa succede..
if(!$conferma_ok){
qui l'interprete php testa la variabile che se non inizializzata varrà 0 perciò entra nell'if
<script>
if(window.confirm('Vuoi confermare?')){
<? setcookie ("confermato","1", time()+1200);
$conferma_ok=1;
?>
}
</script>
visto che nell'if c'è entrato tutto questo viene schiaffato nella pagina html e a php non interessa cosa c'è dentro..poi però dentro allo script c'è un'altra istruzione di elaborazione php, che viene interpretata a prescindere dall'if del js che verrà interpretato poi, quindi per php potrebbe esserci scritta qualsiasi cosa..
raga, non dovete dimenticare la differenza tra server side e client side :)
per risolvere il tuo problema potresti ad es. inviare una pagina con il solo JS che in base alla scelta richiama 2 differenti pagine php, e poi magari la scelta te la metti in sessione :cool:

loris_p
28-08-2006, 14:56
@andbin..
scusa non volevo riscrivere quello che hai scritto tu è che abbiamo risposto quasi contemporaneamente :D

fedo
28-08-2006, 15:00
Ok ragazzi.. ho capito perfettamente.. so bene che non si può assegnare il valore di una variabile javascript ad una var. php (il viceverso si..) , ma non ho pensato che pure i blocchi decisionali venissero elaborati in questo modo...

Il problema è che non voglio fare refresh della pagina.. mi sa che è dura!!

ma i popup in php non ci sono???

Ciao

andbin
28-08-2006, 15:03
ma i popup in php non ci sono???Ma un popup lo vedi sul PC "client" nel browser. ;) ;)

andbin
28-08-2006, 15:04
@andbin..
scusa non volevo riscrivere quello che hai scritto tu è che abbiamo risposto quasi contemporaneamente :DNo problem ... hai spiegato anche tu a dovere la questione.

fedo
28-08-2006, 15:05
Ma un popup lo vedi sul PC "client" nel browser. ;) ;)
:cry:

thx

fedo
29-08-2006, 09:50
[edit]