Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    437

    While multiplo con dati associati.

    Buongiorno!

    Sto facendo uno script che mi peschi gli articoli correlato a quello che si sta leggendo su un sito che vende i dvd online.
    Ho i questi campi nel database

    titolo
    titolo_originale
    attori (separati da virgola in un unico campo per ogni film es. attore1, attore2, attore2)
    registi (anche questi separati da virgola nei rari casi in cui ce ne piu di uno)

    Ho pensato di farlo in questo modo

    Ovviamente gli explode non gli scrivo.

    Ho reato 5-6 while che pensano i risultato con un limite di 2-3 risultati nei quali inserisco where id != $_GET['id'] cosi non metto nei result l'articolo attuale.

    ecco i while che eseguo

    1 - regexp attore1 + regista1 nei appositi campi.
    2 - prime 2 parole del titolo e del titolo originale.
    3 - prima parola titolo + attore 1
    4 - attore 1
    5 - attore 2
    6 - regista

    e poi altri con tutti con un controllo dei numero dei risultati per non superare i 10 suggerimenti.
    Giunti qui tutto funziona abbastanza bene con suggerimenti verosimili.

    Il problema e che ogni 1 di questi while lavora in modo indipendente e mi capita quasi sempre di trovare film doppi.

    La soluzione è semplice inserire nelle query dei while successivi where id NOT in (id già utilizzati nei while precedenti) Ma non so come poterlo fare.

    Come posso fare qualcosa di simile:

    Codice PHP:
    SELECT FROM film WHERE titolo LIKE \"%$tgl_1%$tgl_2%\" and NOT id = \"$id\" ORDER by rand() limit 3");

    while {

    qui stampo i risultati e credo la lista dei id gia utilizzati.

    $id_da_ignorare "$id, "


    il prossimo

    Codice PHP:
    SELECT FROM film WHERE attori regexp \"$attore1\" and id NOT IN (\"$id_da_ignorare\") ORDER by rand() limit 3");

    while {

    qui stampo i risultati e credo la lista dei id gia utilizzati.

    $id_da_ignorare2 "$id, "

    }

    $id_da_ignorare3 "$id_da_ignorare $id_da_ignorare2

    La Domanda è come posso passare la varibile $id_da_ignorare alla query successiva che si trova fuori dal ciclo?

  2. #2
    Non ci ho capito assolutamente nulla ma credo che dovresti studiare un po' di SQL e soprattutto le JOIN.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Ovviamente non lo puoi fare, se la query sta fuori dal ciclo, una volta che l'hai eseguita basta, non si esegue più, quindi non puoi passargli altri valori.
    Dovresti metterla dentro il ciclo, così puoi passargli la variabile $id_da_ignorare sempre aggiornata, ma ovviamente questo implica che si eseguirà una query ad ogni ciclo.

    Oppure, come consigliato da satifal, ti prendi un po' di tempo e studi SLQ e le JOIN, così probabilmente otterrai un codice più ottimizzato.

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    437
    Grazie delle risposte. non ci hai capito assolutamente niente eh.. sembra che avete la trottola, ho abbandonato questo forum mesi fa proprio per questo. Cmq grazie se non e fattibile in php seguiro il tuo suggerimento e faro con join.

  5. #5
    Quote Originariamente inviata da mario19xx Visualizza il messaggio
    Grazie delle risposte. non ci hai capito assolutamente niente eh.. sembra che avete la trottola, ho abbandonato questo forum mesi fa proprio per questo. Cmq grazie se non e fattibile in php seguiro il tuo suggerimento e faro con join.
    Beh visto lo stentato italiano e la qualità del codice scritto non è stata una grave perdita!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    437
    ma che codice di devo fornire se a me serve un idea su come fare una cosa.. non una cosa fatta! poi se tu hai difficoltà a capire invece di rispondere non ci capisco nulla, non rispondere proprio che fai piu bella figura

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    437
    Per puro caso oggi ho trovato il modo di richiamare le variabili del ciclo while anche fuori dal ciclo. Quindi si PUO FARE!

  8. #8
    Quote Originariamente inviata da mario19xx Visualizza il messaggio
    Per puro caso oggi ho trovato il modo di richiamare le variabili del ciclo while anche fuori dal ciclo. Quindi si PUO FARE!
    Peccato che fuori dal while $id_da_ignorare varrà sempre lo stesso valore e cioè l'utimo valore letto nel ciclo precedente
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    437
    esiste un metodo per richiamare le variabili anche fuori dal ciclo. per puro caso mi è capitato di scoprire che si puo puo anche fuori dal while. per il momento ho messo in pausa la relizzazione di questo script perche ho un lavoro piu importante. Cmq entro un paio di settimane pubblico lo script completo cosi vedremo chi ha ragione

  10. #10
    Quote Originariamente inviata da mario19xx Visualizza il messaggio
    Cmq entro un paio di settimane pubblico lo script completo cosi vedremo chi ha ragione

    Posta...posta!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.