Mensen,

ik wil een pagina maken met daarin wat gegevens uit de database. Weergegeven in een tabel...dat lukt! Laatste kolom is dan een 'edit'.

Nu wil ik graag dat als ik die edit aanklik, dat ik dan de velden in tekstvelden krijg zodat ik kan wijzigen/toevoegen. Ik krijg dit niet goed....de velden blijven/zijn leeg.

Heeft iemand een voorbeeld? Anders kan/wil ik hier wel de code posten, maar is dat leesbaar?

Herbert
Zet de relevante code hier even neer, kunnen we meer mee. Dus waar je de informatie uit de database haalt en waar je de informatie in het formulier zet.
Even een klein opzetje hoe je dit zou kunnen doen.
Ik bespreek alleen even de stappen, de daadwerkelijke uitvoering moet je zelf even doen. Mocht je daarbij problemen hebben dan zijn we daar om te helpen.

1. In je Edit link neem je de id op van je gegevens

<a href="bewerk.php?id=<?php echo htmlspecialchars($row['id']) ;?>">Edit,/a>

2. Op pagina bewerk.php zet je als eerst een controle of de id is opgegeven.
Dan maak je een Query waarbij je de gegevens ophaalt met de gewenste id.
Je zet dus in je Query een:
WHERE id ='".mysql_real_escape_string($_GET[ 'id' ])."' ";
3. Bij de input velden zet je in de value:
<input value="<?php echo htmlspecialchars($row['naam']) ;?>">


Dit moet je een redelijk zet in de goede richting geven.
Hertog Jan op 03/05/2012 17:37:39

Zet de relevante code hier even neer, kunnen we meer mee. Dus waar je de informatie uit de database haalt en waar je de informatie in het formulier zet.


Hoe kan ik dat 't beste doen...dat 't ook leesbaar is!?
tussen de [co.de][/co.de] tags (zonder de punten)

<?php
	//voor weergeven van errors/warnings
	ini_set('display_errors',1);
	error_reporting(E_ALL);
	
	session_start();
	if (isset($_SESSION["username"])) 
	{
?>
<html>
<head>
<title>testpagina</title>
</head>
<style type="text/css">
body {
	background: #ffffff;
	font-family: Tahoma;
	font-size: 12px;
}
h1 {
	font-size: 14px;
}
table, td, tr {
	font-size: 12px;
	bordercolor: #000000;
	border: 1px dashed;
}
.td_header {
	background-color: #CCCCCC;
	font-weight: bold;
}
img {
	border: 0px;
}
</style>
<body>

<h1>testpagina</h1>
<img src=images/edit.png> Wijzigen <br /><br />

<table width="800px">
 <tr>
  <td class = "td_header">Id</td>
  <td class = "td_header">Pagina</td>
  <td class = "td_header">Titel</td>
  <td class = "td_header">Omschrijving</td>
  <td class = "td_header">Zoekwoorden</td>
  <td class = "td_header"></td>
 </tr>
 
 <?
 $sql = "SELECT * FROM metadata ORDER BY id ASC";
 $query = mysql_query($sql);
 while($rij = mysql_fetch_assoc($query)) {
 	$id = $rij['id'];
   
	$pagina = $rij['pagina'];
	   
   	echo "<tr>\n";
   	echo "<td width=\"4%\">".$id."</td>\n";
	echo "<td width=\"10%\">".$rij['pagina']."</td>\n";
      	echo "<td width=\"30%\">".$rij['titel']."</td>\n";
	echo "<td width=\"30%\">".$rij['description']."</td>\n";
	echo "<td width=\"30%\">".$rij['keywords']."</td>\n";

	echo "<td width=\"3%\"><a href=\"editmetadata.php?action=edit&id=".$id."\"><img src=\"images/edit.png\"></a></td>\n";
	echo "</tr>\n"; 
 }
?>
</table><br />
<hr>

<?
	if(isset($_GET['action'])) {
	$action=$_GET['action'];
	}
	switch ($action){
    
	    case "edit":
			//gegevens ophalen uit db
			 $sql = "SELECT * FROM metadata WHERE id =$id";
			 $query = mysql_query($sql);
			 while($rij = mysql_fetch_assoc($query)) {

			$id = $rij['id'];
			$pagina = $rij['username'];
			$titel = $rij['naam'];
			$description = $rij['email'];
			$Keywords = $rij['keywords'];

			}
			?>
			<form name="edituser" method="post" action="editmetadata.php?action=edit">
			  <p>Titel: <input type="text" name="titel" value="<?=$titel?>">
			  </p>
			  <p>Omschrijving: <input type="text" name="description" value="<?=$description?>">
			  </p>
			  <p>Zoekwoorden: <input type="text" name="keywords" value="<?=$keywords?>">
			  </p>
			  <p>
				 <input type="submit" name="Submit2" value="Wijzigen">
			  </p>
			</form>
			<?

			//toevoegen van user in db
		    if($_SERVER['REQUEST_METHOD'] == "POST") {
				//$naam = mysql_real_escape_string($_POST['naam']); 
		    $sql = "UPDATE metadata SET titel='".$_POST['titel']."', description='".$_POST['description']."', keywords='".$_POST['keywords']."' WHERE id='".$id."'";
     		$query = mysql_query($sql);
			$tekst = "pagina " .$pagina ." is gewijzigd";
			?><meta http-equiv="refresh" content="2;URL=editmetadata.php"><?	   
			}
			break;
		default:
			echo "In bovenstaand overzicht ziet u enkele metadata. U kunt deze hier wijzigen.";
			break;
	} //einde van de switch

echo $tekst;
?>
<?php
	}
	
	else{
	$text = "U bent niet goed ingelogd, U gaat terug naar de loginpagina";
	echo($text);
?>
<meta http-equiv="refresh" content="1;URL=index.php">
<?
	}
?>

</body>
</html>
Het is code met een [ en een ] ipv < >
Nick Dijkstra op 03/05/2012 21:18:08

Het is code met een [ en een ] ipv < >

sorry...verkeerd gelezen. Aangepast

Misschien blijven ze leeg omdat je shorttags gebruikt? bijv: <?=$description?>
Waarom voeg je $rij['naam'] eerst toe aan de variabel $titel?

i.p.v. gewoon:


<html>
<input type="text" name="titel" value="<?php echo $rij['naam'] ?>">
</html>


Tevens is het enige wat jij in je voorbeeld code doet de variabel in de value zetten.

Denk eraan dat php niet zichtbaar is, dit is programmeer taal die op de server wordt uitgevoerd.

Dus je zult er een echo of print voor moeten zetten, zodat de PHP engine weet dat hij het op je scherm moet afdrukken.
Op het script hierboven valt nog wel wat meer aan te merken.
Kopiƫren van variabelen. Geen geen toegevoegde waarde.
selecteer het veld/de velden, gebruik geen * in je query.
Foutafhandeling van je query ontbreekt.
Gebruik bij php (echo) ' en in html " --> scheelt een boel keer escapen.
Variabelen buiten quotes.

Reageren