Hi All,

Ik was een beetje aan het oefenen met data toe te voegen in db middels een form door een tutorial. Nu is dat gelukt. Ik kan het toevoegen.
Maar dan zie ik nog oude gegevens. Plus dat als je zinloos op submit blijft drukken die een stukje geschiedenis mee pakt. Ik bedoel hiermee, Hij loopt 1 of 2 submit achter. Als ik nu a invoer dan zie ik nog k van de vorige invoer terwijl als ik in mysql db ga kijken, dan is dat veld wel degelijk geupdate.

Dus ik wil dat de pagina automatisch refreshed zodat de ingevoerde data weer zichtbaar is.

Weet iemand daar een oplossing op ?
Ikke niet :(

<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<?php
include('requires/connect_db.php');
$getinfo1 = "SELECT site_id, site_name, site_luck FROM site";
$result1 = mysql_query($getinfo1);
while ($row = mysql_fetch_assoc($result1)){
$site_name1 = $row['site_name'];
$site_luck = $row['site_luck'];
}
echo $site_name1;
echo '<br>'.	$num_sites;
echo '<br>'.$site_luck;
?>
<form method="post" action="">
<input type="text" name="site2" value="<?php echo $site_luck ?>">
<input type="hidden" name="nr" value="refresh">
<input type="submit" name="submitchange1" value="Do it">
</BODY>
</HTML>
<?php
if (isset($_POST['submitchange1'])) {
$update = $_POST['site2'];
$change_db ="UPDATE site SET site_luck='".$update."'";
$do_it = mysql_query($change_db) or die (mysql_error());
mysql_close();
}
?>
Je moet dus wel de update als eertste doen en dan pas tonen.
Mag ik zeggen dat je code er best rommelig uit ziet?
Wat doe je fout:

[li]Je gebruikt geen foutafhandeling[/li]
[li]Geen logische tabs[/li]
[li]Controleren of er gepost is doe je met:[/li]
if($_SERVER['REQUEST_METHOD'] == 'POST')



Wel heb je netjes $var's buiten de quotes! ;)

Gr,
Aanvulling op Milo: Je script is lek => sql-injection. Verder als je iets update, dan update je alle records.
Na ik denk dat je zoiets bedoelt:

<html>
	<head>
		<title>Pagina titel</title>
	</head>
	
	<body>
		<?php
		include('requires/connect_db.php');
		
		// Alles uit de database halen
		$sql = mysql_query("SELECT site_id, site_name, site_luck FROM site ORDER BY site_id ASC");
			
		// Als query gelukt is
		if($sql)
		{
			// Als er items aanwezig zijn
			if(mysql_num_rows($sql) > 0)
			{
				// Alle items echoen
				$rec = mysql_fetch_array($sql)
				
				// Als er op submit is gedrukt
				if($_SERVER['REQUEST_METHOD'] == 'POST')
				{
					// Updaten (mysql_real_escape_string doet de beveiliging)
					$upd = mysql_query("UPDATE site SET site_luck = '".mysql_real_escape_string($_POST['site2'])."'");
					
					// Als de query is gelukt
					if($upd)
					{
						echo 'Er is geüpdate';
					}
					else // Anders
					{
						echo 'Er is een fout opgetreden bij de query: <br />';
						echo mysql_error();
					}
				}
				else // Anders
				{			
					// Het formulier
					echo '<form method="post" action="">';
						echo '<input type="text" name="site2" value="'.$rec['site_luck'].'">';
						echo '<input type="hidden" name="nr" value="refresh">';
						echo '<input type="submit" value="Doe het">';
					echo '</form>';
				}
				
				// Alle items echoën
				foreach($rec as $row)
				{
					echo '<br />'.$row['site_name'];
					echo '<br />'.$row['site_luck'];
				}
			}
			else // Anders
			{
				echo 'Er zijn geen items aanwezig';
			}
		}
		else // Anders
		{
			echo 'Er is een fout opgetreden bij de query: <br />';
			echo mysql_error();
		}
		?>
	</body>
</html>


Bij het comment staat eigenlijk wel wat er gebeurt begrijp je het niet? vraag het maar :P
@Milo: Netjes. Maar op regel 30 heb je een onbekende $var.
@SanThe,

Hoe doe ik eerst update en dan tonen. En werkt dat dan ook als ik 2 keer achter elkaar de input verander ?

En hoe moet ik zeggen precies welke veld i.p.v alle records...

Ik kom hier niet uit. :(

De comments van Milo zijn al reeds bekend. Dit is ook geen script wat ik ga gebruiken. Het is puur om door te hebben hoe het e.e.a werkt. Dus als iemand graag wilt uitleggen hoe ik dit moet doen graag.

Ik weet dat ik lastig ben, Maar kan iemand dan ook vertellen de WAAROM het zo moet ? Ander leer ik er geen bal van.
@ SanThe: Als goed is is het nu opgelost ?
Graag uw mening ;)

Gr,

PS:
Het is vrij logisch hoor, je moet namelijk eest iets geupdate hebben voordat je updates kunt laten zien... (Je kunt ook niet gummen voordat je schrijft :P).
En foutafhandeling hoort er gewoon bij, is veel makkelijker om fouten op te sporen.
Zelfde als tabs, zo kun je makkelijker je script overzien...

Zo duidelijk of nog niet, dan moet j het zeggen hoor ;)
@Laurens: Zie eens de volgorde in het Milo-scriptje.

@Milo: Nu staat er een record in het formulier. Er is onbekend wélk record er in het formulier staat. Maar de $var is nu bekend.
@SanThe: Sorry, nu kan ik u niet helemaal volgen ;)
Milo schreef op 20.12.2009 22:52
@SanThe: Sorry, nu kan ik u niet helemaal volgen ;)

Wat kan je niet volgen?

Reageren