• User Newbie

    ERRORE SYNTAX !!!

    Ciao, visto che sono nuovo e ancora ignorante in materia avrei bisogno di un aiuto.
    Sotto trovate una pagina che interrogando il db mi restituisce una tabella a 3 colonne.
    Nome, Cognome, Titolo ( dove titolo è in formato zip).
    Titolo dovrebbe essere linkato.
    Purtroppo ho un errore e non riesco a trovarlo..
    L'errore che mi da è questo:
    Syntax error, unespected $end , Line 65 ..!!
    Chi mi aiuta? Grazie

    Claudio


    <html>
    <head>
    <title>Interfaccia verso il database</title>
    </head>
    <body>
    <?php
    $host = 'localhost';
    $user = 'miouser';
    $password = 'miapass';
    $database = 'miodb';

      $db = mysql_connect($host, $user, $password)
      or die ("Impossibile connettersi al server $host");
    
      mysql_select_db($database, $db)
      or die ("Impossibile connettersi al database $database");
    
      $query = "SELECT autori.nome,autori.cognome,canzoni.titolo  FROM autori,canzoni
    

    WHERE autori.id_autori=canzoni.id_autori
    ORDER BY autori.id_autori
    LIMIT 0,200";
    $dbResult = mysql_query($query, $db);
    $AffectedRows = mysql_affected_rows($db);

    $q=mysql_query("SELECT * from [canzoni];");
    while ($q1=mysql_array($q)) {
    echo "nome: ".$q1['nome']." cognome: ".$q1['cognome']." <a href=\"".$q1['titolo']."\">".$q1['titolo']."</a>";
    
      print "<table border=\"2\">\n";
    echo "<h3>Database provvisorio e logicamente incompleto</h3>";
    
      for ($index=0 ; $index<$AffectedRows ; $index++)
      {
         $row=mysql_fetch_row($dbResult);
    
         if($index==0)
         {
            print "<tr>\n";
            foreach ($row as $k => $v)
            {
               $myfield = mysql_fetch_field($dbResult,$k);
               print ("<td>**" . $myfield->nome . "**</td>");
            }
            print "</tr>\n";
         }
      foreach ($row as $k => $v)
            {
               print ("<td>$v");
               if ($k==0)
               {
    
               }
               print ("</td>");
            }
         print "</tr>\n";
      }
    
      print "</table>\n";
    
    
    mysql_free_result($dbResult);
    mysql_close($db);
    ?>
    

    </body>
    </html>****


  • User Attivo

    Non hai chiuso la parentesi graffa del while.
    Un consiglio: indenta il codice.. 😉


  • User Newbie

    Ciao e grazie d'avermi risposto..
    Niente da fare..ma probabilmente non mi sono spiegato bene..!!
    questa pagina richiama 2 cartelle dal database, nella prima " autori " estraggo 'nome e ' cognome' , dalla seconda " canzoni " estraggo 'titolo' in cui i risultati di 'titolo' sono dei files .zip .
    Questa è la pagina funzionante ma senza link:


    <html>
    <head>
    <title>Interfaccia verso il database</title>
    </head>
    <body>
    <?php
    $host = 'localhost';
    $user = 'nome_user';
    $password = 'miapass';
    $database = 'nome_db';

      $db = mysql_connect($host, $user, $password)
      or die ("Impossibile connettersi al server $host");
    
      mysql_select_db($database, $db)
      or die ("Impossibile connettersi al database $database");
    
      $query = "SELECT autori.nome,autori.cognome,canzoni.titolo  FROM autori,canzoni
    

    WHERE autori.id_autori=canzoni.id_autori
    ORDER BY autori.id_autori
    LIMIT 0,200";
    $dbResult = mysql_query($query, $db);
    $AffectedRows = mysql_affected_rows($db);

      print "<table border=\"2\">\n";
    

    echo "<h3>Database provvisorio e logicamente incompleto</h3>";

      for ($index=0 ; $index<$AffectedRows ; $index++)
      {
         $row=mysql_fetch_row($dbResult);
    
         if($index==0)
         {
            print "<tr>\n";
            foreach ($row as $k => $v)
            {
               $myfield = mysql_fetch_field($dbResult,$k);
               print ("<td>**" . $myfield->nome . "**</td>");
            }
            print "</tr>\n";
         }
      foreach ($row as $k => $v)
            {
               print ("<td>$v");
               if ($k==0)
               {
    
               }
               print ("</td>");
            }
         print "</tr>\n";
      }
    
      print "</table>\n";
    
    
    mysql_free_result($dbResult);
    mysql_close($db);
    ?>
    

    </body>
    </html>


    ora in questa pagina vorrei inserire il codice che mi permette di linkare i risultati di 'titolo'.
    Questo è il codice che mi ha gentilmente inviato " massy"


    $q=mysql_query("SELECT * from [nometuacartella];");
    while ($q1=mysql_array($q)) {
    echo "nome: ".$q1['nome']." cognome: ".$q1['cognome']." <a href="".$q1['titolo']."">".$q1['titolo']."</a>";
    }


    lo dovrei d'apprima modificare ( per es: SELECT *, visto che da canzoni chiedo solo 'titolo' e [nometuacartella] ..poi inserirlo.. ma non ne sono capace.
    Da notare che la cartella 'canzoni' è la cartella si può dire principale in cui ho tutte le foreign key sulle altre cartelle.

    Grazie dell'aiuto
    Claudio

    PS: cosa intendevi per 'indenta' il codice?
    Scusa l'ignoranza.


  • Moderatore

    come si chiama la tabella dove son registrati i titoli? 🙂


  • User Newbie

    Ciao..Dunque,

    il db è strutturato così ... 5 tabelle :
    1.autori : id_autori, nome, cognome ( primary key id_autori )
    2.genere: id_genere, nome_genere ( PK id_genere )
    3.tipo_base: id_tipo_base, base ( PK id_tipo_base )
    4.nazionalita: id_nazionalita, nazione ( PK id_nazionalita )
    5.canzoni: id_canzoni, id_autori, id_genere, id_tipo_base, id_nazionalita,
    sigla,titolo,dimensione ( PK id_canzoni , le altre id_ tutte FK )

    Nazionalità ho omesso volutamente l'accento.
    Dalla pagina io vorrei ottenere nome, cognome, titolo.
    E i risultati di 'titolo' in link...dove poter eseguire il download.

    Ti ringrazio per la disponibilità..!!

    Claudio


  • Moderatore

    PRova con una query del tipo:

    $q="SELECT A.nome,A.cognome,B.titolo from canzoni as B LEFT join autori as A on A.id_autori=B.id_autori;"; # <- se serve metti una clausola tipo: where A.cognome="Venditti" o quello che ti serve.

    $q1=mysql_query($q);
    while ($q2=mysql_fetch_array($q1)) {
    echo $q2['nome']." ".$q2['cognome']." <a href="".$q2['titolo'].""".$q2['titolo']."</a>";
    }

    Att. scritto al volissimo. Spero di non aver messo infamità 🙂