Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [PHP] Strano 'Parse error'...

    Ciao a tutti!
    Scusatemi se vi sembrerà un dubbio stupido ma non riesco proprio a capacitarmi.

    Ho uno script di messaggistica tipo gli u2u sui forum. Sto costruendo lo script che dovrebbe controllare se l'azione dell'utente è una risposta ad un messaggio o no.

    Per fare ciò controllo se la variabile $_GET['rispondi'] è 'si' oppure 'no'. In questo modo:

    $rispondi=$_GET['rispondi'];

    if ($rispondi == si){
    ...
    }elseif ($rispondi == no){
    ...
    }


    ecc...
    Lo script, però mi da questo errore:

    Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\WM\www\Unknow\posta_misc.php on line 110

    Dove la linea 110 è $rispondi=$_GET['rispondi'], eppure non capisco dove stia l'errore. Ci sono anche altre cose che non capisco:

    questo errore me lo da anche quando commento quella linea per vedere che succede e quando non dovrebbe andare a prendere quella variabile perchè essa si trova all'interno di un 'if' che controlla se l'azione è mandare un messaggio o leggerne uno.

    Ho notato anche che il GET non mi passa una variabile: se l'azione è rispondere a un messaggio il GET passa il nome del destinatario, invece non lo fa.

    Se riusciste a chiarirmi le idee, se avete bisogno di vedere più ampiamente lo script o volete insultarmi per qualsiasi cosa, per favore postate! Ve ne sarò enormemente grato (anche perchè sennò prendo a testate il monitor.. )
    Matteo

  2. #2
    L'errore forse e' prima. Forse un problema di apici/doppi apici.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    $rispondi=$_GET['rispondi'];

    if ($rispondi == si){
    ...
    }elseif ($rispondi == no){
    ...
    }
    dovrebbe essere sbagliato:
    infatti va
    if ($rispondi == "si"){
    ...
    } elseif ($rispondi == "no"){
    ...
    }
    poi controlla di aver chiuso bene ogni ciclo

  4. #4

    ...

    Sì, gli apici li ho corretti. Mi da un errore proprio su quella riga lì, anche quando provo a commentarla!
    Ho provato a commentarla e metterla fra le prime righe della pagina: mi dava sempre errore su quella riga! VVoVe:
    Avete mica qualche idea?
    Matteo

  5. #5
    L'errore e' prima. Viene captato in quella riga, ma avviene in precedenza. posta o controlla le righe precedenti.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6

    ...

    Allora, questo è il codice che viene prima:

    <?
    include("config.inc.php");
    $nickname = "Gino";
    $azione=$_GET['azione'];
    $rispondi=$_GET['rispondi'];
    ?>

    <html>
    <head>

    <title>
    <?
    if ($azione == cancella){
    echo "Cancella";
    }elseif ($azione == leggi){
    echo "Leggi";
    }elseif ($azione == scrivi){
    echo "Scrivi";
    }
    ?>
    </title>

    <?
    if ($azione == scrivi){

    echo"
    <script language=JavaScript>
    ...qui c'è uno script in javascript, non dovrebbe dare problemi...
    </script>
    ";

    }
    ?>

    </head>
    <body>

    <?

    if ($azione == cancella){

    $cancella=$_POST['cancella'];

    foreach($cancella as $value)
    {

    $query = "DELETE FROM posta WHERE id = '$value'";
    mysql_query($query, $connessione)or die("Errore durante la cancellazione dei messaggi!");

    }

    Header("Location: posta.php");

    }elseif ($azione == leggi){

    $id=$_GET['id'];
    $query2 = "SELECT * FROM posta WHERE id='$id'";

    $conteggio = mysql_query($query2,$connessione)or die(mysql_error());
    $num = mysql_num_rows($conteggio);

    if ($num == 1){
    while($ROW = mysql_fetch_array($conteggio)){

    $mittente=$ROW["mittente"];
    $soggetto=$ROW["soggetto"];
    $data=$ROW["data"];
    $ora=$ROW["ora"];
    $contenuto=$ROW["contenuto"];

    echo <<<EOD
    ...stampa il contenuto di un messaggio...
    EOD;
    }

    }elseif ($num == 0){
    echo "Errore durante la lettura del messaggio!";
    }

    }elseif ($azione == scrivi){

    //$rispondi=$_GET['rispondi']; //linea 110

    echo "
    ...stampa il form per scrivere un messaggio...
    ";

    if ($rispondi == "si"){

    $dest=$_GET['dest'];

    echo <<<EOD
    <input name='destinatario' type='text' size='25' value='$dest' disabled>


    EOD;

    }elseif ($rispondi == "no"){

    echo "
    <input name='destinatario' type='text' size='25' value=''>


    ";

    }
    ...
    Grazie per l'aiuto , ormai non so veramente dove aggrapparmi!


    P.S.: ho abbreviato qualcosina per renderlo più leggibile. Spero...
    Matteo

  7. #7
    codice:
    echo <<<EOD 
    <input name='destinatario' type='text' size='25' value='$dest' disabled>
    
     
    EOD;
    sicuramente l'errore e' nel heredoc. Leggi le caratteristiche sul manuale e attento agli spazi ....

    http://www.php.net/manual/it/languag...syntax.heredoc

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8

    ...

    Penso di aver trovato l'errore! Il problema è che è più oscuro di quanto pensassi...

    Allora, ho provato a riscrivere tutto, prendendo uno per volta i blocchi di codice. Sono arrivato fino a questo blocco:

    $row = mysql_fetch_array($conteggio);

    echo <<<EOD
    $row[mittente]
    $row[soggetto]
    $row[data]
    $row[ora]
    $row[contenuto]
    EOD;
    Fino a qua è tutto giusto, mettendo anche questo blocco invece mi da un Parse Error all'ultima riga della pagina. Ho controllato tutte le variabili GET, me le stampa tutte: l'errore (o uno degli errori) dev'essere per forza qua.

    La cosa strana è che prima che aggiungessi il controllo sulla variabile $rispondi questo codice funzionava da favola...
    Matteo

  9. #9
    Avrai uno spazio dopo la fine dell'ultima riga della stringa heredoc.

    Puoi tranquillamente togliere heredoc.... visto che lo stampi immediatamente non ha nemmeno senso metterlo e ti crea solo problemi.
    codice:
    echo "
    $row[mittente] 
    $row[soggetto] 
    $row[data] 
    $row[ora] 
    $row[contenuto] 
    ";
    prova cosi'.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    434
    e se il javascript avesse apici doppi?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.