E' possibile lanciare un alert javascript da PHP?

Vorrei sapere se fosse possibile mettere un alert javascript dentro un if..else di php?

..cioe'...:

if(condizione)

{fai questo}

esle

{codice alert javascript}

Oppure - ancora meglio - esiste qualcosa di simile che si possa fare in php?

Grazie a tutti. Ciao

inviato 4 anni fa
edo
edo
11
modificato 4 anni fa
Gianni Tomasicchio
X 2 X

Non è possibile mischiare codice PHP e Javascript ed avere la certezza che verrà eseguito nello stesso ordine con cui è stato scritto. Infatti il codice PHP viene eseguito per primo, sul server. Poi l'output prodotto, insieme al resto della pagina (HTML, Javascript, ecc.) viene inviato al browser e mostrato/eseguito.

Questo significa che gli script Javascript verrebbero eseguiti tutti insieme e tutti dopo l'esecuzione delle istruzioni PHP.

Quindi in generale ti sconsiglio di mischiare PHP e Javascript con questo intento, ovvero quello di mostrare messaggi in funzione di condizioni verificate da PHP. Piuttosto mostra i messaggi Javascript durante l'esecuzione di codice Javascript, ad esempio la validazione dei form. Usa invece messaggi testuali da far apparire nella pagina HTML in caso di codice PHP.

Un modo per "preparare" un alert javascript da PHP è il seguente:

<?php
$messaggio = '';
if(condizione) {
   $messaggio = 'Messaggio di errore';
}
?>
<html>
   <head>
      <script  type="text/javascript" language="javascript">
      var errorMsg = '<? echo addslashes($messaggio); ?>';
      if (errorMsg != '') {
         alert(errorMsg);
      }
      </script>
   </head>
risposto 4 anni fa
Gianni Tomasicchio
modificato 4 anni fa
Grazie per la risposta . Si il mio intento sarebbe quello, cioe' usare messaggi testuali in PHP . Ma esiste un modo affinche questi messaggi (scrtti in php - magari dopo un "else") abbiano anche un aspetto tipo "popup" o comunque esiste un modo per "svincolare" il msg dalla pagina ?? Avevo pensato al costrutto "header ("Location....)", ma in quel modo mi apre un 'inetra pagina altrove , ma non e' quello che intendo. Grazie in anticipo per l'aiuto.edo 4 anni fa
Nel ramo ELSE potresti memorizzare un messaggio di errore in una variabile e poi mostrare la pagina in cui vorresti far apparire questo errore. In questa pagina scrivi del codice che, se il messaggio non è vuoto, inserisce un javascript che mostra proprio questo errore. Se hai problemi a far vedere questa variabile dalle diverse parti del codice poi pensare di metterla in sessione, ricordandoti poi di svuotarla dopo averla letta.Gianni Tomasicchio 4 anni fa
Grazie per il suggerimento. Mi prendo un attimo di tempo per implementarlo e poi ti/vi faccio sapere. edoedo 4 anni fa
Ho modificato la risposta per riportare un esempio di quanto detto.Gianni Tomasicchio 4 anni fa
X 1 X

Io eviterei proprio di usare l'alert() come messaggio di avviso, questo essendo modale blocca completamente la navigazione con il browser (non solo nella pagina dove è mostrato ma anche nelle altre tab) in questo modo può risultare molto irritante navigare sia il sito che l'intero Web.

Meglio usare una parte della pagina a scomparsa (non un popup quelli sono ancora più irritanti).

Lo script di Gianni andrebbe modificato in questo modo:

<?php
$messaggio = '';
if(condizione) {
   $messaggio = 'Messaggio di errore';
}
?>
<html>
   <head>
      <script  type="text/javascript" language="javascript">
      var errorMsg = '<? echo addslashes($messaggio); ?>';
      if (errorMsg != '') {
         document.getElementById('Errore').style.display: 'block';
         document.getElementById('Errore').innerHTML = '<p>' + errorMsg + '</p>';
      }
      </script>
   </head>

E nel resto del documento dove si vuol far apparire il box di avviso:

....
<div id="Errore" style="display:none"></div>
....

a #Errore si può dare tramite foglio di stile un qualsiasi colore di sfondo, di testo e bordo in modo da evidenziare il messaggio, mentre display:none non lo mostra nella pagina, almeno fino a quando non si verifica l'errore, al che la routine in Javascript ne modifica la modalità display (da none a block) mostrandolo.

In questo modo non si blocca la navigazione utente, ma anzi si mette un avviso che pur essendo visibile non irrita nessuno ma fa il suo lavoro, cioè quello di avvisare l'utente del problema intercorso.

risposto 4 anni fa
Marco Grazia
Grazie Marco. Bella soluzione....forse è proprio quel che cercavo. edoedo 4 anni fa
X 0 X

Buongiorno. Preciso che sono alle prime armi con php e javascript, chiedo se puoi spiegare meglio dove e come inserire il codice sopra in quanto no riesco a farlo funzionare. grazie

risposto 10 mesi fa
andyluk
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda