Problemi con echo e die

Perchè se scrivo la seguente istruzione:

echo ('<IMG SRC="No.gif" ALIGN="MIDDLE"> Errore nella query: ' . mysql_error());

quindi,invece di mettere die (presente prima) ho messo semplicemente echo, e

mi viene resituito il seguente errore:

Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in 
D:\Universita\Basi di Dati\Progetto Basi di Dati\Progetto 2005-2006\Ins_Propedeutici2.php on line 27

Ripeto se metto il costrutto die mi funziona tutto, inoltre ho provato anche ad eliminare le parentesi tonde,MA NIENTE!.

GRAZIE

inviato 11 anni fa
noems
X 0 X

Quell'istruzione è corretta. Riporta anche il codice "limitrofo"

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Il problema si presenta in qualsiasi pagina effettui il cambiamento, di seguito è

riportato un pezzo di codice di una pagina (sempre del mio progetto) in cui ho provato a fare questa modifica (diversa da quella con cui ho citato l'errore)

      $query="SELECT * FROM CORSI WHERE (Cod_Laurea = '$Cod_L')";
      $ris= mysql_query($query,$Connessione) or echo('<IMG SRC="No.gif" 
      ALIGN="MIDDLE">Errore nella query: '.mysql_error());
      $righe=mysql_num_rows($ris);
risposto 11 anni fa
noems
X 0 X

E' un problema curioso del PHP.

L'istruzione echo, come pure l'istruzione die, non sono delle vere e proprie funzioni ma dei costrutti. die però simula il comportamento di una funzione restituendo un valore, echo invece non restituisce nulla.

Pertanto il PHP quando deve eseguire l'espressione deve valutare i due operandi dell'operatore OR. Nota allora che echo non è fatto per restituire un valore (cosa che invece die fa) pertanto non potrà calcolare la OR e quindi dà errore.

Se hai voglia leggi qui i risvolti sulle performance di questo comportamento:

http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40

Ti faccio notare il significato di espressioni del tipo: funzione OR funzione

Il PHP si accorge che deve eseguire una OR, pertanto non valuta subito tutti e due gli operandi. Basta infatti che il primo valga true affinché il risultato dell'espressione sia true. Questo fa si che se la prima istruzione vale true (va a buon fine) la seconda non verrà mai eseguita.

Questa proprietà del linguaggio si chiama "cortocircuitazione"

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Io invece dico che è un problema curioso della mia macchina...

tempo fà postai un problema con il refresh,cioè:

spesso quando apportavo delle modifiche al sorgente di php (che come giustamente mi hai detto non è quello che si facendo Visualizza-HTML, ma quello che dovrebbe stare in htdocs,da me però è stata cambiata) e facevo il refresh della pagina le modifiche non venivano apportate. Allora dovevo chiudere tutto il sito e cominciare da zero (questo solo per le pagine php), cioè andare su Home Page.htm e da lì poi arrivare alla pagina a cui avevo apportato le modifiche; c'è da dire che questa procedura non sempre andava,anzi va, a buon fine; ma c'è da dire anche che questo capito non sempre ma spesso, e ancora non sono riuscito a capire su quale casistica avviene questo problema.....

risposto 11 anni fa
noems
X 0 X

Inoltre, scusa se ti contraddico, quella proprietà non si chiama "MUTUA ESCLUSIONE"?

risposto 11 anni fa
noems
X 0 X

Non so da cosa dipendeva il problema del refresh ma questa è un'altra storia.

La mutua esclusione è quella proprieta per cui due eventi non possono accadere contemporaneamente.

La cortocircuitazione è una particolare tecnica di valutazione di una espressione adottata da alcuni linguaggi di programmazione che evita il calcolo di ogni singolo operando quando il valore assunto dagli altri già determina l'esito di tutta l'espressione.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda