Ni har säkert redan räknat ut vad det här rör sig om, och relationerna mellan tabellerna, men för att göra det hela lite tydligare kan jag förklara ändå:
Vad jag försöker göra är en poll. Varje fråga (question) från tabellen question har ett id, som används i tabellen alternative i fältet question_id. Dvs, om en fråga har id:et 1, och några inlägg i tabellen alternativ har question_id 1, så hör dessa tabeller ihop på det stället. I answer sparas alla röster. Tabellen har ett id, precis som alla andra, och ett fält som heter alternative_id, där alternativet för frågan som användaren skickat in sparas.
När jag försöker göra ett formulär av tabellerna question och alternativ, så stöter jag på ett problem, nämligen att frågan fortsätts att skrivas ut efter varje alternativ.
Detta:
$result = mysql_query("
SELECT question.question, alternative.alternative
FROM question
LEFT JOIN alternative
ON question.id = alternative.question_id
");
while ($row = mysql_fetch_array($result)) {
echo $row["question"]. "<br>";
echo "<input type=\"radio\" name=\"blah blah\" title=\"Holy shit\">". $row["alternative"]. "</input>";
}
kan ge tex:
Fråga
alt Fråga
alt Fråga
alt Fråga
Men det är ju inte så jag vill ha det. :) Jag vill ha:
Fråga
alt
alt
alt
Nästa fråga
alt
alt
alt
Vet inte riktigt hur jag ska göra för att få till detta! Borde ju ha något med en while-sats inuti while-satsen att göra, men vad jag behöver skriva för att få det resultat jag vill.. tja, det vet jag som sagt inte. :)
Varför inte bara dela upp problemet och göra en SQL-sats för frågorna och göra en inre SQL-sats för alternativen (hemskt och usch att ha en inre SQL-sats, men men :)).
Det du gör nu är att du skriver ut endast frågan och Ett alternativ eftersom du inte gör någon som helst loop över alternativen, bara frågorna.
Så här kan du ju göra, om du inte redan gjort det nu ;)
SELECT A.alternative, Q.question FROM question AS Q RIGHT JOIN alternative AS A ON Q.id = A.question_id ORDER BY Q.question
och sen i varje "loop" kollar du om frågan är samma som föregående, är den Inte det skriver du ut både frågan och alternativet, annars bara alternativet..
Om detta är så effektivt kan man väll diskutera, men det funkar ju.
Är visst nästan samma SQL sats som du hade ovan ser jag, tittade inte så mycket där nu ;)
$lastquestion = "";
$query = mysql_query("SELECT A.alternative, Q.question FROM question AS Q RIGHT JOIN alternative AS A ON Q.id = A.question_id ORDER BY Q.question");
while ($row = mysql_fetch_array($query)) {
if ($row["question"] != $lastquestion) {
$lastquestion = $row["question"];
print "<br>$lastquestion<br>";
}
print $row["alternative"] . "<br>";
}