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.
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.
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: