PDA

Visualizza la versione completa : lez.17


rossella
28-05-2002, 11:58
Ho provato l'esercizio del carrello nella lezione 17, però non capisco come mai nel visualizzare il carello, cioè all'esecuzione del file vedi_carrello.php mi dia ques'errore:

Parse error: parse error, unexpected $ in C:\xitami\webpages\test_php\vedi_carrello.php on line 9
cioè alla chiusura del codice :confused: :

il codice è questo:

<?PHP
session_start();
print "<ol>";
if (isset($prodotti)){
foreach ($prodotti as $val)
print "<li>$val";
print "</ol>;
}
?>

inoltre non ho ben capito la funzione di

print "<ol>" e
print "</ol>" ha la stessa funzione di
print "<pre>"?


P.S. Non potevo aspettare fino a domenica lo so che ti manco ;)

WebdoM
28-05-2002, 12:22
Ciao carissima,
che bello sentirti dopo così tanto tempo :rolleyes: :)

Cmq, credo che manchi un " nell'istruzione print finale. Metti il secondo " mancante e fammi sapere :)

Che editor usi? Se usi ConText, te ne saresti accorta sicuramente, poiché usa una sintassi colorata adatta al PHP. Tutto ciò che è racchiuso fra " " lo visualizza in rosso scuro.

I tag html <ol> </ol> servono per definire una lista puntata. All'interno di questi tag, ogni <il> visualizza un elemento della lista.

Prova ad editare una pagina html con questi tag.

A domenica prossima, quindi :)

rossella
28-05-2002, 12:37
Si nel frattempo mi ero accorta del " mancante e l'avevo aggiunto, però il problema rimane anche se diverso, in effetti il file vedi_carrello.php dovrebbe visualizzare il contenuto del mio carello se non sbaglio, il problema è che non visualizza nulla.

Dopo aver effettuato le scelte provo a visualizzare ma non stampa il contenuto.

se vuoi ti posto anche l'altro codice :

<?PHP
session_start();
?>
<html><head><title>Prodotti</title></head>
<body>
<?PHP
if (isset($prodotti)){
session_register("prodotti");
}
?>
<form method="POST" action="<?php print $PHPSELF; ?>">
<SELECT name ="Prodotti[]" multiple size=4>
<option> Mele
<option> Pere
<option> Banane
<option> Fragole
<option> Albicocche
<option> Arance
</SELECT>
<INPUT type="submit" value="compra"
</form>
<a href="vedi_carrello.php"> Visualizza il carrello</a>
</body></html>

P.S. Rassegnati è solo martedì oggi :p

WebdoM
29-05-2002, 10:25
Ciao Ro,
scusa se rispondo in ritardo, ma sono stato impegnato e il tuo problema mi ha lasciato qualche perplessità :)

In effetti, pur impostando register_globals=on in php.ini, bisogna aggiungere la seguente linea di codice:

$prodotti=$_POST[prodotti];

Serve per prelevare l'array proveniente dal FORM, che altrimenti non viene visto.

Ho chiesto ad altri colleghi di PHP se si tratta di un bug della versione 4.2, poiché ponendo register_globals=On questa istruzione non sarebbe dovuta essere necessaria.

Può darsi anche che, come è impostato lo script, ci sia conflitto fra le variabili di sessione registrate e quella che arriva da una richiesta POST (cioè da un form), e quindi la prima (quella di sessione) ha la prevalenza sull'altra.

Ti farò sapere.

rossella
29-05-2002, 18:44
Ho aggiunto la riga di codice che mi hai scritto, ma niente da fare: il carrello non viene visualizzato, in effetti sembra che il file vedi_carrello.php non riesca a vedere il contenuto del carrello. :(

WebdoM
30-05-2002, 00:19
Ro, scusami. Avrei dovuto specificare che la riga in qeustione andava prima del session_register(). Prova così! Il file vedi_carrello.php va bene. Io ho modificato soltanto l'altro.

Facce sapè! :cool:

rossella
30-05-2002, 12:24
Io non so se hai provato e a te viene, ma a me continua a dare pagina bianca anche modificando l'altro script.
Credimi le ho provate tutte. Boh.

WebdoM
30-05-2002, 17:12
Ecco il codice dei due script:

<?PHP
session_start();
?>
<html><head><title>Prodotti</title></head>
<body>
<?PHP
$prodotti=$_POST[prodotti];
session_register("prodotti");


?>
<form method="POST" action="<?php print $PHPSELF; ?>">
<SELECT name ="prodotti[]" multiple size=4>
<option> Mele
<option> Pere
<option> Banane
<option> Fragole
<option> Albicocche
<option> Arance
</SELECT>
<INPUT type="submit" value="compra"
</form><br><br>
<a href="vedi_carrello.php"> Visualizza il carrello</a>
</body></html>

vedi_carrello.php :

<?PHP
session_start();
session_register("prodotti");

print "<ol>";
if (isset($prodotti)){
foreach ($prodotti as $val)
print "<li>$val";
print "</ol>";
}

?>

Se non funziona, c'è un prete nel mio pease che è un famoso esorcista (padre Ottorino).
:D

rossella
30-05-2002, 17:44
Ok ora funziona, anche se devo ancora capire perchè il codice va scritto così.


Per ogni evenienza però terrò presente padre Ottorino :D ;). Semmai poi mi lasci il recapito. :)

WebdoM
30-05-2002, 22:12
L'unica doffereenza dovrebbe essere l'aggiunta di $prodotti=$_POST[prodotti] e l'eliminazione del controllo (ormai inutile) if isset() sulla variabile $prodotti.

Credo ci sia un bug nella versione PHP 4.2

rossella
30-05-2002, 22:24
Se lascio if isset() dopo l'aggiunta la pagina risulta bianca, se la tolgo invece va a posto. Perchè perchè risulta una ripetizione? o sono in conflitto?