Visualizzazione risultati 1 fino 8 di 8

Discussione: prelevare un dato della prima query

  1. #1
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito prelevare un dato della prima query

    Salve a tutti

    questo quesito non so come risolverlo, e' un po complicato per me (al momento)

    c'e' una pagina php chiamata film. php, dentro questa pagina ci sono 3 query

    1) processa dei dati del film prelevando il tutto tramite id

    Codice PHP:
    $film_id = $_GET["id"];


    $query = "
    SELECT
    movies.movieid,
    movies.title,
    movies.YEAR,
    movies.imdbid,
    FROM
    movies
    .
    WHERE
    movies.movieid =
    $film_id


    2) processa i dati degli attori connessi al film


    Codice PHP:
    $film_id = $_GET["id"];


    $query = "
    SELECT
    actors.name,
    movies2actors.as_character,
    movies2actors.movieid,
    movies2actors.actorid,
    actors.imdbid,
    actors.actorid,
    actors.birthday,
    movies.year,

    CAST(SUBSTRING(as_character FROM '<(\d+)>') AS DECIMAL) AS numero
    FROM
    movies2actors
    INNER JOIN actors ON movies2actors.actorid = actors.actorid
    INNER JOIN movies ON movies2actors.movieid = movies.movieid
    WHERE
    movies2actors.movieid =
    $film_id

    ORDER BY
    numero ASC

    "
    ;
    3) questa e' quella da risolvere, dovrebbe prelevare gli episodi della serie, ma siccome questa non e' connessa a movies.movieid bisogna effettuare una ricerca diversa

    esempio questa:

    titolo della scheda principale

    "Space: 1999" (1975)

    per prelevare gli episodi connessi alla scheda bisogna effettuare una query cosi

    Codice PHP:
    WHERE
    movies
    .title ILIKE ('%space: 1999%')




    piu' correttamente dovrebbe essere cosi, perche' se no cerca altri titoli

    Codice PHP:
    WHERE
    movies
    .title ILIKE ('%"space: 1999"%')
    ma la query mi segnala errori

    il problema e' questo, dovrei prelevare il titolo movies.title della prima query e passarlo alla terza query

    ma siccome ogni query ha il suo foreach e la fine come passare questo?

    dovvrebbe essere cosi

    Codice PHP:
    $query = "
    SELECT
    movies.movieid,
    movies.title,
    movies.year,
    movies.imdbid,
    CAST ( SUBSTRING ( movies.title FROM '#(\d+\.\d+)' ) AS DECIMAL ) AS numero // questo da risolvere
    FROM
    movies
    WHERE
    movies.title ILIKE ('%space: 1999%') // [B]movies.title[/B] della prima query
    ORDER BY
    numero ASC



    "
    ;
    "Space: 1999" (1975) pero' dovrebbe essere ripulito cosi per passarlo alla terza query, senza anno e parentesi

    "Space: 1999"

    si accettano consigli

    da questo screen si capisce cosa vorrei ottenere, adesso

    Codice PHP:
    movies.title ILIKE ('%space: 1999%')
    e' messo fisso quindi e' visibile in tutte le pagine, ma poi essendo variabile dovrebbe essere connesso alla schea

    attenzione, il titolo da prelevare deve cominciare e chiudere con doppi apici
    "Space: 1999"
    , questo vuol dire che e' una serie tv,
    perche' film.php visualizza anche le schede dei film, e quindi senza episodi



    spero di essermi spiegato

    Ultima modifica di blackskyisback : 01-12-2022 alle ore 07.47.05

  2. #2
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    la soluzione era dietro l'angolo
    $_SESSION

    query 1

    Codice PHP:
    session_start(); //posizionare in alto del codice

    $z=$row->title;
    $_SESSION['title'] =$z;
    query 3

    Codice PHP:
    session_start() ;
    $x=$_SESSION['title'];
    solo che l'espressione regolare non e' corretta

    "Space: 1999" (1975)

    Codice PHP:
    preg_match('/.*""*/', $x, $risultato);
    $isultato = $risultato[0];
    mi ritorna questo

    array(1) { [0]=> string(13) ""Space: 1999"" }
    ma vorrei ottenere questo, con doppi apici

    "Space: 1999"
    e poi inserirlo nella query

    Codice:
    WHERE
    	movies.title ILIKE ('%$risultato%')

  3. #3
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    errore mio, mancava una r nella variabile

    $risultato*=*$risultato[0];*

  4. #4
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    guardate il post precedente, sono presenti gli asterischi, e questo che genera l'errore nel codice quando sono formattati

  5. #5
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    caspita, ogni volta ..

    il codice funziona e trova gli episodi abbinati alla serie tv, ma... ci sono problemi

    come ho spiegato sopra gli espisodi hanno il titolo che e' compreso tra doppi apici, una cosa simile

    "The Bionic Woman" (1976) {Jaime's Shield: Part 2 (#2.11)}

    ma se invece degli episodi e' presente un film nella scheda allora cominciano i guai, la query comincia ad effettuare la ricerca e il browser va in crash, quindi si dovrebbe evitare questo

    come impostare il codice che se nel titolo sono presenti i doppi apici esegui la ricerca e in caso contrario restituisci zero risultati?

    if else ci sara' sicuramente, ma il resto del codice?

    Codice PHP:

    session_start
    () ;
    $x=$_SESSION['title'];

    //echo $x;

    preg_match('/.*".*"/', $x, $risultato);
    $risultato = $risultato[0];

    $query = "
    SELECT
    ...
    FROM
    movies
    WHERE
    movies.title ILIKE ('%
    $risultato%')
    Ultima modifica di blackskyisback : 01-12-2022 alle ore 20.30.07

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,681

    Predefinito

    In generale, quando esegui una query utilizzando variabili, ti consiglio sempre di eseguire l'escape del contenuto.

    Non so quale interfaccia utilizzi per eseguire la query. In generale ti consiglierei di utilizzare i preparement statements.

    Altrimenti, con mysqli va utilizzato mysqli::real_escape_string.
    Con PDO, PDO::quote.

    Ciao!

  7. #7
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    In generale, quando esegui una query utilizzando variabili, ti consiglio sempre di eseguire l'escape del contenuto.

    Non so quale interfaccia utilizzi per eseguire la query. In generale ti consiglierei di utilizzare i preparement statements.

    Altrimenti, con mysqli va utilizzato mysqli::real_escape_string.
    Con PDO, PDO::quote.

    Ciao!
    ciao alemoppo

    ho spiegato sopra perche' nella ricerca sono necessari i doppi apici

    attenzione, il titolo da prelevare deve cominciare e chiudere con doppi apici
    "Space: 1999"
    , questo vuol dire che e' una serie tv,
    perche' film.php visualizza anche le schede dei film, e quindi senza episodi
    leggi sopra, all'inizio

    comunque ho risolto la questione, sia per le serie tv che per i film
    Ultima modifica di blackskyisback : 01-12-2022 alle ore 21.19.13

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,681

    Predefinito

    Citazione Originalmente inviato da blackskyisback Visualizza messaggio
    ho spiegato sopra perche' nella ricerca sono necessari i doppi apici
    Non ho capito cosa centra con il tuo problema, il problema è il singolo apice che rompe la query. In ogni caso va usato quanto indicato sopra.

    Citazione Originalmente inviato da blackskyisback Visualizza messaggio
    comunque ho risolto la questione, sia per le serie tv che per i film
    Ottimo!

    Ciao!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •