webForumDet fria alternativet

Hämta allt utan rabatt också...

5 svar · 276 visningar · startad av streetrobban

streetrobbanMedlem sedan jan. 20011 140 inlägg
#1

Hej, jag sitter och pillar lite med en webshop för skojs skull. Men jag har stött på ett litet problem. Det finns tre tabeller, shop_products, shop_categories och shop_discount. Det är väl ganska självklart vad tabellerna innehåller. Grejjen är att jag vill skriva ut alla produkter i en lång lista, och visa rabatten bredvid de produkter som har rabatt. Den nedanstående koden skriver bara ut alla produkter med rabatt, inga andra. Så, hur ska jag göra för att skriva ut samtliga produkter, oavsett rabatt eller inte?

	<?php
	// Öppna databasen
	require 'inc/db.php';

	// Hämta produkter
	$get = mysql_query("SELECT pr.*, ca.name_category, di.discount FROM shop_categories ca
	JOIN shop_products AS pr ON pr.id_category = ca.id
	JOIN shop_discount AS di ON di.id_product = pr.id");
	while($row = mysql_fetch_array($get))
	{
		$id = $row['id'];
		$name = $row['name'];
		$description = $row['description'];
		$price = $row['price'];
		$time = $row['time'];
		$date = $row['date'];
		$id_category = $row['id_category'];
		$name_category = $row['name_category'];
		$discount = $row['discount'];
		$newPrice = $price-$discount;
		
		echo "$name_category / <b>$name ($id)</b> ($discount)<br/>";
		echo "$description ($price/$newPrice kr)<br/><br/>";
	}
	
	// Stäng databasen
	mysql_close($open);
	?>
Peter SMedlem sedan dec. 20025 483 inlägg
#2
$get = mysql_query("SELECT pr.*, ca.name_category, di.discount FROM shop_categories ca 
    JOIN shop_products AS pr ON pr.id_category = ca.id 
    LEFT JOIN shop_discount AS di ON di.id_product = pr.id");
streetrobbanMedlem sedan jan. 20011 140 inlägg
#3

Jasså, det gick fort. Tack för svaret. Vad är det för skillnad på JOIN och LEFT JOIN då? Jag har hört att det inte är någon skillnad på INNER JOIN och JOIN iaf.

Peter SMedlem sedan dec. 20025 483 inlägg
#4

Med LEFT/RIGHT JOIN får du även ut de poster från den VÄNSTRA/HÖGRA tabellen i joinen, som inte kan matchas mot den andra tabellen. En INNER JOIN hämtar alltså bara de rader för vilka det finns en match för joinvillkoret.

streetrobbanMedlem sedan jan. 20011 140 inlägg
#5

Ok, det sägs att man lär sig något nytt varje dag. Idag var inget undantag :)

NiklassonMedlem sedan nov. 2000857 inlägg
#6

Flyttas från PHP..

133 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)