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']) ? 1 : 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 è 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à:
<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!!!!