Domanda successiva da: aggiunta di sum da 2 tabelle diverse
Ho creato 3 tabelle: videos
members
video_member
Il terzo viene utilizzato per 'colbind' i primi 2 tavoli, in quanto un membro può appartenere a molti video e un video può avere molti membri.
Avevo solo una colonna dei members
nella tabella dei video e inserivo i membri in quel modo:
video_id | members 1 | Tom,Dan 2 | Casey,Zack,Bob 3 | Tom,Casey,Dan,Zack 4 | Zack,Bob,Dan
Nel mio progetto PHP interrogherei i dati dalla tabella dei video e, utilizzando il motore dei templates di Twig, utilizzerei un ciclo for per esaminare each row e creare una pagina simile a una galleria. Ogni 'box' con una miniatura e sotto di essa i dati della tabella dei video.
Avevo bisogno di visualizzare i membri individualmente in modo che ognuno avesse il proprio link. Quindi vorrei dividere la string con virgole. (es: Casey, Zack, Bob) in un arrays quindi lo ha semplicemente fatto.
Con il mio nuovo formato nell'image che ho postato, come potrei fare per mostrare i membri?
Quello che ho fatto: questo è quello che ho nel mio video.php
$sql = 'SELECT * FROM videos'; $sql2 = 'select v.video_id "v_id", m.name "name" from videos v, video_member b, members m where b.video_id = v.video_id and b.member_id = m.member_id'; $result = $mysqli->query($sql); $result2 = $mysqli->query($sql2); echo $twig->render('video.html', arrays('videos'=> $result, 'members' => $result2));
Quindi utilizzo il primo risultato per generare i dati dalla tabella dei video nel mio video.html
{% for v in videos %} *html layout* {% endfor %}
dal momento che ho un ciclo for che passa attraverso each row dai video, ho aggiunto questo all'interno del ciclo
{% for m in members %} {% if v.video_id == m.v_id %} <a href='{{memberurl}}/{{m.name}}/'>{{m.name}}</a> {% endif %} {% endfor %}
Quindi l'idea è: each volta che scorre una row dai videos
, controlla video_id
e v_id(fk)
nella nuova tabella creata con my $ sql2 e se ci sono corrispondenze mostrerà quelle di "nome".
$ Sql2:
In questo momento sta funzionando in questo modo, ho solo bisogno di implementare le virgole al momento ma …
Sto principalmente imparando a creare e utilizzare dati normalizzati e ho voluto sapere se sono sulla strada giusta perché voglio implementarlo con tag e articoli futuri. È questo il modo corretto / migliore per visualizzare i membri?
Sono nuovo a molto di questo e each volta che imparo qualcosa di nuovo mi sento benissimo, grazie per qualsiasi aiuto!
video.html
Nella maggior parte dei casi, si restituiscono tutti i dati che si desidera in una singola query e si inseriscono nella pagina.
Ad esempio, puoi eseguire una singola query in questo modo: $sql2 = 'select * from videos v, video_member b, members m where b.video_id = v.video_id and b.member_id = m.member_id';
e quindi nel tuo codice di front-end includi la logica quando l'ID video cambia per disegnare la tua prossima casella video.
Quello che stai facendo è unire i due dataset nel tuo model; questo è inefficiente, specialmente se hai domande complesse o quando hai un filter (ad esempio "videoName come 'Ferris%').