Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Errore di Parse error...

    Salve a tutti ragazzi, sto muovendo i primi passi con il PHP, anche se conosco in linea di massima qualche linguaggio di programmazione, ho deciso di approfondire la mia conoscenza in questo linguaggio!
    Sto seguendo dei tutorial che mi aiutano a capire in maniera piu' approfondita le caratteristiche di questo linguaggio, il discorso e' che nn sempre le ciambelle riescono con il buco
    Sto facendo una pagina per modificare dei dati inseriti in un array, in questa pagina come forma di sicurezza e' stato adottata la funzione header() per evitare dei problemi con il refresh della pagina, insieme a questo mi da la possibilita' di dare all'utente un messaggio direttamente sulla riga degli indirizzi passato tramite GET. Il discorso e' che quando provo ad avviare la pagina da me creata mi restituisce questo errore:
    codice:
    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /Applications/MAMP/htdocs/ProvePHP/PHP:Mysql/modifica.php on line 73
    ho provato a farmi stampare l'errore tramite un
    Codice PHP:
    echo mysql_error() 
    ma purtroppo niente da fare...
    Ho anche provato a commentare le righe di codice interessate solo per fare una prova, ma alla successiva funzione header siamo allo stesso punto!
    Vi lascio qui di seguito la pagina da me fatta, sperando che qualcuno mi possa aiutare!
    Codice PHP:
    <?php
        
    //richiamo il file di configurazione
        
    require('config.php');
        
        
    //richiamo lo script di connessione
        
    require('connect.php');
        
        if(
    $_POST && isset($_GET['id']))
        {
            
    aggiorna_record();
        }
        elseif(isset(
    $_GET['id']))
        {
            
    mostra_record();
        }
        else
            
    mostra_lista();
            
        
    //dichiaro la funzione mostra_lista()
        
    function mostra_lista()
        {
            
    //mostro un eventuale messaggio
            
    if(isset($_GET['msg']))
                echo 
    '[b]'htmlentities($_GET['msg']).'[/b]

    '
    ;
                
            while (
    $row mysql_fetch_assoc($result))
            {
                
    $nome htmlspecialchars($row['nome']);
                
                
    //preparo il link per la modifica dei dati del record
                
    $link $_SERVER['PHP_SELF'] .'?id=' .$row['id'];
                
                echo 
    "

    Nome: 
    $name <a href=\"$link\">Modifica</a></p>";
            }
            
    //libero la memoria di PHP 
            
    mysql_free_result($result);
            
            
    //chiudo la connessione a MySQL 
            
    mysql_close();
        }
        
        function 
    aggiorna_record()
        {
            
    //recupero i campi di tipo "stringa"
            
    $nome trim($_POST['nome']);
            
    $email trim($_POST['email']);
            
    $messaggio trim($_POST['messaggio']);
            
            
    //verifico se devo eliminare gli slash inseriti in automatico da PHP 
            
    if(get_magic_quotes_gpc())
            {
                
    $nome stripslashes($nome);
                
    $email stripslashes($email);
                
    $messaggio stripslashes($messaggio);
            }
            
            
    //effettuo l'escape dei caratteri speciali per inserirli all'interno
            
    $nome mysql_real_escape_string($nome);
            
    $email mysql_real_escape_string($email);
            
    $messaggio mysql_real_escape_string($messaggio);
            echo 
    $nome;
            
    //recupero gli altri campi del form
            
    $sesso = isset($_POST['sesso']) ? intval($_POST['sesso']) : 0;
            
    $newsletter = isset($_POST['newsletter']) ? 0;
            
    $attivita intval($_POST['attivita']);
            
            
    $id intval($_GET['id']);
            
            
    //verifico la presenza dei campi obbligatori
            
    if(!$nome)
            {
                
    $messaggio urlencode("Non hai inserito il nome");
                
    header("location:$_SERVER['PHP_SELF']?id=$id&msg=$messaggio");
                exit();
            }
            
            
    //preparo la query
            
    $query "UPDATE utenti SET
                        nome = '
    $nome',
                        email = '
    $email',
                        sesso = '
    $sesso',
                        newsletter = '
    $newsletter',
                        attivita = '
    $attivita',
                        messaggio = '
    $messaggio',
                        WHERE id = '
    $id'
                    "
    ;
            
            
    //invio la query
            
    $result mysql_query($query);
            
            
    //controllo l'esito
            
    if(!$result)
            {
                die(
    "Errore nella query $query: "mysql_error());
            }
            
            
    //chiudo la connessione MySQL
            
    mysql_close();
            
            
    $messaggio urlencode('Aggiornamento effettuato con successo');
            
    header("location: $_SERVER['PHP_SELF']?msg=$messaggio");
        }
        
        
    //creo la funzione per mostrare i record
        
    function mostra_record()
        {
            
    //mostro un eventuale messaggio
            
    if(isset($_GET['msg']))
                echo 
    '[b]'htmlentities($_GET['msg']).'[/b]

    '
    ;
                
            
    $id intval($_GET['id']);
            
            
    //preparo la query
            
    $query "SELECT nome,email,sesso,newsletter,attivita,messaggio FROM utenti WHERE id=$id";
            
            
    //invio la query
            
    $result mysql_query($query);
            
            
    //controllo l'esito
            
    if(!$result)
            {
                die(
    "Errore nella query $query: "mysql_error());
            }
            
            
    //controllo che SELECT abbia restituito un record onde evitare manomissioni
            //dell'id passato via GET
            
    if(mysql_num_rows($result) != 1)
            {
                die(
    "L'ID passato via GET &egrave; errato!");
            }
            
            list(
    $nome,$email,$sesso,$newsletter,$attivita,$messaggio) = mysql_fetch_row($result);
            
            
    $nome htmlspecialchars($nome);
            
    $email htmlspecialchars($email);
            
    $messaggio htmlspecialchars($messaggio);
    ?>
    <form name="form_registrazione" method="post" action="">
        <label>Nome: <input name="nome" type="text" value="<? echo $nome;?>" /></label>

        <label>Email: <input name="email" type="text" value="<? echo $email;?>" /></label>

        Sesso: <label><input name="sesso" type="radio" value="1" <? if($sesso == 1) echo 'checked="checked"'?> />M</label>

        <label><input name="sesso" type="radio" value="2" <? if($sesso ==2) echo 'checked="checked"'?> />F</label>

        <label>Inviami newsletter: <input name="newsletter" typr="checkbox" value="1" <?if($newsletter) echo 'checked="checked"'?> /></label>

        <label>Attivit&agrave;: 
            <select name="attivita">
                <option value="0">::seleziona::</option>
                <option value="1" <? if($attivita == 1) echo 'selected="selected"';?>>Studente</option>
                <option value="2" <? if($attivita == 2) echo 'selected="selected"';?>>Lavoratore</option>
                <option value="3" <? if($attivita == 3) echo 'selected="selected"';?>>Disoccupato</option>
            </select>
        </label>

        <label>Messaggio:

            <textarea name="messaggio" cols="40" rows="5"><? echo $messaggio?></textarea>
        </label></br />
        <input name="invia" type="submit" value="Invia" />
    </form>
    <?php
        
    }
    ?>
    Se posso vi vorrei chiedere un favore, ovvero quello di non modificare troppo la struttura della pagina, e se c'e' qualcosa di sbagliato di farmelo notare. Abbiate pazienza ma sto seguendo un tutorial, e nn vorrei stravolgere il tutto :P
    Cmq dei suggerimenti sono piu' che bene accetti, anche come letture (preferibilmente online) o anche consigli di programmazione!

    Detto questo ringrazio tutti anticipatamente!!!!

  2. #2
    Il problema alla riga 73 è questo:

    header("location:$_SERVER['PHP_SELF']?id=$id&msg=$messaggio");

    Cioé se in una stringa tu inserisci una variabile array, in questo caso, $_SERVER['PHP_SELF'] ti dà errore se l'indice dell'array viene delimitato da '. Quindi fai:

    header("location:" . $_SERVER['PHP_SELF'] . "?id=$id&msg=$messaggio");

    Ciao.

  3. #3
    Grazie mille gianf!!!
    Grazie alla tua dritta mi hai aiutato a risolvere!
    Ls prossima volta staro' piu' attento!
    Cmq per nn incoppare in altri errori...
    Qui l'errore e' stato che all'interno delle parentesi quadre ho delimitato con i singoli apici, e l'errore e' stato li. Oppure no?

  4. #4
    Si, ma solo perché l'array l'hai messo all'interno di una stringa. Altrimenti gli apici all'indice vanno sempre messi a meno che l'indice stesso non è una var.le: in tal caso non vanno messi.

    Es.

    $prova[$mio_indice]

    qui gli apici non vanno messi.

    E, comunque quando usi una var.le in una stringa se usi la dicitura che ti ho suggerito, non avrai problemi:

    header("location:" . $_SERVER['PHP_SELF'] . "?id=$id&msg=" . $messaggio);

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.