Hallo,

Bij het uitvoeren van onderstaande code komen bij de echo van $frontpage en $ID 2x een 'f' als waarde terug. Geen idee waarom. Kan iemand mij helpen? Alvast bedankt!


<?php
if (isset($_POST['frontpage'])){
	print_r($_POST);
	
	
		$queryError = false;	
		
		foreach($_POST AS $P) {
			$frontpage=$P['frontpage'];
			$ID=$P['ID'];
			echo $frontpage;
			echo $ID;
			$queryfront = mysql_query("UPDATE `content` SET frontpage = '$frontpage' WHERE `ID`=". (int) $ID, $connection);
			
			
			if(!$queryfront) {
				$queryError = true;
				echo 'error executing frontpage query' . mysql_errno() . ' : ' . mysql_error();
			}
		}

		if (!$queryError) { 
			
		} 
	}
?>
Je bent nu de POST array aan het doorlopen, ofwel je doorloopt iedere waarde die daarin zit en die probeer je toe te kennen een $frontpage en $ID.

Als je die foreach-loop eruit haalt, zal het wel werken.

(P.S. Denk ook aan het beveiligen van je script en controleren of er iets is gepost doe je dmv de request method.)
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
print_r($_POST);

//WERKING FOREACH:
foreach($_POST AS $elem)
echo $elem.'<br>';

//WERKING FOREACH MET DE INDEX VAN DE ARRAY:
foreach($_POST AS $key => $elem)
echo $key.': '.$elem.'<br>';


$result = mysql_query("UPDATE content SET frontpage = '" . $POST['frontpage'] . "' WHERE ID=". (int) $POST['ID'], $connection);


if(!$result) {
echo 'error executing frontpage query' . mysql_errno() . ' : ' . mysql_error();
}
}
?>

kijk nog eens goed hoe een foreach werkt
laat de backticks in je queries maar achterwege
testen of de request method POST is doe je zoals boven weergegeven.
mysql_query() geeft een resultaat terug en geen query
schrijf php variabelen, mysql tabelnamen en kolomnamen liever met uitsluitend kleine letters
(het laatste is geen must maar ik vind het makkelijker omdat je dan nooit hoeft na te denken
Was het nou id, Id of ID?)
Bedankt! Echter wanneer ik de foreach weghaal werkt het nog niet helemaal. En wanneer ik bovenstaande foreach gebruik werkt het ook nog niet helemaal. De foutmelding die ik krijg is: Undefined index: ID. Het is bedoeld voor onderstaande:


<?php
							
		if($result) {
								
								
		while ($row = mysql_fetch_assoc($result)) {
												echo '<tr><td><a href="managearticle.php?edit=' . $row['ID'] . '">' . 	$row['title'] . '</a></td>';
	echo '<td><input type="text" name="frontpage[]" value="' . $row['frontpage'] . '" /></td></tr>';
	}
}
?>


Nogmaal bedankt!
Lees goed de foutmelding, die heeft namelijk een betekenis:

Undefined index: ID

Er is een niet gedefinieerde index met de naam "ID". Kijken we in jouw code, dan zien we daar ergens $row['ID']. Blijkbaar klopt de naam ID niet. In de databse wordt vermoedelijk een andere naam gebruikt.
Bedankt! Wanneer ik op de link klik, wordt ik gewoon gelinkt naar /managearticle.php?edit=69. Dus de connectie naar de kolom ID is wel goed. Dat is het vreemde.
Als het goed is staat bij de foutmelding ook een regelnummer en een bestand aangegeven. Aan de hand daarvan kun je zien waar de fout zich voordoet. Wellicht staat de fout ergens anders.
Undefined index: ID in /overviewarticle2.php on line 32 en daar staat:


<?php
$result = mysql_query("UPDATE content SET frontpage = '" . $_POST['frontpage'] . "' WHERE ID=". (int) $_POST['ID'], $connection);
?>
Kijk... deze ID komt dus uit je POST gegevens (en heeft niks met de database te maken). Deze ID komt dus uit je formulier. Blijkbaar staat daar geen ID in, of het heet anders, bijvoorbeeld id (met kleine letters).
Ik kan helaas niks vinden. Zo ziet het gehele bestand eruit.


<?php
if (isset($_POST['frontpage'])){
 foreach($_POST AS $elem)
             echo $elem.'<br>';

        foreach($_POST AS $key => $elem)
             echo $key.': '.$elem.'<br>';


    $result = mysql_query("UPDATE content SET frontpage = '" . $_POST['frontpage'] . "' WHERE ID=". (int) $_POST['ID'], $connection);
            
            
    if(!$result) {
        echo 'error executing frontpage query' . mysql_errno() . ' : ' . mysql_error();
    }

	}


$result = mysql_query("SELECT * FROM content", $connection);

if (!$result) {
	
	echo 'error executing select query' . mysql_errno() . ' : ' . mysql_error();
}

?>

<html>
	<head>
		<?php include 'head.php'; ?>	
		<title>Overzicht</title>
	</head>
	<body>
		<?php include 'header.php'; ?>
		<section id="container"> 
			<div id="content">
				<p class="titel">Overzicht</p>
				<form action="" method="post">
					<table border="1">
						<tr>
						<td>Titel</td>
						<td>Volgorde op Homepage (>0)</td>
						</tr>
						<?php
							
						if($result) {
								
								
							while ($row = mysql_fetch_assoc($result)) {
									
								echo '<tr><td><a href="managearticle.php?edit=' . $row['ID'] . '">' . 	$row['title'] . '</a></td>';
								echo '<td><input type="text" name="frontpage[]" value="' . $row['frontpage'] . '" /></td></tr>';
							}
							}
						?>
					</table>
					<input type="submit" name="frontpage" value="frontpage"/>
				</form>
			</div>
		</section>
		<?php include 'footer.php'; ?>	
	</body>
</html>
Wat bedoel je met:
Dennis B op 04/05/2014 20:00:30

Ik kan helaas niks vinden.
?

Denk dat Ozzie de verklaring al gegeven heeft:
Ozzie PHP op 03/05/2014 18:48:34

Kijk... deze ID komt dus uit je POST gegevens (en heeft niks met de database te maken). Deze ID komt dus uit je formulier. Blijkbaar staat daar geen ID in, of het heet anders, bijvoorbeeld id (met kleine letters).

Dus: waar komt $_POST['ID'] vandaan?

Reageren