• User Attivo

    problema con una query

    ciao, ho una query che mi da errore ma non riesco a capire cosa possa essere:

    [php]
    <?php
    $query="SELECT cinema_ana_film.*, cn1.nazione AS nazione1, cn1.id_cinema_nazioni AS cn1.id_cinema_nazioni1,
    DATE_FORMAT(data_uscita, '%d-%m-%Y') AS data_uscita
    FROM cinema_ana_film, cinema_nazioni cn1
    WHERE cinema_ana_film.nazione_1=cn1.cn1id_cinema_nazioni1
    AND cinema_ana_film.titolo LIKE '$lettera%' AND cinema_ana_film.id_cinema_ana_film > '2'
    ORDER BY cinema_ana_film.titolo ASC LIMIT $primo, $per_page";
    $ris_query=mysql_query($query, $conn);

    $row_film=mysql_fetch_array($ris_query);
    ?>
    [/php]questo è l'errore che mi stampa:

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /web/htdocs/sito.it/home/pann_contr_comune/include_case1_cinema_ana_film.php on line 60

    ho risolto il problema dell'errore, solo che c'è ancora qualcosa che non va.
    Sto cercando di realizzare un elenco di film, ad esempio vorrei che uscisse così:

    TITOLO | NAZIONE

    La passione di Cristo | Stati Uniti / Italia
    Monster | Stati Uniti / Germania

    ma non capisco perchè nel secondo film mi stampa come seconda nazionalità l'Italia anzichè la Germania come risulta nel DB

    TITOLO | NAZIONE

    La passione di Cristo | Stati Uniti / Italia
    Monster | Stati Uniti / Italia

    [php]
    <?php
    $query="SELECT cinema_ana_film.*, cn1.nazione AS nazione1,
    DATE_FORMAT(data_uscita, '%d-%m-%Y') AS data_uscita
    FROM cinema_ana_film, cinema_nazioni cn1
    WHERE cinema_ana_film.nazione_1=cn1.id_cinema_nazioni";

    $ris_query=mysql_query($query, $conn) or die(mysql_error());
    while($row_film=mysql_fetch_array($ris_query)){?>

    <?=$row_film['nazione1']?>

    <?php
    $query2="SELECT cinema_ana_film.*, cn2.nazione AS nazione2,
    DATE_FORMAT(data_uscita, '%d-%m-%Y') AS data_uscita
    FROM cinema_ana_film, cinema_nazioni cn2
    WHERE cinema_ana_film.nazione_2=cn2.id_cinema_nazioni";

    $ris_query2=mysql_query($query2, $conn) or die(mysql_error());
    $row_film2=mysql_fetch_array($ris_query2);
    ?>

    <?php
    if ($row_film['nazione_2'] > '0')
    {
    ?>
    / <?=$row_film2['nazione2']?>
    <?php
    }
    else
    {
    ?>

    <?php
    }
    }
    ?>
    [/php]up

    up


  • Super User

    ciao,
    dalla query che hai scritto estrae tutta la tabella con il relativo join ma stampa sempre e solo il primo record. Non hai messo nella condizione where qualcosa che faccia capire al db quale record desideri stampare.


  • User Attivo

    io vorrei che se sono popolati le due colonne "nazione_1" e "nazione_2" mi stampi entrambe, ma se è popolata solo "nazione_1" mi stampi solo la prima colonna.

    Se nel WHERE metto:

    WHERE cinema_ana_film.nazione_1=cn1.id_cinema_nazioni AND cinema_ana_film.nazione_2=cn2.id_cinema_nazioni

    mi stampa solo i record che hanno entrambe le colonne popolate e mi esclude tutti gli altri record

    up