Undefined index: id in

Status
Niet open voor verdere reacties.

Triksken59

Gebruiker
Lid geworden
6 dec 2008
Berichten
33
Ik heb een kleine db gemaakt als test om later uit te breiden met meer gegevens.
DB soft naam table licentie met volgende gegevens
id bigint auto_increment primaire sleutel
Naam varchar(50)
Versie varchar(50)

invoegen.php werkt via een formulier (OK)
de gegevens opvragen doe ik in opvragen.php (werkt ook goed)
aanpassen.php - hier krijg ik een een foutmelding Undefined index: id in C:\Wamp.....on line 26
aanpassen.php maakt ook gebruik van een formulier zodat alle velden kunnen opgedate worden. Als ik nu klik op de link Update, en ik wijzig iets in één van de velden wordt dit correct uitgevoerd.
De foutmelding verwijst naar $id=$_GET['id'];

hieronder de volledige code:
PHP:
<?php
include ("header.php");
include("db_soft.php");

if(isset($_POST['updaten'])) {
 		$Naam=$_POST['Naam'];
		$Versie=$_POST['Versie'];
		$id=$_POST['id'];
		$mysql_id=mysql_connect("$dbhost","$dbuser","$dbpass");
		$sql="UPDATE licentie SET Naam='$Naam',Versie='$Versie'     WHERE id='$id'" ;
		$res=mysql_db_query("$db","$sql",$mysql_id);
			$fout=mysql_errno($mysql_id);
			if ($fout != 0) {
			$fout=mysql_error($mysql_id);
			echo '<font color="#FF2306">' . $fout . '</font>';
			mysql_close($mysql_id);
			echo '</body></html>';
			exit;
			}
			else {
				echo '<div align="center"><h3>De gegevens werden in de database aangepast</h3><br></div>';
				mysql_close($mysql_id);
				exit;
			}	
}
$id=$_GET['id'];

if(isset($id)) {
	$mysql_id=mysql_connect("$dbhost","$dbuser","$dbpass");
	$sql="select * from licentie where id = '$id'";
	$res=mysql_db_query("$db","$sql",$mysql_id);	$fout=mysql_errno($mysql_id);
			if ($fout != 0) {
			$fout=mysql_error($mysql_id);
			echo '<font color="#FF2306">' . $fout . '</font>';
			mysql_close($mysql_id);
			echo '</body></html>';
			exit;
			}
	$row=mysql_fetch_row($res); 
	//echo $id;
	?>
	
	<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
	<table>
	<tr><td>Naam :</td><td><input type="text" name="Naam" size="100" value="<?php echo $row['1'];?>"></td></tr>
	<tr><td>Versie :</td><td><input type="text" name="Versie" size="100" value="<?php echo $row['2'];?>"></td></tr>

	<tr><td><input type="hidden" name="id" value="<?php echo $id;?>"></td></tr>
	<tr><td>&nbsp;</td><td>&nbsp;</td></tr>
	<tr><td><input type="submit" name="updaten" value="Gegevens updaten"></td></tr>
	</table>
	</form>
<?php
mysql_close($mysql_id);
}
else {
$mysql_id=mysql_connect("$dbhost","$dbuser","$dbpass");
$sql="select * from licentie";
$res=mysql_db_query("$db","$sql",$mysql_id);
	$fout=mysql_errno($mysql_id);
		if ($fout != 0) {
		$fout=mysql_error($mysql_id);
		echo '<font color="#FF2306">' . $fout . '</font>';
		mysql_close($mysql_id);
		echo '</body></html>';
		exit;
		}
$aantal_lijnen=mysql_num_rows($res);
$aantal_velden=mysql_num_fields($res);
echo "<br><br>";
echo '<table border=2  >';
for($i=0;$i<$aantal_velden;$i++) {
	printf("<th class=\"db\">%s</th>",mysql_field_name($res,$i));
	}
	echo "<th class=\"db\">Update</th>"; # toegevoegd
for($i=0;$i<$aantal_lijnen;$i++) {
	$row=mysql_fetch_row($res);
	echo '<tr>';
	foreach($row as $col) {
		$id=$row['0'];
		if(!$col) $col="&nbsp;";
		echo "<td class=\"db\">$col</td>";
	}
	echo "<td class=\"db\"><a href=\"aanpassen.php?id=$id\" class=\"links\">Update</a></td></tr>"; # veranderd
	}
echo "</table>";
echo '<br><br>';
mysql_close($mysql_id);
}
?>
 
Laatst bewerkt door een moderator:
Ik zie denk ik het probleem, je vraagt het id op maar $_GET maar je stuurt hem erheen met $_POST via je formulier toch?
Dan moet je $_GET even veranderen in $_POST.

Of optie 2: je vraagt $_GET['id'] op voordat je checkt of die überhaupt wel geset is. Dus check eerst of die geset of gebruik
de functie empty();

PS: Met de PHP tags er om heen leest het wat makkelijker. [ PHP] en [/ PHP] zonder spaties dan.
PHP:
<?php
include ("header.php");
include("db_soft.php");

if(isset($_POST['updaten'])) {
 		$Naam=$_POST['Naam'];
		$Versie=$_POST['Versie'];
		$id=$_POST['id'];
		$mysql_id=mysql_connect("$dbhost","$dbuser","$dbpass");
		$sql="UPDATE licentie SET Naam='$Naam',Versie='$Versie'     WHERE id='$id'" ;
		$res=mysql_db_query("$db","$sql",$mysql_id);
			$fout=mysql_errno($mysql_id);
			if ($fout != 0) {
			$fout=mysql_error($mysql_id);
			echo '<font color="#FF2306">' . $fout . '</font>';
			mysql_close($mysql_id);
			echo '</body></html>';
			exit;
			}
			else {
				echo '<div align="center"><h3>De gegevens werden in de database aangepast</h3><br></div>';
				mysql_close($mysql_id);
				exit;
			}	
}
$id=$_GET['id'];

if(isset($id)) {
	$mysql_id=mysql_connect("$dbhost","$dbuser","$dbpass");
	$sql="select * from licentie where id = '$id'";
	$res=mysql_db_query("$db","$sql",$mysql_id);	$fout=mysql_errno($mysql_id);
			if ($fout != 0) {
			$fout=mysql_error($mysql_id);
			echo '<font color="#FF2306">' . $fout . '</font>';
			mysql_close($mysql_id);
			echo '</body></html>';
			exit;
			}
	$row=mysql_fetch_row($res); 
	//echo $id;
	?>
	
	<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
	<table>
	<tr><td>Naam :</td><td><input type="text" name="Naam" size="100" value="<?php echo $row['1'];?>"></td></tr>
	<tr><td>Versie :</td><td><input type="text" name="Versie" size="100" value="<?php echo $row['2'];?>"></td></tr>

	<tr><td><input type="hidden" name="id" value="<?php echo $id;?>"></td></tr>
	<tr><td>&nbsp;</td><td>&nbsp;</td></tr>
	<tr><td><input type="submit" name="updaten" value="Gegevens updaten"></td></tr>
	</table>
	</form>
<?php
mysql_close($mysql_id);
}
else {
$mysql_id=mysql_connect("$dbhost","$dbuser","$dbpass");
$sql="select * from licentie";
$res=mysql_db_query("$db","$sql",$mysql_id);
	$fout=mysql_errno($mysql_id);
		if ($fout != 0) {
		$fout=mysql_error($mysql_id);
		echo '<font color="#FF2306">' . $fout . '</font>';
		mysql_close($mysql_id);
		echo '</body></html>';
		exit;
		}
$aantal_lijnen=mysql_num_rows($res);
$aantal_velden=mysql_num_fields($res);
echo "<br><br>";
echo '<table border=2  >';
for($i=0;$i<$aantal_velden;$i++) {
	printf("<th class=\"db\">%s</th>",mysql_field_name($res,$i));
	}
	echo "<th class=\"db\">Update</th>"; # toegevoegd
for($i=0;$i<$aantal_lijnen;$i++) {
	$row=mysql_fetch_row($res);
	echo '<tr>';
	foreach($row as $col) {
		$id=$row['0'];
		if(!$col) $col="&nbsp;";
		echo "<td class=\"db\">$col</td>";
	}
	echo "<td class=\"db\"><a href=\"aanpassen.php?id=$id\" class=\"links\">Update</a></td></tr>"; # veranderd
	}
echo "</table>";
echo '<br><br>';
mysql_close($mysql_id);
}
?>
 
Laatst bewerkt:
Dank u voor uw snelle reactie, ik ben nog niet zo vertrouwd met het forum.

Ik snap het niet zo goed, ik ben nog maar pas bezig met php en mysql.
Als ik $_GET wijzig in $_POST, blijft het resultaat net hetzelfde.
ik krijg nog steeds Undefined index: id in C:\wamp... on line 26.
Dit is wat ik gedaan heb.
PHP:
$id=$_GET['id'];
heb ik gewijzigd in
PHP:
$id=$_POST['id'];
 
probeer is mijn andere oplossing... je vraagt nu $_GET['id'] , maar als er geen 'id' aanwezig is krijg je die error.
Dit stuk dus:

$id=$_GET['id'];

if(isset($id)) {


veranderen in :



if(isset($_GET['id'])) {

$id=$_GET['id'];
 
Laatst bewerkt:
Hartelijk dank. Dat is de oplossing.
Ik heb dit nu gewijzigd zoals je zei:
PHP:
if(isset($_GET['id'])) {
$id=$_GET['id'];

Alles werk. Dank u.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan