foreach probleem
Maar wanneer ik nu de antwoorden wil wijzigen wil ik natuurlijk de records die ik geinsert heb updaten, maar ik weet niet hoe dit te doen.
ik heb geprobeerd dit ook door middel van een foreach loop te doen, maar dan zit ik met het probleem dat ik het id dat hij moet updaten nergens kwijt kan. Iemand een idee hoe dit op te lossen?
regels waar het over gaat
regel 16-32
regel 65-71
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
include('includeSecurity.php');
if ((!is_numeric($_GET['id'])) && $_GET['id'] != '')
{
echo('Er is een fout opgetreden!');
}
else
{
$vraagID = $_GET['id'];
if ($_SERVER['REQUEST_METHOD'] == "POST")
{
extract($_POST);
$query6 = "SELECT COUNT(*) AS aantal FROM prijsvraagantwoorden WHERE prijsvraagID=".$vraagID;
$result6 = mysql_query($query6) or die (mysql_error());
$aantalresult = mysql_result($result6,'aantal');
if (aantalresult > 0)
{
foreach ($antwoord as $answer)
{
$query7 = "UPDATE
prijsvraagantwoorden
SET
antwoord = '".$answer."'
WHERE
id = '".$answerid."'";
$result7 = mysql_query($query7) or die (mysql_error());
}
}
else
{
foreach ($antwoord as $answer)
{
$query2 = "INSERT INTO
prijsvraagantwoorden
(prijsvraagID,
antwoord)
VALUES
('".$vraagID."',
'".$answer."')";
$result2 = mysql_query($query2) or die (mysql_error());
}
}
?><META http-equiv="refresh" content="0; URL=?page=nieuweprijsvraag"><?php
}
else
{
$query4 = "SELECT vraag,aantalantwoorden FROM prijsvragen WHERE id=".$vraagID;
$result4 = mysql_query($query4) or die (mysql_error());
$row4 = mysql_fetch_array($result4);
$aantalantwoorden = $row4['aantalantwoorden'];
$query5 = "SELECT id,antwoord FROM prijsvraagantwoorden WHERE prijsvraagID=".$vraagID;
$result5 = mysql_query($query5) or die (mysql_error());
?><form action="<?php $_SERVER['PHP_SELF'] ?>" method="post"><?php
echo('<table>');
echo('<tr><td><b>Vraag</b></td><td><input type="text" name="vraag" id="vraag" size="50" value="'.$row4['vraag'].'"></td></tr>');
echo('<tr><td colspan="2"><br /><b>Antwoorden</b></td></tr>');
if (mysql_num_rows($result5))
{
while($row5 = mysql_fetch_array($result5))
{
echo('<tr><td><input type="text" name="antwoord[]" id="antwoord[]" value="'.$row5['antwoord'].'"></td></tr>');
}
}
else
{
for ($i=1; $i<=$aantalantwoorden; $i++)
{
echo('<tr><td><input type="text" name="antwoord[]" id="antwoord[]"></td></tr>');
}
}
echo('<tr><td colspan="2"><input type="submit" name="submit" id="submit" value="Toevoegen"></td></tr>');
echo('</table>');
echo('</form>');
}
}
?>
include('includeSecurity.php');
if ((!is_numeric($_GET['id'])) && $_GET['id'] != '')
{
echo('Er is een fout opgetreden!');
}
else
{
$vraagID = $_GET['id'];
if ($_SERVER['REQUEST_METHOD'] == "POST")
{
extract($_POST);
$query6 = "SELECT COUNT(*) AS aantal FROM prijsvraagantwoorden WHERE prijsvraagID=".$vraagID;
$result6 = mysql_query($query6) or die (mysql_error());
$aantalresult = mysql_result($result6,'aantal');
if (aantalresult > 0)
{
foreach ($antwoord as $answer)
{
$query7 = "UPDATE
prijsvraagantwoorden
SET
antwoord = '".$answer."'
WHERE
id = '".$answerid."'";
$result7 = mysql_query($query7) or die (mysql_error());
}
}
else
{
foreach ($antwoord as $answer)
{
$query2 = "INSERT INTO
prijsvraagantwoorden
(prijsvraagID,
antwoord)
VALUES
('".$vraagID."',
'".$answer."')";
$result2 = mysql_query($query2) or die (mysql_error());
}
}
?><META http-equiv="refresh" content="0; URL=?page=nieuweprijsvraag"><?php
}
else
{
$query4 = "SELECT vraag,aantalantwoorden FROM prijsvragen WHERE id=".$vraagID;
$result4 = mysql_query($query4) or die (mysql_error());
$row4 = mysql_fetch_array($result4);
$aantalantwoorden = $row4['aantalantwoorden'];
$query5 = "SELECT id,antwoord FROM prijsvraagantwoorden WHERE prijsvraagID=".$vraagID;
$result5 = mysql_query($query5) or die (mysql_error());
?><form action="<?php $_SERVER['PHP_SELF'] ?>" method="post"><?php
echo('<table>');
echo('<tr><td><b>Vraag</b></td><td><input type="text" name="vraag" id="vraag" size="50" value="'.$row4['vraag'].'"></td></tr>');
echo('<tr><td colspan="2"><br /><b>Antwoorden</b></td></tr>');
if (mysql_num_rows($result5))
{
while($row5 = mysql_fetch_array($result5))
{
echo('<tr><td><input type="text" name="antwoord[]" id="antwoord[]" value="'.$row5['antwoord'].'"></td></tr>');
}
}
else
{
for ($i=1; $i<=$aantalantwoorden; $i++)
{
echo('<tr><td><input type="text" name="antwoord[]" id="antwoord[]"></td></tr>');
}
}
echo('<tr><td colspan="2"><input type="submit" name="submit" id="submit" value="Toevoegen"></td></tr>');
echo('</table>');
echo('</form>');
}
}
?>
na dit weekend is mijn vakantie ook weer voorbij, en dan wil ik dit script toch wel volledig werkend hebben ;)
Gewijzigd op 01/01/1970 01:00:00 door Stefan van Iwaarden
boven je script. Dat zal je in ieder geval al wat fouten en notices opleveren.
Daarnaast zie ik nergens in je script een query om velden te update. Dus wat wil je nu precies? Het updaten van een tabel doe je met:
Code (php)
1
2
3
2
3
UPDATE tabel
SET veld1 = 'nieuwe waarde', veld2 = 'nieuwe waarde2', etc
WHERE veld3 = 'een bepaalde waarde'
SET veld1 = 'nieuwe waarde', veld2 = 'nieuwe waarde2', etc
WHERE veld3 = 'een bepaalde waarde'
veld1, veld2 en veld3 zijn natuurlijk verzonnen namen, daar kun je zelf dingen invullen...
Ik zit alleen met een denkprobleempje waar ik niet helemaal uitkom.
zoals je zult zien heb ik de namen van de tekstvelden in een arrayvorm gezet om deze zodoende met een foreach loop uit te kunnen lezen. Alleen ik heb nu geen idee waar ik het id van het record moet plaatsen die je normaal in de value of name van het veld zou plaatsen om het goede record up te daten.
toch nog maar eens een schop :s
Quote:
Alleen ik heb nu geen idee waar ik het id van het record moet plaatsen die je normaal in de value of name van het veld zou plaatsen om het goede record up te daten.
Kun je dat dan niet aan de hand van de key van die array doen? Of komt de key van de array niet over met het id?
maar ik weet niet waar ik het id moet plaatsen in dat tekstvak, want in het name of value attribuut kan niet, want in name staat "antwoord[] en in value staat uiteraard de waarde die het te updaten record moet krijgen.
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
echo '<pre>';
print_r($_POST);
echo '</pre>';
foreach($_POST['antwoorden'] as $key => $antwoord)
{
echo $key.': '.$antwoord.'<br />';
}
}
else
{
echo '<form action="#" method="post">';
for($i = 0; $i < 5; $i++)
{
echo '<p>Antwoord '.$i.': <input type="text" name="antwoorden[]" /></p>';
}
echo '<p><input type="submit"></p>';
echo '</form>';
}
?>
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
echo '<pre>';
print_r($_POST);
echo '</pre>';
foreach($_POST['antwoorden'] as $key => $antwoord)
{
echo $key.': '.$antwoord.'<br />';
}
}
else
{
echo '<form action="#" method="post">';
for($i = 0; $i < 5; $i++)
{
echo '<p>Antwoord '.$i.': <input type="text" name="antwoorden[]" /></p>';
}
echo '<p><input type="submit"></p>';
echo '</form>';
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Maar ik snap nog steeds niet hoe ik dan een id van een alreeds geinserted record dat met $query5 opgehaald wordt in die foreach kan krijgen zodat ik die kan gebruiken in de where clause.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
while($row5 = mysql_fetch_array($result5))
{
echo '<tr><td><input type="text" name="antwoord['.$row['id'].']" id="antwoord['.$row['id'].']" value="'.$row5['antwoord'].'"></td></tr>';
}
?>
while($row5 = mysql_fetch_array($result5))
{
echo '<tr><td><input type="text" name="antwoord['.$row['id'].']" id="antwoord['.$row['id'].']" value="'.$row5['antwoord'].'"></td></tr>';
}
?>
Ik denk dat dit is wat je bedoelt.
@Blanche, ik wist niet dat dat kon, maar ik ga het zo eens uitproberen, en dan moet dat neem ik aan ook weer met die $key => $value vorm?
Dus met een foreach loop kun je die er weer uithalen zoals je zelf al zei.
de if statement die je op regel 20 ziet werkt niet helemaal zoals ik zou willen. hij pakt namelijk steeds de else waardoor als er alreeds antwoorden zijn de (gewijzigde) antwoorden nogmaals worden ingevoegd waardoor ik dus het dubbele aantal antwoorden heb.
maar hij zou dus als er alreeds antwoorden van die prijsvraag zijn ze moeten updaten, dit gebeurt echter niet, zit er nou een fout in mijn "antwoordentel" query ($query6), of moet ik het ergens anders zoeken?
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
include('includeSecurity.php');
if ((!is_numeric($_GET['id'])) && $_GET['id'] != '')
{
echo('Er is een fout opgetreden!');
}
else
{
$vraagID = $_GET['id'];
if ($_SERVER['REQUEST_METHOD'] == "POST")
{
extract($_POST);
$query6 = "SELECT COUNT(*) AS aantal FROM prijsvraagantwoorden WHERE prijsvraagID=".$vraagID;
$result6 = mysql_query($query6) or die (mysql_error());
$aantalresult = mysql_result($result6,'aantal');
if (aantalresult > 0)
{
foreach ($antwoord as $id => $answer)
{
$query7 = "UPDATE
prijsvraagantwoorden
SET
antwoord = '".$answer."'
WHERE
id = ".$id;
$result7 = mysql_query($query7) or die (mysql_error());
}
}
else
{
foreach ($antwoord as $answer)
{
$query2 = "INSERT INTO
prijsvraagantwoorden
(prijsvraagID,
antwoord)
VALUES
('".$vraagID."',
'".$answer."')";
$result2 = mysql_query($query2) or die (mysql_error());
}
}
?><META http-equiv="refresh" content="0; URL=?page=nieuweprijsvraag"><?php
}
else
{
$query4 = "SELECT vraag,aantalantwoorden FROM prijsvragen WHERE id=".$vraagID;
$result4 = mysql_query($query4) or die (mysql_error());
$row4 = mysql_fetch_array($result4);
$aantalantwoorden = $row4['aantalantwoorden'];
$query5 = "SELECT id,antwoord FROM prijsvraagantwoorden WHERE prijsvraagID=".$vraagID;
$result5 = mysql_query($query5) or die (mysql_error());
?><form action="<?php $_SERVER['PHP_SELF'] ?>" method="post"><?php
echo('<table>');
echo('<tr><td><b>Vraag</b></td><td><input type="text" name="vraag" id="vraag" size="50" value="'.$row4['vraag'].'"></td></tr>');
echo('<tr><td colspan="2"><br /><b>Antwoorden</b></td></tr>');
if (mysql_num_rows($result5))
{
while($row5 = mysql_fetch_array($result5))
{
echo('<tr><td><input type="text" name="antwoord['.$row5['id'].']" id="antwoord['.$row5['id'].']" value="'.$row5['antwoord'].'"></td></tr>');
}
}
else
{
for ($i=1; $i<=$aantalantwoorden; $i++)
{
echo('<tr><td><input type="text" name="antwoord[]" id="antwoord[]"></td></tr>');
}
}
echo('<tr><td colspan="2"><input type="submit" name="submit" id="submit" value="Toevoegen"></td></tr>');
echo('</table>');
echo('</form>');
}
}
?>
include('includeSecurity.php');
if ((!is_numeric($_GET['id'])) && $_GET['id'] != '')
{
echo('Er is een fout opgetreden!');
}
else
{
$vraagID = $_GET['id'];
if ($_SERVER['REQUEST_METHOD'] == "POST")
{
extract($_POST);
$query6 = "SELECT COUNT(*) AS aantal FROM prijsvraagantwoorden WHERE prijsvraagID=".$vraagID;
$result6 = mysql_query($query6) or die (mysql_error());
$aantalresult = mysql_result($result6,'aantal');
if (aantalresult > 0)
{
foreach ($antwoord as $id => $answer)
{
$query7 = "UPDATE
prijsvraagantwoorden
SET
antwoord = '".$answer."'
WHERE
id = ".$id;
$result7 = mysql_query($query7) or die (mysql_error());
}
}
else
{
foreach ($antwoord as $answer)
{
$query2 = "INSERT INTO
prijsvraagantwoorden
(prijsvraagID,
antwoord)
VALUES
('".$vraagID."',
'".$answer."')";
$result2 = mysql_query($query2) or die (mysql_error());
}
}
?><META http-equiv="refresh" content="0; URL=?page=nieuweprijsvraag"><?php
}
else
{
$query4 = "SELECT vraag,aantalantwoorden FROM prijsvragen WHERE id=".$vraagID;
$result4 = mysql_query($query4) or die (mysql_error());
$row4 = mysql_fetch_array($result4);
$aantalantwoorden = $row4['aantalantwoorden'];
$query5 = "SELECT id,antwoord FROM prijsvraagantwoorden WHERE prijsvraagID=".$vraagID;
$result5 = mysql_query($query5) or die (mysql_error());
?><form action="<?php $_SERVER['PHP_SELF'] ?>" method="post"><?php
echo('<table>');
echo('<tr><td><b>Vraag</b></td><td><input type="text" name="vraag" id="vraag" size="50" value="'.$row4['vraag'].'"></td></tr>');
echo('<tr><td colspan="2"><br /><b>Antwoorden</b></td></tr>');
if (mysql_num_rows($result5))
{
while($row5 = mysql_fetch_array($result5))
{
echo('<tr><td><input type="text" name="antwoord['.$row5['id'].']" id="antwoord['.$row5['id'].']" value="'.$row5['antwoord'].'"></td></tr>');
}
}
else
{
for ($i=1; $i<=$aantalantwoorden; $i++)
{
echo('<tr><td><input type="text" name="antwoord[]" id="antwoord[]"></td></tr>');
}
}
echo('<tr><td colspan="2"><input type="submit" name="submit" id="submit" value="Toevoegen"></td></tr>');
echo('</table>');
echo('</form>');
}
}
?>
echo $aantalresult eens om te zien waar daaruit komt...
daarna heb ik hem pas na 2 seconden laten doorsturen zodat ik hem ook in het gedeelte kon laten echoen wat uitgevoerd werd na de submit, hier kwam ook 4 uit.
Dit is het dus eigenlijk niet.
Eh Stefan, je bent een $'tje vergeten. Op regel 20 moet natuurlijk wel $aantalresult staan ;)
in ieder geval werkt de update nu, hij update het goede record enzo.
@blanche, bedankt!
De kleinste foutjes zijn altijd het moeilijkst te vinden :)
Gewijzigd op 01/01/1970 01:00:00 door - -
ten tweede wilde ik dit script graag dit weekend af hebben, en dat is nu gelukt.
overigens ben jij geen mod en zul jij vast ook wel eens dingen doen die niet helemaal kloppen ;)
ok, is al goed ;)