webForumDet fria alternativet

Hämta ut text

PHPur PHP

17 svar · 1 163 visningar · startad av Emil W

Medlem sedan mars 2009512 inlägg
Frågan#1

Vet inte riktigt hur jag ska hämta ut text så att det blir så här

först kategorinamn
och sen produkter

ungefär så här

Inbakade pizzor

Calzone
Skinka,ost,tomatsås

Zaiman
Skinka,ost,tomatsås,banan och curry

Tacksam för svar

Medlem sedan juni 20031 837 inlägg
#2

Var har du sparat informationen?
Är det i en databas, xml eller annat format?

Medlem sedan mars 2009512 inlägg
#3

i databas

så här ser det ut

produkttabellen

|id | katid | namn | beskrivning | pris

och så här ser det ut i kategoritabellen

id | rubrik

Medlem sedan juni 20019 519 inlägg
#4

Finns många sätt att lösa det på,

loopar ut din kategoritabell och kör en SQL fråga för att hämta allt ifrån produkttabellen
Problemet där är att det bli rätt många SQL frågor du kör för få ut det du är ute efter,
en annan lösning är att köra INNER JOIN på dina två tabeller och sortera efter katid, kategoritabellen.rubrik och gemföra med en php variabel om rubrik har ändrats, om den har det så skriv ut en ny rubirk, annars skriv bara ut produkttabellen.

Medlem sedan mars 2009512 inlägg
#5

voigtann1 skrev:

Finns många sätt att lösa det på,

loopar ut din kategoritabell och kör en SQL fråga för att hämta allt ifrån produkttabellen
Problemet där är att det bli rätt många SQL frågor du kör för få ut det du är ute efter,
en annan lösning är att köra INNER JOIN på dina två tabeller och sortera efter katid, kategoritabellen.rubrik och gemföra med en php variabel om rubrik har ändrats, om den har det så skriv ut en ny rubirk, annars skriv bara ut produkttabellen.

Har du lust att visa ett exempel hur man gör med inner join ?

Medlem sedan juni 20019 519 inlägg
#6

http://www.w3schools.com/sql/sql_join.asp är en rätt bra start för dig.

Medlem sedan juni 20014 290 inlägg
#7

Något så här kanske:

SELECT k.rubrik AS Pizza, p.Namn AS Ingridiens FROM Kategori AS k LEFT JOIN Produk AS p ON k.id=p.katid ORDER BY Pizza, Ingridiens

Då får du ut så här:

Pizza1:ingridiens1
Pizza1:ingridiens2
Pizza1:ingridiens3
Pizza2:ingridiens1
Pizza2:ingridiens2

Då är det bara att hålla koll på när Pizza byter namn.

Medlem sedan juni 20019 519 inlägg
#8

GunnarD, glöm inte order by ;)

Medlem sedan juni 20014 290 inlägg
#9

voigtann1 skrev:

GunnarD, glöm inte order by ;)

Tillagt, tack för det.

Medlem sedan mars 2009512 inlägg
#10

GunnarD skrev:

Något så här kanske:

SELECT k.rubrik AS Pizza, p.Namn AS Ingridiens FROM Kategori AS k LEFT JOIN Produk AS p ON k.id=p.katid ORDER BY Pizza, Ingridiens

Då får du ut så här:

Pizza1:ingridiens1
Pizza1:ingridiens2
Pizza1:ingridiens3
Pizza2:ingridiens1
Pizza2:ingridiens2

Då är det bara att hålla koll på när Pizza byter namn.

Hej GunnarD

Hur gör jag om mina fält heter

fält i produkttabellen

id katid namn beskrivning pris

och fält i kategori tabellen

id | rubrik

hur ändrar jag det

Medlem sedan juni 20019 519 inlägg
#11

läs länken jag skickade om hur JOIN fungera:

SELECT p.namn, p.beskrivning, p.pris, k.rubrik FROM <kategori tabellen> k LEFT JOIN <produkttabellen> p ON p.katid = k.id ORDER BY k.rubrik, p.namn
Medlem sedan mars 2009512 inlägg
#12

Ja det ska jag göra

Medlem sedan juni 20014 290 inlägg
#13

Kan även vara bra att läsa på hur AS fungerar. :)

Ser nu att jag kanske förvirrade i.o.m att jag trodde Kategori var Pizzan, det kanske är om den är inbakad eller ej. Då kanske jag inte skulle döpt Kategorinamnet till Pizza. :)

Annars stämmer den, voigtann1 är samma fast utan att sätta namn på kolumnerna utan använder dom verkliga/riktiga.

Men det som gör själva jobbet är join satsen, och skall man hålla på med SQL så är det bra att kunna hur dom olika join'arna fungerar.

Medlem sedan mars 2009512 inlägg
#14

Jag håller på med en annan sak nu som ska fungera lika dant,
men den skriver ut så här

Diverse forum - övrigt

Information

Nyheter
Endast till för nyhetsmeddelanden som visas på första sidan.

Webbutveckling
Javascript
Här diskuteras allt som har med javascript att göra.

Webbutveckling
Php
Här diskuteras allt som har med php att göra.

Jag vill bara att den ska skriva ut webbutveckling bara en engång.

Hur löser man det ?

Edit: Glömde koden här kommer den.


include('bcon.php');

$con = mysql_connect($server,$user,$pass);
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db($data,$con);

$ut = "SELECT p.rubrik, p.texter, p.katid, k.rubrikk FROM kategorier k LEFT JOIN underkategorier p ON p.katid = k.id ORDER BY k.rubrikk, p.rubrik";
$it = mysql_query($ut);

while($row = mysql_fetch_array($it))
{
echo htmlspecialchars($row['rubrikk']);
echo "<br>";
echo htmlspecialchars($row['rubrik']);
echo "<br>";
echo htmlspecialchars($row['texter']);
echo "<br><br>";
}
?>
Medlem sedan juni 20019 519 inlägg
#15

spara undan $row['rubrikk'] i en variabel, och kolla vid varje loop om den variablen INTE är vad $row['rubrikk'] är om den är annolunda så skall den skriva ut $row['rubrikk'] annars hoppa över den.

Medlem sedan mars 2009512 inlägg
#16

Har du lust att visa ?

Här kommer koden.

while($row = mysql_fetch_array($it))
{
$ru = htmlspecialchars($row['rubrikk']);
echo $ru;
echo "<br>";
echo htmlspecialchars($row['rubrik']);
echo "<br>";
echo htmlspecialchars($row['texter']);
echo "<br><br>";
}
Medlem sedan feb. 20034 441 inlägg
#17

Såhär:

$ru = 0;
while($row = mysql_fetch_array($it)){
	if($ru != $row['rubrikk']){
	   echo htmlspecialchars($row['rubrikk']) . "<br />";
	}
	echo htmlspecialchars($row['rubrik']);
	echo "<br>";
	echo htmlspecialchars($row['texter']);
	echo "<br><br>";

	$ru = $row['rubrikk'];
}
Medlem sedan mars 2009512 inlägg
#18

Tack för hjälpen alla

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