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>');
	}
}
?>
het is weliswaar nog geen 24 uur geleden, maar wil hem toch even omhoog schoppen.

na dit weekend is mijn vakantie ook weer voorbij, en dan wil ik dit script toch wel volledig werkend hebben ;)
Zet allereerst eens

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>

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:

UPDATE tabel
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...
@Blanche, er zijn geen fouten op dit moment.

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.
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?

<?php
foreach($values as $key => $value)
{
echo $key.': '.$value.'<br />';
}
?>
@Blanche, ik ben geen held met arrays, dat zal ik je al wel even zeggen.

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.
Voer onderstaand scriptje eens uit, dan zie je precies wat er gebeurt als je array's gebruikt in een formulier.

<?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>';
}
?>
ok, maar dan wordt er weergegeven wat ik al wist.

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.
Aha, nu snap ik je vraag (denk ik :P). Je kunt aan de array die je gebruikt voor de naam van je input veld natuurlijk ook een key meegeven:

<?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>';
}
?>

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?

Reageren