Въпрос за система за анкети?

nogravity

Registered
Здравейте туристи,

Създадох си проста система за анкети, като чрез jQuery направих при добавянето на анкети, от селект меню да избираш колко на брой анкети искаш да добавиш наведнъж. И резултатите, при избране на стойност от менюто, излизат по този начин:
Въпрос 1
Отговор1 Отговор2 Отговор3 Отговор4

Въпрос 2
Отговор1 Отговор2 Отговор3 Отговор4

Въпрос3
Отговор1 Отговор2 Отговор3 Отговор4

и т.н. до колкото си избрал. До тук добре, но ето че изникна проблем. С foreach взимам всеки написан въпрос и го вкарвам в таблицата като отделен запис. Ето го и кода:
Код:
if(isset($_POST['add'])) {
$question = $_POST['q'];
foreach($question AS $q) {
$query = mysql_query("INSERT INTO table (`id`,`question`)
VALUES('NULL','$q')") or die(mysql_error());
}
}

Но сега въпроса ми е как да взема отговорите към всеки въпрос и да ги вкарам към неговия запис? В таблицата ми полетата са id,question,ans1,ans2,ans3,ans4.

Идеи как ще стане това?
 
Класическото решение на този проблем е с 2 таблици! В едната записваш въпроса, датата на създаване, и всякаква друга "мета" информация за него. Така въпроса има уникално ID. Във втората таблица записваш само въпросите, като записваш и ID на въпроса. Ако си на INODB може да го направиш и с подчинен ключ.
После взимането е лесно, понеже имаш ясна връзка между въпрос/отговори.
Това се нарича "връзка едно към много". Един въпрос, много отговори.
 
Ludjov каза:
Класическото решение на този проблем е с 2 таблици! В едната записваш въпроса, датата на създаване, и всякаква друга "мета" информация за него. Така въпроса има уникално ID. Във втората таблица записваш само въпросите, като записваш и ID на въпроса. Ако си на INODB може да го направиш и с подчинен ключ.
После взимането е лесно, понеже имаш ясна връзка между въпрос/отговори.
Това се нарича "връзка едно към много". Един въпрос, много отговори.

Ами да това е идея :) Само как ще взимам id-то на въпроса и да го слагам към всеки от отговорите? И някакъв кодец нещо ако може ще е полза :P
 
Ами ето ти един кодец за анкети, който съм писал много отдавна!
<?php
include 'connect.php';
mysql_query("SET NAMES cp1251");
header("Content-type: text/html; charset=Windows-1251");
$time = time();
$ip = $_SERVER['REMOTE_ADDR'];
$sql = "SELECT * FROM vaprosi ORDER BY id DESC LIMIT 1";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$vapros = $row['vapros'];
$vid = $row['id'];
echo $vapros;
echo '<br>';
echo "\n";
$sql1 = "SELECT * FROM ip WHERE ip LIKE '$ip' AND za LIKE '$vid' ";
$rez1 = mysql_query($sql1);
$chekip = mysql_num_rows($rez1);
if ($chekip == 0) {
$sql2 = "SELECT * FROM otgovori WHERE za = '$vid'";
$res2 = mysql_query($sql2);
echo '<form action="" method="post">';
while($row1 = mysql_fetch_assoc($res2)) {
echo '<input type="radio" name="vote" value="'.$row1['otgovor'].'"> '.$row1['otgovor'].'<br>';
echo "\n";
}
echo '<input type="submit" name="glas" value="Гласувай">';
echo "\n";
echo '</form>';
$vote = $_POST['vote'];
if(isset($_POST['glas'])) {
$sql10 = "SELECT * FROM ip WHERE ip LIKE '$ip' AND za LIKE '$vid' ";
$rez10 = mysql_query($sql10);
$chekip = mysql_num_rows($rez10);
if ($chekip == 0) {
$sql6 = "SELECT * FROM otgovori WHERE otgovor = '$vote'";
$result1 = mysql_query($sql6);
$row = mysql_fetch_assoc($result1);
$tvote=$row['rezultat'];
$tvote++ ;
$sql="UPDATE otgovori SET rezultat='$tvote' WHERE otgovor = '$vote'";
mysql_query($sql);

$sql3 = "INSERT INTO ip (ip, za, otgovor) VALUES ('$ip','$vid', '$vote')";
mysql_query($sql3);
echo 'Успешно гласувахте!';
} else {
echo 'Вие сте гласували!';
}
}
} else {
$sql = "SELECT * FROM otgovori WHERE za LIKE '$vid'";
$rez = mysql_query($sql);
while($red=mysql_fetch_array($rez)){
if($red['rezultat'] == NULL) {
echo $red['otgovor'];
echo "\n";
echo " - <font color=\"red\">0</font> глас(а)<br>\n";
} else {
echo $red['otgovor'];
echo "\n";
echo " - <font color=\"red\">".$red['rezultat']."</font> глас(а)<br>\n";
}

}
}
?>
Само, че при мене с три таблици!
otgovori, ip, vaprosi! :?:
 
Във този урок

http://gatakka.eu/2009/04/21/%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0-%D0%B7%D0%B0-%D0%B3%D0%BB%D0%B0%D1%81%D1%83%D0%B2%D0%B0%D0%BD%D0%B5/

Е обяснено всичко като хората :P
 

Back
Горе