$i in $_POST
<td><input type="radio" name="' . $i . '"/>' . $rij1["antwoord"] . '</td>
Hoe kan ik die $i in een $_POST gebruiken. Of kan dit niet?
Iets meer uitleg graag. Wat bedoel je met $i gebruiken in $_POST?
Maar wat weerhoudt je om het zelf te proberen?
Heb et nu zo:
$i = 0;
while ($rij = mysql_fetch_array($resultvraagids))
{
//15 x query om de vragen op te halen en deze beneden erbij te zetten
$resultvragen = mysql_query("SELECT vraag FROM vragen WHERE vraagID =" . $rij["vraagID"]);
//15x query om te kijken voor elke vraag welke antwoorden erbij horen
$resultantwoorden = mysql_query("SELECT antwoord FROM antwoorden WHERE vraagID =" . $rij["vraagID"]);
//vragen loop
while ($rij0 = mysql_fetch_array($resultvragen))
{
echo '<tr>
<td><b>' . $rij0["vraag"] . '</b></td>
</tr>
<tr><td></td></tr>';
}
//antwoorden loop
while ($rij1 = mysql_fetch_array($resultantwoorden))
{
$i++;
//echo $i;
echo '<tr>
<td><input type="radio" name="' . $i . '"/>' . $rij1["antwoord"] . '</td>
</tr>';
if (!empty($_POST))
{
$query = "INSERT INTO resultaten (resultaatID, datum, 1A, 1B, 1C, 1D)
VALUES
('$_POST[resultaatID]','$_POST[datum]','$_POST[??]','$_POST[??]','$_POST[??]','$_POST[??]')";
$result = mysql_query($query) or die(mysql_error());
}
je bedoelt dat je de naam van iets een getal hebt gegeven waarschijnlijk dat je je id uit je database meeneemt in de naam van het object.
in mijn voorbeeld kunnen mensen zelf een object aanmaken. die word opgeslagen in een database
kijk hier eens naar...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
// categorie verwijderen
// ter bevestiging van het verwijderen
if (isset($_POST['ja']))
{
$query = mysql_query("DELETE FROM categorie WHERE naam = '".$_POST['cat_name']."'");
if ($query)
echo "Categorie ".$_POST['cat_name']." verwijdert.<br>";
die("<a href='categorie.php'>Terug</a>");
}
for ($i=1;$i<=99999;$i++)
{
// dit bedoel je waarschijnlijk (!!!!!!!!!!!!!!!)
$verwijder_cat = "verwijder_categorie_$i";
if (isset($_POST[$verwijder_cat]))
// dit bedoel je waarschijnlijk (!!!!!!!!!!!!!!!)
{
$hidden = $_POST['naam_cat'];
echo "Weet u zeker dat u de categorie $hidden wil verwijderen?<br>";
echo "<form action='categorie.php' method='POST'>
<input type='submit' value='ja' name='ja'>
<input type='submit' value='nee' name='nee'>
<input type='hidden' value='$hidden' name='cat_name'>
</form><br>";
die("<a href='categorie.php'>Terug</a>");
}
}
// categorie verwijderen
echo "<form action='categorie.php' method='POST'><table>";
while ($rij = mysql_fetch_row($query))
{ // categorien tonen en knop voor producten toevoegen aanmaken
// rij[0] is de id van de categorie in de database
echo "<tr>
<td>".$rij[1]."</td>
<td><input type='hidden' value='".$rij[1]."' name='naam_cat'></td>
<td>"."<input type='submit' value='Producten Toevoegen' name='add_".$rij[0]."'></td>
<td><input type='submit' value='Toon Producten' name='toon_".$rij[0]."'></td>
<td><input type='submit' value='Categorie Wijzigen' name='wijzig_".$rij[0]."'></td>
<td><input type='submit' value='Categorie Verwijderen' name='verwijder_categorie_".$rij[0]."'></td></tr>";
}
echo "</table></form>";
?>
// categorie verwijderen
// ter bevestiging van het verwijderen
if (isset($_POST['ja']))
{
$query = mysql_query("DELETE FROM categorie WHERE naam = '".$_POST['cat_name']."'");
if ($query)
echo "Categorie ".$_POST['cat_name']." verwijdert.<br>";
die("<a href='categorie.php'>Terug</a>");
}
for ($i=1;$i<=99999;$i++)
{
// dit bedoel je waarschijnlijk (!!!!!!!!!!!!!!!)
$verwijder_cat = "verwijder_categorie_$i";
if (isset($_POST[$verwijder_cat]))
// dit bedoel je waarschijnlijk (!!!!!!!!!!!!!!!)
{
$hidden = $_POST['naam_cat'];
echo "Weet u zeker dat u de categorie $hidden wil verwijderen?<br>";
echo "<form action='categorie.php' method='POST'>
<input type='submit' value='ja' name='ja'>
<input type='submit' value='nee' name='nee'>
<input type='hidden' value='$hidden' name='cat_name'>
</form><br>";
die("<a href='categorie.php'>Terug</a>");
}
}
// categorie verwijderen
echo "<form action='categorie.php' method='POST'><table>";
while ($rij = mysql_fetch_row($query))
{ // categorien tonen en knop voor producten toevoegen aanmaken
// rij[0] is de id van de categorie in de database
echo "<tr>
<td>".$rij[1]."</td>
<td><input type='hidden' value='".$rij[1]."' name='naam_cat'></td>
<td>"."<input type='submit' value='Producten Toevoegen' name='add_".$rij[0]."'></td>
<td><input type='submit' value='Toon Producten' name='toon_".$rij[0]."'></td>
<td><input type='submit' value='Categorie Wijzigen' name='wijzig_".$rij[0]."'></td>
<td><input type='submit' value='Categorie Verwijderen' name='verwijder_categorie_".$rij[0]."'></td></tr>";
}
echo "</table></form>";
?>
Gewijzigd op 15/03/2012 10:47:41 door Albert de Wit
Als je nu gewoon probeert $_POST['1'] etc. Ik durf je alleen even niet te zeggen of de keys in de POST array strings worden of getallen (dus of je $_POST['1'] moet gebruiken, of toch $_POST[1]), dat mag je zelf proberen.
Alleen wat je nog wel even moet doen is controleren met isset() of elke POST waarde wel bestaat. Je test nu alleen of POST niet leeg is (met empty()), maar dat wil nog niet zeggen dat elke waarde die je wilt uitlezen ook bestaat.
@Erwin: Welke code kan ik dan gebruiken met isset()? en hoe kan ik dit verwerken in 1 query? sorry ben niet zo goed met php xD
Ik help je graag maar...
Wat is je vraag
Wat is je doel
Wat gaat er mis
Ik heb het idee dat je het wat omslachtig doet.
Als je bijvoorbeeld 15 x een query uitvoerd.. doe je dat in 15 apparte querys? Gebruik je er een loop bij? Kan het zelfs misschien in 1 query?
Als je bijvoorbeeld 15 radiobuttons met allemaal dezelfde naam wilt hebben dan schrijf je niet 15 regels met een radio optie maar dan schrijf je gewoon simpel
Code (php)
Gewijzigd op 15/03/2012 11:16:54 door Albert de Wit
Code (php)
Voor je SQL statement kan je het volgende doen. Je hebt meerdere vragen nodig (15 zo te zien), maar als ik het goed lees weet je niet precies welke. Je haalt die ids op uit een database. Als je opgehaalde ids in een array stopt kan je die middels een implode() in een string krijgen gescheiden met komma's. Met die string kan je alle vragen in een keer uit je database halen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
//array met vraag ids, die stop je erin uit je database resultaten, hier even hardcoded
$vraagids = array(1, 3, 5, 7, 8, 9, 10);
//maak er een string van in deze vorm: "1,3,5,7,8,9,10"
$vraagids = implode( ',', $vraagids );
//maak een SQL statement om alle vragen in een keer op te halen:
$resultvragen = mysql_query("SELECT vraag FROM vragen WHERE vraagID IN (".$vraagids.")");
//en een SQL statement om all antwoorden op te vragen:
$resultantwoorden = mysql_query("SELECT antwoord FROM antwoorden WHERE vraagID IN (".$vraagids.")");
?>
//array met vraag ids, die stop je erin uit je database resultaten, hier even hardcoded
$vraagids = array(1, 3, 5, 7, 8, 9, 10);
//maak er een string van in deze vorm: "1,3,5,7,8,9,10"
$vraagids = implode( ',', $vraagids );
//maak een SQL statement om alle vragen in een keer op te halen:
$resultvragen = mysql_query("SELECT vraag FROM vragen WHERE vraagID IN (".$vraagids.")");
//en een SQL statement om all antwoorden op te vragen:
$resultantwoorden = mysql_query("SELECT antwoord FROM antwoorden WHERE vraagID IN (".$vraagids.")");
?>
De twee SQL queries kan je ook nog in een keer doen door een join te maken. Hierbij moet je dan alleen wel weten dat je dan voor elk antwoord een rij krijgt in je resultaten en dus meerdere rijen per vraag!
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$resultaatVraagEnAntwoorden = mysql_query("
SELECT vragen.vraag, antwoorden.antwoord
FROM vragen
INNER JOIN antwoorden ON vragen.vraagID = antwoorden.vraagID
WHERE vragen.vraagID IN (".$vraagids.")
");
?>
$resultaatVraagEnAntwoorden = mysql_query("
SELECT vragen.vraag, antwoorden.antwoord
FROM vragen
INNER JOIN antwoorden ON vragen.vraagID = antwoorden.vraagID
WHERE vragen.vraagID IN (".$vraagids.")
");
?>
Albert de Wit op 15/03/2012 11:10:43:
Ik heb je verhaal eens gelezen en kan er niet veel uit opmaken sorry.
Ik help je graag maar...
Wat is je vraag
Wat is je doel
Wat gaat er mis
Ik heb het idee dat je het wat omslachtig doet.
Als je bijvoorbeeld 15 x een query uitvoerd.. doe je dat in 15 apparte querys? Gebruik je er een loop bij? Kan het zelfs misschien in 1 query?
Als je bijvoorbeeld 15 radiobuttons met allemaal dezelfde naam wilt hebben dan schrijf je niet 15 regels met een radio optie maar dan schrijf je gewoon simpel
Ik help je graag maar...
Wat is je vraag
Wat is je doel
Wat gaat er mis
Ik heb het idee dat je het wat omslachtig doet.
Als je bijvoorbeeld 15 x een query uitvoerd.. doe je dat in 15 apparte querys? Gebruik je er een loop bij? Kan het zelfs misschien in 1 query?
Als je bijvoorbeeld 15 radiobuttons met allemaal dezelfde naam wilt hebben dan schrijf je niet 15 regels met een radio optie maar dan schrijf je gewoon simpel
Ik gebruik een loop. Mijn database heeft 15 vragen erin en per vraag 4 antwoorden. Ik heb daarvoor een mysql_num_rows gedaan waarbij die telt hoeveel vragen er zijn. Daarom staat er bij mijn commentaar 15x, want hij voert de loop dan 15x uit.
Mijn uitkomst van de pagina is dit:
vraag 1
antwoord1A
antwoord1B
antwoord1C
antwoord1D
vraag2
antwoord2A enz...
het is de bedoeling dat wanneer er antwoord 1A wordt gekozen.. dat er in de tabel resulaten bij 1A een 1tje wordt neergezet. en als je ook antwoord 2C kiest dat er bij 2C een 1tje komt te staan en bij de rest van 2 een 0.
1 - nooit testen op de button, want niet alle browsers geven die mee in de POST waardes.
2 - als nu het 15e veld niet is ingevuld krijg je 14 keer te zien "Alle velden zijn ingevuld" en dan "Niet alle velden zijn ingevuld". Niet helemaal correct, wel?
Toevoeging op 15/03/2012 11:32:39:
Inge Verhagen op 15/03/2012 11:28:01:
het is de bedoeling dat wanneer er antwoord 1A wordt gekozen.. dat er in de tabel resulaten bij 1A een 1tje wordt neergezet. en als je ook antwoord 2C kiest dat er bij 2C een 1tje komt te staan en bij de rest van 2 een 0.
Kan je niet beter een kolom per vraag hebben waarin je een A, B, C of D (of 1,2,3,4) plaatst? Dan heb je veeeeeel minder kolommen nodig, je hoeft geen "lege" kolommen te vullen en je hebt nooit de kans dat er twee antwoorden voor een vraag in je tabel komen te staan.
dus je hebt 15 multiple choice vragen met elk 4 antwoorden die in de database staan?
database =
id NULL (auto increment,primary) rij 0
antwoord_1 varchar (100) rij 1
antwoord_2 varchar (100) rij 2
antwoord_3 varchar (100) rij 3
antwoord_4 varchar (100) rij 4
vraag varchar (100) rij 5
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
mysql_connect('localhost','root','');
mysql_select_db('quiz'); // ik neem aan dat de database quiz heet :P
$query = mysql_query("SELECT * FROM quiz");
$aantal = mysql_num_rows($query);
echo "<form action='index.php' method='POST'>";
while ($rij = mysql_fetch_row($query))
{
echo $rij[1]."<br>";
for ($i=1;$i<=4;$i++)
{
echo "<input type='radio' value='".$i."' name='vraag_".$rij[0]."'>
<input type='hidden' name='naam_vraag' value='".$rij[1]."'>
".$rij[$i]."<br>";
}
}
echo "<input type='submit' value='Verstuur antwoorden' name='send'>";
echo "</form>";
?>
mysql_connect('localhost','root','');
mysql_select_db('quiz'); // ik neem aan dat de database quiz heet :P
$query = mysql_query("SELECT * FROM quiz");
$aantal = mysql_num_rows($query);
echo "<form action='index.php' method='POST'>";
while ($rij = mysql_fetch_row($query))
{
echo $rij[1]."<br>";
for ($i=1;$i<=4;$i++)
{
echo "<input type='radio' value='".$i."' name='vraag_".$rij[0]."'>
<input type='hidden' name='naam_vraag' value='".$rij[1]."'>
".$rij[$i]."<br>";
}
}
echo "<input type='submit' value='Verstuur antwoorden' name='send'>";
echo "</form>";
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
if (isset($_POST['send']))
{
for ($i=1;$i<=$aantal;$i++)
{
// dit deel vroeg je eerder om
$p = "vraag_".$_POST[$i];
if (empty($_POST[$p]))
{
die("Niet alle antwoorden zijn ingevuld. <a href='index.php'>Ga terug</a>");
}
else
{// ouch...... nu loop ik vast.... kan iemand helpen en verdergaan?
$o = "vraag_".$i
mysql_query("INSERT INTO quiz WHERE vraag = ' ".$_POST['naam_vraag']." '
(id, antwoord_1,antwoord_2,antwoord_3,antwoord_4) VALUES ('','".$_POST[$o]."','".$_POST[$o]."','".$_POST[$o]."','".$_POST[$o]."')");
}
}
}
?>
if (isset($_POST['send']))
{
for ($i=1;$i<=$aantal;$i++)
{
// dit deel vroeg je eerder om
$p = "vraag_".$_POST[$i];
if (empty($_POST[$p]))
{
die("Niet alle antwoorden zijn ingevuld. <a href='index.php'>Ga terug</a>");
}
else
{// ouch...... nu loop ik vast.... kan iemand helpen en verdergaan?
$o = "vraag_".$i
mysql_query("INSERT INTO quiz WHERE vraag = ' ".$_POST['naam_vraag']." '
(id, antwoord_1,antwoord_2,antwoord_3,antwoord_4) VALUES ('','".$_POST[$o]."','".$_POST[$o]."','".$_POST[$o]."','".$_POST[$o]."')");
}
}
}
?>
Grote kans dat het fout is.... ik ging de mist ergens in en verloor overzicht
Gewijzigd op 15/03/2012 11:52:25 door Albert de Wit
vraagID, vraag
1 Wat vind je....
2 .....
Een tabel antwoorden met alle antwoorden erin..
antwoordID, vraagID, antwoord
1 1 A. het antwoord.
2 1 B. ..
3 1 C
4 1 D
5 2 A
Deze vragen en antwoorden haal ik uit de database en wordt dan goed weergeven op de pagina als:
vraag1
antwoord1A
antwoord1B
antwoord1C
antwoord1D
vraag2
antwoord2A
enz...
en een tabel resultaten:
resultaatID, 1A, 1B, 1C, 1D, 2A, 2B...
1 1 0 0 0 0 1
2 0 1 0 0 0 1
later tel ik de resultaten bij elkaar op met SUM hoeveel keer er bijvoorbeeld antwoord 2B is ingevuld.