webForumDet fria alternativet

Får inte fram alla värden

PHPur PHP

7 svar · 283 visningar · startad av Melea

Medlem sedan juli 20033 147 inlägg
Frågan#1

Hejsan

Jag har två tabeller, en som heter varden och en som heter rollpersoner.
varden ser ut såhär

ID - int (auto_increment)
PersonID - int
Min - int
Max - int

Och rollpersoner ser ut såhär:

ID - int (auto_increment)
Ras - varchar

Jag har skapat en relation mellan dessa där tabellen rollpersoner innehåller en rad som har ID 1 och Ras 'Människa'. I den andra tabellen har jag skapat 8 värden som står för människans minimum och maximumvärden i t.ex. styrka. Nu är det så att jag har gjort en SQL fråga som ska skriva ut alla människans värden, som slumpas i en kod. Så här ser det ut:

<?
$SQL = mysql_query("SELECT rollpersoner.ID, rollpersoner.Ras, varden.ID, varden.PersonID, varden.Min, varden.Max
FROM rollpersoner
LEFT JOIN varden
ON rollpersoner.ID = varden.PersonID ORDER BY varden.ID") or die (mysql_error());

$objRS = mysql_fetch_array($SQL);

echo $objRS['Ras'].'<br /><br />';

$arr = array("Sty", "Sto", "Fys", "Smi", "Int", "Psy", "Spi", "Kar");
reset($arr);

$x = 0;

while($objRS = mysql_fetch_array($SQL)) {

	echo $arr[$x].' ';
	$x++;

	$Min = $objRS[Min];
	$Max = $objRS[Max];

	srand((double)microtime()*1000000);
	echo rand($Min,$Max).'<br />';

}
?>

Problemet är att den endast skriver ut 7 st rader, medans det finns 8 i databasen. Ser någon vad felet ligger? Har kollat mig helt blind på det.

Tack på förhand

Medlem sedan mars 20034 471 inlägg
#2

Hur ser den 8:e raden ut? Vad skiljer den från de 7 som kommer ut? :q

Medlem sedan juli 20033 147 inlägg
#3

Det som är skumt, den skiljer sig inte alls, alla 8 rader i tabellen "varden" har PersonID 1. Men den skriver ändå bara ut 7 rader.

Medlem sedan mars 20034 471 inlägg
#4

Melea skrev:

Det som är skumt, den skiljer sig inte alls, alla 8 rader i tabellen "varden" har PersonID 1. Men den skriver ändå bara ut 7 rader.

Du vill inte visa vad som faktiskt ligger i din tabell? Det kanske skiljer sig åt i någon annan kolumn?

Medlem sedan juli 20033 147 inlägg
#5

Jodå, såhär ser den ut

[b]ID	PersonID	Min	Max[/b]
1	1		2	12
2	1		4	7
3	1		3	18
4	1		7	18
5	1		3	18
6	1		3	18
7	1		0	0
8	1		2	12

Och i rollpersoner-tabellen ser det ut såhär

[b]ID	Ras[/b]
1	Människa
Medlem sedan mars 20034 471 inlägg
#6

Melea skrev:

Jodå, såhär ser den ut

[b]ID	PersonID	Min	Max[/b]
1	1		2	12
//....
8	1		2	12

Hmmm, dessa två rader är ju identiska. Jag börjar misstänka att Left Join kanske sållar bort dubbletterna... för du plockar ju inte ut varde.ID, så då resulterar både första och sista raden i exakt samma info.

Pröva att lägga in en 9:e rad som skiljer sig från resten. Jag tror du får ut den.

Medlem sedan juli 20033 147 inlägg
#7

Nejdå, det är helt och hållet som det ska, eftersom slumpgeneratorn ska slumpa ut i det första fallet Styrkan och i det andra fallet Karisman.
Hur som helst har jag ändrat värdena i "varden" tabellen så Min och Max står på samma som sitt ID.
Det ser alltså ut såhär nu:

ID	PersonID	Min	Max
1	1		1	1
2	1		2	2
3	1		3	3
4	1		4	4
5	1		5	6
6	1		6	6
7	1		7	7
8	1		8	8

Men den sållar bort första ID:et, fråga mig inte varför. :OO

Medlem sedan juli 20033 147 inlägg
#8

Det var raden

$objRS = mysql_fetch_array($SQL);

Som tog bort ett värde, ganska självklart. Mah bad!

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