• Home
  • Forum
  • Fare Web
  • PHP

Query group actor e film

  • Creatore Discussione Creatore Discussione Alex_70
  • Data di inizio Data di inizio 15 Apr 2020
  • Tag Tag
    php query msql
Prec.
  • 1
  • 2
Primo Prec. 2 di 2

f107

Utente Attivo
7 Ago 2012
206
6
18
Roma
  • 16 Apr 2020
  • #21
Ciao, non mollare!
Non limitarti a fare copia ed incolla degli esempi che ti ho fatto, soprattutto se copi esempi che ho scritto prima di vedere il tuo codice E comunque no, non intendevo quello, infatti l'esempio di codice che hai usato era utile se utilizzavi la prima query che ti avevo proposto, tu hai scelto la seconda, quindi non puoi utilizzare quella strategia, quella con il groupby nella query.

Ragioniamo, abbiamo cambiato la query che ora ci restituisce una riga per ogni attore che ha collaborato con l'actor_id che riceviamo in $_GET, e che per ogni attore "crea una nuova colonna" in maniera dinamica chiamata films, la quale grazie alla funzione GROUP_CONCAT concatena i vari film dove hanno collaborato i due attori.
Quindi otteniamo una cosa simile come risposta alla nostra query:

Fino a qui chiaro?

Ora ti basta modificare il blocco di codice dentro il ciclo while che già avevi e aggiungere la visualizzazione che preferisci del valore contenuto nella "colonna" creata con GROUP_CONCAT e chiamata films, puoi anche fare un semplice echo intanto per capire.

Se proprio non riesci posta come ti ha spiegato Max 1 il codice delle tue prove, e ti fornisco un esempio funzionante, ma prima prova secondo me ce la fai!

P.S. ti conviene usare le funzioni mysqli invece che mysql che sono deprecate da php5.5
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
  • 16 Apr 2020
  • #22
ti confesso che sono molto in difficolta' , la soluzione sicuramente sara' semplice ma io non ci arrivo

ho modificato questo codice

PHP:
$result = mysql_query( $query );
if (!$result)
die("mySQL error: ". mysql_error());
while( $row = mysql_fetch_array( $result ) ) : ?>

e il risultato e' veramente pessimo

 

f107

Utente Attivo
7 Ago 2012
206
6
18
Roma
  • 16 Apr 2020
  • #23
Chiedo scusa, pare che il dono della chiarezza Non ti scoraggiare che riproviamo a comunicare

f107 ha scritto:
Ora ti basta modificare il blocco di codice dentro il ciclo while che già avevi e aggiungere la visualizzazione che preferisci del valore contenuto nella "colonna" creata con GROUP_CONCAT e chiamata films, puoi anche fare un semplice echo intanto per capire.
Clicca per allargare...

provo ad essere più chiaro, con:

f107 ha scritto:
modificare il blocco di codice dentro il ciclo while
Clicca per allargare...
Intendo il codice che hai scritto, contenuto tra l'apertura del while, e la sua chiusura endwhile, quello che effettivamente stampa la visualizzazione che vedi nella pagina.

con questo:
f107 ha scritto:
Se proprio non riesci posta come ti ha spiegato Max 1 il codice delle tue prove, e ti fornisco un esempio funzionante, ma prima prova secondo me ce la fai!
Clicca per allargare...
Intendevo posta tutto il codice, o almeno quello utile che serve ad aiutarti (tutto quello che agisce con i dati: query + codice che si occupa di visualizzare contenuto nel blocco while), con quelle 4 linee che hai postato come facciamo a capire dove stai sbagliando? E come posso indicarti come fare? Posta tutto il codice che hai attualmente e te lo sistemo con i commenti.

L'unica cosa che posso dirti da quello che hai messo, è che probabilmente hai cambiato mysql_fetch_object (che usavi prima) con mysql_fetch_array, non hai cambiato come accedi ai dati di $row e quindi hai quel risultato.
Io ti ho consigliato una cosa diversa.

f107 ha scritto:
Ora ti basta modificare il blocco di codice dentro il ciclo while che già avevi e aggiungere la visualizzazione che preferisci del valore contenuto nella "colonna" creata con GROUP_CONCAT e chiamata films, puoi anche fare un semplice echo intanto per capire.
Clicca per allargare...


rimanendo in tema film...
Aiutami ad aiutarti
Clicca per allargare...
cit. Jerry Maguire
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
  • 16 Apr 2020
  • #24
ok posto il codice che parte dalla while , siccome avevo postato l'intero file pensavo che bastava

PHP:
$result = mysql_query( $query );
if (!$result)
 die("mySQL error: ". mysql_error()); 
while( $row = mysql_fetch_object( $result ) ) : ?> 



<table class="w3-table-all w3-margin-top" >

-------------------------------------------
<?php echo $row->year; ?>
-------------------------------------------

<tbody><tr>
      <td width="95px" align="center">
      <img src="image_upload/actor/uploads/<?=$row->nome?> (<?=$row->actor_id?>)/<?=$row->foto?>" width="80px" height="130px" style="border:4px solid #333333;" target="_blank">
      
      
<p class="w3-small"><a href="cinema.php?id=<?php echo $row->actor_id; ?>" target="_blank"><?php echo $row->nome; ?></a>
          
(<?php echo $row->credited; ?>)</p>
      </td>

<td>
          <ul class="w3-ul w3-hoverable w3-small">

<a href="film.php?id=<?php echo $row->film_id;?>"><?php echo $row->movie_title;?>&nbsp;(<?php echo $row->year; ?>)</a>
          
          </ul>
          
      </td>
    </tr>
 </tbody></table>


<? endwhile; ?>

</body></html>
 
Reactions: f107

f107

Utente Attivo
7 Ago 2012
206
6
18
Roma
  • 16 Apr 2020
  • #25
Continuo a darti qualche consiglio, spero sia gradito:
  • attenzione alla leggibilità del codice, prova ad indentare anche l'HTML, altrimenti è difficile leggere
  • ti avevo chiesto di mettere anche la query per vedere se avevi fatto altre modifiche, vabbè l'ho immaginata
  • ti ho chiesto di ripostare il codice, perché non so che modifiche nel mentre avevi effettuato
  • usa mysqli invece che mysql (sono simili, non è niente di impattante
  • i tag <ul> si aspettano tag <li> all'interno
Guida alla lettura:
  • Ti ho messo dei commenti che potrai leggere, in maiuscolo quelli importanti da leggere
    • quelli che iniziano "QUESTO NON PUò STARE QUI" sono per evidenziare un problema logico nella struttura che vuoi seguire (questi li ho dedotti, la struttura dell'HTML non è molto chiara, ma ho visto un <ul> e ho messo la lista dei film lì)
    • quello che inizia con "VUOI VEDERE DA TE?" è un esempio per farti vedere come puoi guardare il valore di una variabile (per uso di "debug").
    • Ho messo qualcosa che inizia con "STEP" per cercare di indicarti i step logici che fai
  • Non ho potuto testare il codice (non ho il tuo DB e altre cose), ma sono confidente che se c'è qualche problema (di nome delle variabili ecc) che tu riesca a risolverlo, in caso contrario chiedi senza problemi.
Ecco qui, facci sapere:
PHP:
<?php
// NON MI HAI MESSO LA QUERY CHE STAI UTILIZZANDO, IMMAGINO SIA QUESTA:
/*
// STEP DEFINISCO LA QUERY, questo mi serve per chiedere al db i dati che desidero
$query = "
SELECT
  `a`.`actor_id`,
  `a`.`nome`,
  `a`.`foto`,
  GROUP_CONCAT(CONCAT(`f`.`film_id`, ' || ', `f`.`movie_title`, ' || ', `f`.`year`, '||', `other_act`.`credited`)) as films
FROM
  `film_actor` `sel_act`
INNER JOIN `film_actor` `other_act` ON
  `other_act`.`film_id` = `sel_act`.`film_id`
  AND `other_act`.`actor_id` != `sel_act`.`actor_id`
INNER JOIN `actor` `a` ON
  `a`.`actor_id` = `other_act`.`actor_id`
INNER JOIN `film` `f` ON
  `f`.`film_id` = `other_act`.`film_id`
WHERE
  `sel_act`.`actor_id` = $actor_id
GROUP BY `a`.`actor_id`, `a`.`nome`
ORDER BY `f`.`year` DESC;
";
*/
// STEP ESEGUO LA QUERY, questo serve per inviare la richiesta al DB
$result = mysql_query( $query );

// STEP VERIFICO LA RISPOSTA, questo serve percontrollare che non ci siano problemi con la query appena eseguita
if (!$result)
die("mySQL error: ". mysql_error());

// STEP PROCESSO RISULTATI, con un loop while leggo i risultati della query eseguita
while( $row = mysql_fetch_object( $result ) ) :
    // DENTRO QUESTO BLOCCO DI CODICE SIAMO IN UN BLOCCO WHILE, blocco di codice eseguito in loop, avrà un esecuzione per ogni riga restituita dal DB
?>


<table class="w3-table-all w3-margin-top" >
-------------------------------------------
<?php // QUESTO NON PUò STARE QUI, OGNI FILM HA ANNO DIVERSO, SE VUOI VEDERLI RAGGRUPPATI QUESTO PUNTO NON HA SENSO echo $row->year; ?>
-------------------------------------------
<tbody><tr>
      <td width="95px" align="center">
      <img src="image_upload/actor/uploads/<?=$row->nome?> (<?=$row->actor_id?>)/<?=$row->foto?>" width="80px" height="130px" style="border:4px solid #333333;" target="_blank">
    
    
<p class="w3-small"><a href="cinema.php?id=<?php echo $row->actor_id; ?>" target="_blank"><?php echo $row->nome; ?></a>
        
(<?php // QUESTO NON PUò STARE QUI, OGNI FILM HA UN credited DIVERSO, SE VUOI VEDERLI RAGGRUPPATI QUESTO PUNTO NON HA SENSO echo $row->credited; ?>)</p>
      </td>
<td>

<?php
  
?>
          <ul class="w3-ul w3-hoverable w3-small">
          <!-- <a href="film.php?id=<?php echo $row->film_id;?>"><?php echo $row->movie_title;?>&nbsp;(<?php echo $row->year; ?>)</a>-->
            <?php
                // QUI STAMPI I FILM, DEVO OPERARE QUI! YEEEEH
                // studiando la query vedo che i film aggregati (separati da virgola) sono nella "colonna" chiamata films, vedo inoltre che la struttura è per ogni film: "FILM_ID || MOVIE_FILM || YEAR || CREDITED"

                // VUOI VEDERE DA TE? TOGLI IL COMMENTO AD UNA DELLE DUE RIGHE CHE INIZIANO CON die( CHE TI INTERESSA
                // die(var_dump($row)); // visualizza tutti i valori dentro $row
                // die(var_dump($row->films)); // visualizza tutti i valori dentro $row "colonna" films

                // procedo alla visualizzazione dei film
                // separo la stringa per ",", ottengo così un array di tutti i film
                foreach(explode(',', $row->films) as $film_data):
                    // separo $film_data, contentente "FILM_ID || MOVIE_FILM || YEAR || CREDITED" per il separatore " || "
                    list($film_id, $movide_film, $year, $credited) = explode(' || ', $film_data);
                    // DENTRO QUESTO BLOCCO DI CODICE PUOI METTERE year E credited
            ?>
                <li>
                    <a href="film.php?id=<?php echo $film_id;?>">
                        <?php echo $movie_title;?>&nbsp;(<?php echo $year; ?>)
                    </a>
                </li>
            <?php
                // FINE BLOCCO foreach
                endforeach;
            ?>
        
          </ul>
        
      </td>
    </tr>
</tbody></table>

<?php
    // FINE BLOCCO WHILE
    endwhile;
?>
</body></html>

Spero di essere stato chiaro
 
Ultima modifica: 17 Apr 2020
Reactions: Tommy03 and Alex_70

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
  • 16 Apr 2020
  • #26
Wow , io non potevo fare questo, sono ancora molto indietro per arrivare a questi livelli, forse un giorno
i consigli sono sempre accettati, specialmente se sono utili

che dire, non mi aspettavo veramente tutto questo,
di solito ho notato in molte persone una mania di grandezza con chi non ne capisce come loro,
se sei uno che non capisci allora la loro prima risposta e' "STUDIA" e poi ne riparliamo, ma non e' questo l'approccio migliore
per far imparare un'altro, f107 lo ha dimostrato, prendete esempio da lui

grazie tante di cuore f107 (o ti devo chiamare Matteo?)

ecco il risultato finale
(ho migliorato anche la grafica aggiungendo la class bootstrap che colora e inserendo la foto che ovviamente e' quella dell'id principale)

 
Ultima modifica: 16 Apr 2020
Reactions: f107
E

eliseufeu

Nuovo Utente
6 Feb 2020
2
0
1
  • 22 Apr 2020
  • #27
Mi dispiace di non essere un professionista del settore, ma sto guardando il blog e sto imparando da voi. Ottimo lavoro a tutti! Inoltre vorrei chiedervi cosa mi consigliate per ottenere un codice migliore in php
att: pelispedia
 
Prec.
  • 1
  • 2
Primo Prec. 2 di 2
Devi accedere o registrarti per poter rispondere.

Discussioni simili

A
Sottoquery con group by per mese
  • AndreaCerre
  • 20 Apr 2021
  • MySQL
Risposte
0
Visite
2K
MySQL 20 Apr 2021
AndreaCerre
A
M
Query group by
  • Max61
  • 25 Feb 2016
  • PHP
Risposte
4
Visite
993
PHP 26 Feb 2016
Max61
M
M
Ordinare i valori in query group by
  • Max61
  • 18 Feb 2016
  • PHP
Risposte
4
Visite
2K
PHP 20 Feb 2016
Max61
M
C
2 query sulla stessa tabella + group by
  • Cloude
  • 18 Apr 2013
  • MySQL
Risposte
6
Visite
3K
MySQL 19 Apr 2013
Cloude
C
M
Sintassi query update
  • Max61
  • 18 Lug 2024
  • PHP
Risposte
1
Visite
2K
PHP 23 Apr 2025
webest
C
In VBA estrapolare i dati di una Query e memorizzarli in variabili.
  • Ciccio_54
  • 14 Lug 2024
  • MS Access
Risposte
0
Visite
3K
MS Access 14 Lug 2024
Ciccio_54
C
query su due tabelle e dati doppioni
  • max75
  • 16 Gen 2024
  • MS Access
Risposte
2
Visite
2K
MS Access 17 Gen 2024
max75
E
Aiuto per query
  • Emanuele85
  • 25 Nov 2023
  • PHP
Risposte
8
Visite
3K
PHP 14 Dic 2023
marino51
E
Query differenza tra tabelle
  • Emanuele85
  • 3 Set 2023
  • MySQL
Risposte
5
Visite
2K
MySQL 4 Set 2023
Emanuele85
E
E
Query Alias
  • Emanuele85
  • 3 Giu 2023
  • PHP
Risposte
4
Visite
2K
PHP 4 Giu 2023
Emanuele85
E
T
Query con date
  • tigre2209
  • 27 Mag 2023
  • MS Access
Risposte
1
Visite
1K
MS Access 31 Mag 2023
marino51
K
Inserimento query Errore 1366
  • Kiko74b
  • 6 Mag 2023
  • PHP
Risposte
4
Visite
1K
PHP 7 Mag 2023
marino51
D
Jquery - modifica elemenento onlick
  • Dantevil
  • 1 Apr 2023
  • jQuery
Risposte
1
Visite
2K
jQuery 2 Apr 2023
WmbertSea
E
Problema jquery Success
  • Emanuele85
  • 15 Gen 2023
  • jQuery
Risposte
2
Visite
2K
jQuery 19 Gen 2023
marino51
L
Query e selezione DB con $_POST
  • Luigi1972
  • 18 Ott 2022
  • PHP
Risposte
2
Visite
970
PHP 19 Ott 2022
Luigi1972
L
M
query update e delete
  • mioser
  • 19 Ago 2022
  • PHP
Risposte
0
Visite
812
PHP 19 Ago 2022
mioser
M
R
jquery che cambia css di un elemento non mi funziona sulla pagina caricata da ajax
  • robyspider77
  • 3 Ago 2022
  • Ajax
Risposte
5
Visite
3K
Ajax 4 Ago 2022
robyspider77
R
E
PHP & jQuery
  • edo64
  • 16 Lug 2022
  • PHP
Risposte
8
Visite
2K
PHP 31 Lug 2022
WmbertSea
A
media degli elementi estratti da una query
  • AndreaCerre
  • 20 Giu 2022
  • MySQL
Risposte
0
Visite
1K
MySQL 20 Giu 2022
AndreaCerre
A
S
  • Bloccata
Passare query o utm alla pagina successiva
  • smg85
  • 19 Giu 2022
  • Domini
Risposte
1
Visite
1K
Domini 19 Giu 2022
Max 1
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?