Archief - PHP: JOIN of niet ?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Fr3aK

Legacy Member
Ik heb volgende 2 tabellen:

links_cat:
Code:
+----+-----------+
| id | name      |
+----+-----------+
|  1 | Webdesign |
|  2 | Games     |
|  3 | Friends   |
+----+-----------+
links:
Code:
+----+-----+-----------+------+------+
| id | cid | name      | info | link |
+----+-----+-----------+------+------+
|  1 |   3 | naam1     | .... | .... |
|  2 |   1 | naam2     | .... | .... |
|  3 |   2 | naam3     | .... | .... |
|  4 |   1 | naam4     | .... | .... |
|  5 |   2 | naam5     | .... | .... |
+----+-----+-----------+------+------+
en ik gebruik volgende code om dit resultaat te verkrijgen:

PHP:
$query = mysql_query("SELECT * FROM links_cat ORDER BY name ASC");
if (mysql_num_rows($query)) {
  while ($list = mysql_fetch_object($query)) {
    echo $list->name;
    $query1 = mysql_query("SELECT * FROM links WHERE cid='$list->id' ORDER BY name ASC");
    if (mysql_num_rows($query1)) {
      while ($list = mysql_fetch_object($query1)) {
        echo "<a href=\"".$list->link."\" onclick=\"window.open(this.href,'_blank');return false;\">".$list->name."</a> - ".$list->info."<br />";
      }
    } else {
      echo "No links in this category posted yet.";
    }
  }
} else {
  echo "No categories posted yet.";
}
Zoals ge kunt zien gebruik ik nu ne SELECT query in ne SELECT query, maar zou dit omgezet kunnen worden naar nen JOIN?
Zou dat nuttig zijn of gaat het dan trager laden?

Greetz

DarkBone

Legacy Member
Onmiddelijk doen.
Dat is net het nut van relationele databases.

Fr3aK

Legacy Member
Ja maar ik heb totaal geen idee hoe ik men query moet opstellen en hoe ik het dan moet uitlezen om hetzelfde resultaat te verkrijgen.
Ik ken eigenlijk niets van JOIN's ik weet alleen dat ze bestaan en dat er verschillende vormen zijn (INNER, OUTER, LEFT, RIGHT, FULL)
Plzz help :(

frenzal

Legacy Member
SELECT * FROM lc links_cat, l links WHERE lc.cid = l.id ORDER BY cl.name, l.name ASC

Fr3aK

Legacy Member
Mjah de query had ik mss nog van ergens kunne kopieren maar ik heb nu totaal geen idee hoe ik het moet uitlezen om het zo te krijgen:
Categorie 1
- Link1
- Link2

Categorie 2
- Link3
- Link4

Greetz :(

zero2one

Legacy Member
Hij wil ook de categorieën zien waar niets inzit dus de query moet anders !!

PHP:
$sql = "SELECT lc.name AS cat, l.name, l.info, l.link FROM links_cat lc LEFT OUTER JOIN links l ON (lc.cid = l.id) ORDER BY lc.name, l.name ASC";
$result = mysql_query($sql);

// reset vars
$cat = "";

// weergave opbouwen
while ($row = mysql_fetch_array($result))
	{
	if ($cat != $row['cat'])
		{
		// als de cat niet dezelfde is als de vorige een nieuwe titel weergeven
		$cat = $row['cat'];
		echo "<br />categorie: ".$cat."<br />";
		}
	// checken of er wel links zijn
	if ($row['name']==NULL)
		{
		echo "Geen links in deze categorie";
		}
	else
		{
		echo "- <a href=\"".$row['link']."\" target=\"_blank">\".$row['name']."</a>&nbsp;".$row['info']."<br />";
		}
	}

Fr3aK

Legacy Member
Laat maar...
De code werkt wel ze maar men design werkt ni mee ;)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan