- Home
- Categorie
- Coding e Sistemistica
- PHP
- Errore di sintassi che non trovo
-
Errore di sintassi che non trovo
Ciao a tutti, potrebbe sembrare stupido, ma non ne vengo fuori. Lo script di seguito mi da questo errore e non capisco dove sta.
Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in D:\Inetpub\webs....\mioscript.php on line 57
<?php # Visto che ora la connessione serve anche qui, includiamo la pagina di configurazione. include("./cnf.php"); include("./cnx.php"); # estraiamo tutte le tabelle dal database e, sfogliandole, #+ creiamo un form per ognuna $querytabelle="SHOW TABLES"; $risultatotabelle=mysql_query($querytabelle); while($righetabelle=mysql_fetch_row($risultatotabelle)) { $nometabella=$righetabelle[0]; # abbiamo optato per la funzione mysql_fetch_row, la più veloce, #+ che ci restituisce un array a chiave numerica #+ per ogni tabella creiamo un form; usiamo, in questo caso, #+ la tecnica dell'heredoc per visualizzarlo... echo <<<EOF <fieldset> <legend>Inserimento $nometabella</legend> <form action="./raccoltadati.php?azione=inserimento" method="post"> EOF; # ora estraiamo tutte le colonne della tabella corrente e, #+ per ognuna, visualizziamo l'input relativo... $querycolonne="SHOW COLUMNS FROM $nometabella"; $risultatocolonne=mysql_query($querycolonne); while($righecolonne=mysql_fetch_row($risultatocolonne)) { $nomecolonna=$righecolonne[0]; if($nomecolonna!="ID") echo <<<EOF1 <p><label for="$nomecolonna">$nomecolonna</label> # Fino a qui è uguale a prima; ora, invece, andiamo a vedere se il campo #+ corrente è chiave dell'array "$relazioni"; in tal caso, cerchiamo #+ tutti i record della tabella relazionata e li sistemiamo in un select; #+ altrimenti, visualizziamo un semplice input (come prima)... if(array_key_exists($nomecolonna,$relazioni)) { echo " <select name=\"$nomecolonna\"> <option value=\"\">scegli...</option>"; $queryrelazione="SELECT ID,Nome FROM {$relazioni[$nomecolonna]} ORDER BY Nome"; $risultatorelazione=mysql_query($queryrelazione); while($righerelazione=mysql_fetch_array($risultatorelazione)) echo " <option value=\"{$righerelazione["ID"]}\">".stripslashes($righerelazione["Nome"])."</option>"; // l'errore sembra essere qua # Abbiamo trattato la stringa con "stripslashes", una funzione che serve a togliere #+ gli eventuali slash davanti ai caratteri speciali; abituiamoci ad usare #+ sempre questa funzione in presenza di stringhe estratte dal database. # Da notare come, stavolta, abbiamo usato un array associativo (con mysql_fetch_array). echo " </select>"; } else echo " <input type=\"text\" name=\"$nomecolonna\" />"; echo " </p>"; } } echo <<<EOF2 <p> <input type="hidden" name="tabella" value="$nometabella" /> <input type="submit" value="inserisci $nometabella" /> </p> </form> </fieldset> EOF2; } ?> </div>
Non ne vengo a capo, qualcuno riesce a spiegare dove sbaglio?
Ringrazio anticipatamente.
-
Manca nella riga 35 la conclusione dell'espressione heredoc.
Prova appunto ad aggiungere > EOF1; ad inizio della suddetta riga e vedi se funziona.
-
GRANDE, GRANDE, GRANDE, permettetemi di esultare ad "alta voce". Akeeron non hai idea di quanto ci sono diventato matto, ora funziona, l'ho riguardato migliaia di volte e non capivo.
Grazie
-
Figurati, lieto d'esserti stato utile. Sono convinto che adesso ti senti un **happyman **:D