PDA

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


ianaz
13-08-2006, 15: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, 16: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, 16:13
Ok, grazie mille... provo subito ;)

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

andbin
13-08-2006, 16: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, 16:25
invia headers http :)
poi se a te non serve è un'altra questione ;)

Xalexalex
13-08-2006, 20: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, 20:26
buon divertimento (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html) ;)

andbin
13-08-2006, 20: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, 20:46
il primo dei due è lo stesso che gli ho dato io :)
w3 rulez :ave:

andbin
13-08-2006, 20: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, 20:56
Grazie a entrambi, andbin ottimamente disponibile come sempre, dovrebber farti mod di sezione ^^.
Ciaozz

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

Xalexalex
13-08-2006, 20: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, 21: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, 21: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, 21: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, 15: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, 15: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, 15: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, 15:56
@andbin..
scusa non volevo riscrivere quello che hai scritto tu è che abbiamo risposto quasi contemporaneamente :D

fedo
28-08-2006, 16: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, 16:03
ma i popup in php non ci sono???Ma un popup lo vedi sul PC "client" nel browser. ;) ;)

andbin
28-08-2006, 16: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, 16:05
Ma un popup lo vedi sul PC "client" nel browser. ;) ;)
:cry:

thx

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

Hardware Upgrade Forum Database Error
Database Error Database error
The Hardware Upgrade Forum database has encountered a problem.

Please try the following:
  • Load the page again by clicking the Refresh button in your web browser.
  • Open the www.hwupgrade.it home page, then try to open another page.
  • Click the Back button to try another link.
The www.hwupgrade.it forum technical staff have been notified of the error, though you may contact them if the problem persists.
 
We apologise for any inconvenience.