SQL join weergeven in HTML
Ik heb 2 tabellen met de gegevens.
Nu wil ik ze in HTML weergeven, en dat werkt perfect.
Maar nu krijg ik voor elke rij in tabel "social" een aparte weergave.
De bedoeling is dat bij "FACE" alle info van "social" word weergegeven.
Hier staat een voorbeeld van hoe het nu is.
http://www.thetimberwolves.nl/team2.php
FACE is gelijk aan Social media.
Kan iemand mij helpen dit op te lossen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
/**
* @author Ben Janssen
* @copyright 2012
*/
ini_set('display_errors',1);
error_reporting(E_ALL);
include 'cfg/cfg.php';
mysql_select_db($db,$con);
$sql = 'SELECT * FROM team,social WHERE social.tid=team.id LIMIT 0, 100 ';
$rst = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($rst))
{
echo ('
<tr id="PIC"><td class="SB2" rowspan="9"><img src="../img/ttwm/'.$row['img'].'" alt="MBRpic" class="pic"/></td></tr>
<tr id="NAAM"><td class="SB3">Naam :</td><td class="SB">'.$row['nm'].'</td></tr>
<tr id="CALL"><td class="SB3">Call sign :</td><td class="SB">'.$row['fn'].'</td></tr>
<tr id="TYPE"><td class="SB3">Type speler :</td><td class="SB">'.$row['ts'].'</td></tr>
<tr id="RANK"><td class="SB3">Team rank :</td><td class="SB">'.$row['tr'].'</td></tr>
<tr id="SINDS"><td class="SB3">Paintball sinds :</td><td class="SB">'.$row['ps'].'</td></tr>
<tr id="MARKER"><td class="SB3">Favorite marker :</td><td class="SB">'.$row['fm'].'</td></tr>
<tr id="INTREST"><td class="SB3">Andere intresse :</td><td class="SB">'.$row['ai'].'</td></tr>
<tr id="FACE"><td class="SB3">Social media :</td><td class="SB"><a href="'.$row['tid'].'" target="_blank">
<img alt="Social media" style="border:0px" src="../img/'.$row['pic'].'"/></a></td></tr>
<tr><td colspan="3"> </td></tr>
');
}
?>
/**
* @author Ben Janssen
* @copyright 2012
*/
ini_set('display_errors',1);
error_reporting(E_ALL);
include 'cfg/cfg.php';
mysql_select_db($db,$con);
$sql = 'SELECT * FROM team,social WHERE social.tid=team.id LIMIT 0, 100 ';
$rst = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($rst))
{
echo ('
<tr id="PIC"><td class="SB2" rowspan="9"><img src="../img/ttwm/'.$row['img'].'" alt="MBRpic" class="pic"/></td></tr>
<tr id="NAAM"><td class="SB3">Naam :</td><td class="SB">'.$row['nm'].'</td></tr>
<tr id="CALL"><td class="SB3">Call sign :</td><td class="SB">'.$row['fn'].'</td></tr>
<tr id="TYPE"><td class="SB3">Type speler :</td><td class="SB">'.$row['ts'].'</td></tr>
<tr id="RANK"><td class="SB3">Team rank :</td><td class="SB">'.$row['tr'].'</td></tr>
<tr id="SINDS"><td class="SB3">Paintball sinds :</td><td class="SB">'.$row['ps'].'</td></tr>
<tr id="MARKER"><td class="SB3">Favorite marker :</td><td class="SB">'.$row['fm'].'</td></tr>
<tr id="INTREST"><td class="SB3">Andere intresse :</td><td class="SB">'.$row['ai'].'</td></tr>
<tr id="FACE"><td class="SB3">Social media :</td><td class="SB"><a href="'.$row['tid'].'" target="_blank">
<img alt="Social media" style="border:0px" src="../img/'.$row['pic'].'"/></a></td></tr>
<tr><td colspan="3"> </td></tr>
');
}
?>
Wat gaat er precies mis...?
Nu word die persoon 2x weergegeven ipv 1x.
1e sectie word voor alles wat maar 1x moet worden geteld, in dit geval zou dit de naam afbeelding enz....... zijn.
2e sectie komt dus je social media linken en plaatje te staan.
Even voorbeeld:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$i=1;
while($row = mysql_fetch_assoc($result))
{
if($i == 1)
{
// Hier alles neer zetten wat maar 1x getoont hoeft te worden.
// Voorbeeld je Plaatje, naam enz.........
} // end of if
// Hier zet je dus de Social Media linken en plaatjes.
//hoog de $i op voor het volgende record
$i++;
} // end of while()
?>
$i=1;
while($row = mysql_fetch_assoc($result))
{
if($i == 1)
{
// Hier alles neer zetten wat maar 1x getoont hoeft te worden.
// Voorbeeld je Plaatje, naam enz.........
} // end of if
// Hier zet je dus de Social Media linken en plaatjes.
//hoog de $i op voor het volgende record
$i++;
} // end of while()
?>
Verder:
- Let op Foutafhandeling bij je query. Je gebruikt nu or die().
Dit is iets uit de stenen tijd perk en word niet meer gebruikt. Komt dus beetje op neer met or die() op deze zin: Als jij iets fout doet, ga je dan ook gelijk dood?
- In je query gebruik je nu SELECT *. Je kunt beter op de plek van de * de velden compleet benoemen. Wat je nu doet is telkens alles ophalen wat in de tabel zet. Nu heb je misschien alles wel nodig, alleen is je query nu onduidelijk welke velden je nu gebruikt en hoe ze worden genoemd. Wat inhoud dat je bijna altijd in je database moet kijken welke benaming je hebt gebruikt. Tevens is velden benoemen ook snelheids winst van je query.
Gewijzigd op 26/06/2012 11:57:05 door Frank WD
heb nu de volgende code.
ik krijg nu alleen de eerste te zien, en een hoop aparte regels + een foutmelding waar ik niks van snap.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
/**
* @author Ben Janssen
* @copyright 2012
*/
ini_set('display_errors',1);
error_reporting(E_ALL);
include 'cfg/cfg.php';
mysql_select_db($db,$con);
$sql = 'SELECT * FROM team,social WHERE social.tid=team.id LIMIT 0, 100 ';
$rst = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($rst))
{
if($i == 1)
{
echo('
<tr id="PIC"><td class="SB2" rowspan="9"><img src="../img/ttwm/'.$row['img'].'" alt="MBRpic" class="pic"/></td></tr>
<tr id="NAAM"><td class="SB3">Naam :</td><td class="SB">'.$row['nm'].'</td></tr>
<tr id="CALL"><td class="SB3">Call sign :</td><td class="SB">'.$row['fn'].'</td></tr>
<tr id="TYPE"><td class="SB3">Type speler :</td><td class="SB">'.$row['ts'].'</td></tr>
<tr id="RANK"><td class="SB3">Team rank :</td><td class="SB">'.$row['tr'].'</td></tr>
<tr id="SINDS"><td class="SB3">Paintball sinds :</td><td class="SB">'.$row['ps'].'</td></tr>
<tr id="MARKER"><td class="SB3">Favorite marker :</td><td class="SB">'.$row['fm'].'</td></tr>
<tr id="INTREST"><td class="SB3">Andere intresse :</td><td class="SB">'.$row['ai'].'</td></tr>
');
} // end of if
// Hier zet je dus de Social Media linken en plaatjes.
//hoog de $i op voor het volgende record
$i++;
echo ('
<tr id="FACE"><td class="SB3">Social media :</td><td class="SB"><a href="'.$row['tid'].'" target="_blank">
<img alt="Social media" style="border:0px" src="../img/'.$row['pic'].'"/></a></td></tr>
<tr><td colspan="3"> </td></tr>
');
} // end of while()
?>
/**
* @author Ben Janssen
* @copyright 2012
*/
ini_set('display_errors',1);
error_reporting(E_ALL);
include 'cfg/cfg.php';
mysql_select_db($db,$con);
$sql = 'SELECT * FROM team,social WHERE social.tid=team.id LIMIT 0, 100 ';
$rst = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($rst))
{
if($i == 1)
{
echo('
<tr id="PIC"><td class="SB2" rowspan="9"><img src="../img/ttwm/'.$row['img'].'" alt="MBRpic" class="pic"/></td></tr>
<tr id="NAAM"><td class="SB3">Naam :</td><td class="SB">'.$row['nm'].'</td></tr>
<tr id="CALL"><td class="SB3">Call sign :</td><td class="SB">'.$row['fn'].'</td></tr>
<tr id="TYPE"><td class="SB3">Type speler :</td><td class="SB">'.$row['ts'].'</td></tr>
<tr id="RANK"><td class="SB3">Team rank :</td><td class="SB">'.$row['tr'].'</td></tr>
<tr id="SINDS"><td class="SB3">Paintball sinds :</td><td class="SB">'.$row['ps'].'</td></tr>
<tr id="MARKER"><td class="SB3">Favorite marker :</td><td class="SB">'.$row['fm'].'</td></tr>
<tr id="INTREST"><td class="SB3">Andere intresse :</td><td class="SB">'.$row['ai'].'</td></tr>
');
} // end of if
// Hier zet je dus de Social Media linken en plaatjes.
//hoog de $i op voor het volgende record
$i++;
echo ('
<tr id="FACE"><td class="SB3">Social media :</td><td class="SB"><a href="'.$row['tid'].'" target="_blank">
<img alt="Social media" style="border:0px" src="../img/'.$row['pic'].'"/></a></td></tr>
<tr><td colspan="3"> </td></tr>
');
} // end of while()
?>
Toevoeging op 26/06/2012 12:13:42:
Wat betreft SELECT *, is een goeie tip, zal er in het vervolg rekening mee houden.
Echter heeft het nu weinig zin denk ik, omdat alles opgehaald dient te worden.
Het maakt dus niet echt uit welke namen er staan, omdat alles nodig is.
Als je mijn code met jou code vergelijkt zie je dat je een stukje code boven de while bent vergeten. code zou moeten zijn
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
/**
* @author Ben Janssen
* @copyright 2012
*/
ini_set('display_errors',1);
error_reporting(E_ALL);
include 'cfg/cfg.php';
mysql_select_db($db,$con);
$sql = 'SELECT * FROM team,social WHERE social.tid=team.id LIMIT 0, 100 ';
$rst = mysql_query($sql) or die(mysql_error());
$i=1;
while($row = mysql_fetch_array($rst))
{
if($i == 1)
{
echo'
<tr id="PIC"><td class="SB2" rowspan="9"><img src="../img/ttwm/'.$row['img'].'" alt="MBRpic" class="pic"/></td></tr>
<tr id="NAAM"><td class="SB3">Naam :</td><td class="SB">'.$row['nm'].'</td></tr>
<tr id="CALL"><td class="SB3">Call sign :</td><td class="SB">'.$row['fn'].'</td></tr>
<tr id="TYPE"><td class="SB3">Type speler :</td><td class="SB">'.$row['ts'].'</td></tr>
<tr id="RANK"><td class="SB3">Team rank :</td><td class="SB">'.$row['tr'].'</td></tr>
<tr id="SINDS"><td class="SB3">Paintball sinds :</td><td class="SB">'.$row['ps'].'</td></tr>
<tr id="MARKER"><td class="SB3">Favorite marker :</td><td class="SB">'.$row['fm'].'</td></tr>
<tr id="INTREST"><td class="SB3">Andere intresse :</td><td class="SB">'.$row['ai'].'</td></tr>
';
} // end of if
// Hier zet je dus de Social Media linken en plaatjes.
echo '
<tr id="FACE"><td class="SB3">Social media :</td><td class="SB"><a href="'.$row['tid'].'" target="_blank">
<img alt="Social media" style="border:0px" src="../img/'.$row['pic'].'"/></a></td></tr>
<tr><td colspan="3"> </td></tr>
';
//hoog de $i op voor het volgende record
$i++;
} // end of while()
?>
/**
* @author Ben Janssen
* @copyright 2012
*/
ini_set('display_errors',1);
error_reporting(E_ALL);
include 'cfg/cfg.php';
mysql_select_db($db,$con);
$sql = 'SELECT * FROM team,social WHERE social.tid=team.id LIMIT 0, 100 ';
$rst = mysql_query($sql) or die(mysql_error());
$i=1;
while($row = mysql_fetch_array($rst))
{
if($i == 1)
{
echo'
<tr id="PIC"><td class="SB2" rowspan="9"><img src="../img/ttwm/'.$row['img'].'" alt="MBRpic" class="pic"/></td></tr>
<tr id="NAAM"><td class="SB3">Naam :</td><td class="SB">'.$row['nm'].'</td></tr>
<tr id="CALL"><td class="SB3">Call sign :</td><td class="SB">'.$row['fn'].'</td></tr>
<tr id="TYPE"><td class="SB3">Type speler :</td><td class="SB">'.$row['ts'].'</td></tr>
<tr id="RANK"><td class="SB3">Team rank :</td><td class="SB">'.$row['tr'].'</td></tr>
<tr id="SINDS"><td class="SB3">Paintball sinds :</td><td class="SB">'.$row['ps'].'</td></tr>
<tr id="MARKER"><td class="SB3">Favorite marker :</td><td class="SB">'.$row['fm'].'</td></tr>
<tr id="INTREST"><td class="SB3">Andere intresse :</td><td class="SB">'.$row['ai'].'</td></tr>
';
} // end of if
// Hier zet je dus de Social Media linken en plaatjes.
echo '
<tr id="FACE"><td class="SB3">Social media :</td><td class="SB"><a href="'.$row['tid'].'" target="_blank">
<img alt="Social media" style="border:0px" src="../img/'.$row['pic'].'"/></a></td></tr>
<tr><td colspan="3"> </td></tr>
';
//hoog de $i op voor het volgende record
$i++;
} // end of while()
?>
Wat betreft die *. Je kan beter nooit die * gebruiken ook al heb je alles nodig.
EDIT:
Op onderstaande manier is je query gewoon veel duidelijke voor je zelf maar ook voor een mede scripter die een aanpassing moet doen. Wat ik ook nog mee wil geven. Probeer zoveel mogelijk volledige namen te gebruiken en geen afkortingen. Want weet je over een half jaar nog wat velden ts, tr of ai betekenen en welke gegevens daar bij horen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$sql = 'SELECT
img,
nm,
fn,
ts,
tr,
ps,
fm,
ai,
pic
FROM
team,
social
WHERE
social.tid=team.id
LIMIT 0, 100 ';
?>
$sql = 'SELECT
img,
nm,
fn,
ts,
tr,
ps,
fm,
ai,
pic
FROM
team,
social
WHERE
social.tid=team.id
LIMIT 0, 100 ';
?>
Gewijzigd op 26/06/2012 12:31:51 door Frank WD
je kunt het hier zien.
http://www.thetimberwolves.nl/team2.php
Toevoeging op 26/06/2012 12:50:10:
Ik ben er tot zover niet in geslaagd om de social items op 1 lijn te krijgen
Toevoeging op 27/06/2012 00:19:32:
@Frank
Bedankt voor de goeie tips, hier ga ik zeker mee aan de slag.
Weet iemand nog een oplossing voor me, want het is nog niet opgelost.
Ik krijg de meerdere social media niet in 1 lijn bij elkaar.
Toevoeging op 27/06/2012 00:23:06:
Ik zie nu dat er zelfs een aantal ontbreken.
Die hebben ook geen social media ingesteld, maar horen wel in de lijst te staan.