• User

    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.


  • User

    Manca nella riga 35 la conclusione dell'espressione heredoc.
    Prova appunto ad aggiungere > EOF1; ad inizio della suddetta riga e vedi se funziona.


  • User

    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


  • User

    Figurati, lieto d'esserti stato utile. Sono convinto che adesso ti senti un **happyman **:D