ik heb een script om prijsvragenantwoorden toe te voegen. nu heb ik een aantal tekstvelden en door middel van een foreach insert ik deze in de database.
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

<?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>');
	}
}
?>
Jep, de id die eerst in $row['id'] stond, is na het posten van het formulier als key van de array $antwoorden terug te vinden.

Dus met een foreach loop kun je die er weer uithalen zoals je zelf al zei.
ik heb onderstaande code, maar het probleem is nu het volgende.

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?

<?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>');
	}
}
?>
echo $aantalresult eens om te zien waar daaruit komt...
ik had de query even in het else gedeelte geplakt (form gedeelte) en aantalresult laten echoen. hier kwam 4 uit wat klopt.

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 ;)
zo he, wat een klein lullig foutje, maargoed, overkomt de besten zullen we maar zeggen.

in ieder geval werkt de update nu, hij update het goede record enzo.

@blanche, bedankt!
De kleinste foutjes zijn altijd het moeilijkst te vinden :)
Ristig aan aub. Je hebt nu al 3 keer gebumbt zonder 24 uur te wachten, is meer dan genoeg (vind ik)
@jonathan, ik heb weliswaar geen 24 uur gewacht, daar was ik mij ook van bewust. maar ten eerste was het maar 2 keer en de eerste keer was het ongeveer 20 uur, en de tweede keer 21 uur.

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 ;)

Reageren