PHP 'id' werkt niet mee

Hallo,

Ik ben bezig een simple cms te maken en probeer nu het admin gedeelte te maken.
Het is de bedoeling om doormiddel van een ‘id’ alles in 1 pagina te laten werken en dus verschillende ‘id’ rijen te bewerken in mijn database.

Nu werkt het updaten van die database goed alleen is het probleem dat ik alleen “id=1” krijg en de andere rijen niet ingeladen worden.

dit is mijn code: [code]<?

processed when form is submitted back onto itself

if ($_SERVER['REQUEST_METHOD'] == "POST") {

    $id = $_POST["id"];
    $head = $_POST["head"];
    $content = $_POST["content"];

	# updaten van db
	mysql_query(" UPDATE content_index
	SET head='$head', content='$content'");

	echo "&lt;p&gt;Index ge-update&lt;/p&gt;";

	
	# check for errors
    if (mysql_error()) { print "Database Error: $sql " . mysql_error(); }

}
else { # display edit form (not post method)

	$id = $_GET["id"];
	 
	# setup SQL statement to retrieve link that we want to edit
	$sql  = " SELECT * FROM content_index ";
	$sql  = " WHERE id = $id ";

	# retrieve values
	$row = mysql_fetch_array($update, $datbase);
	$head = $row["head"];
	$content = $row["content"];

?>

<form name=“update” action=“index.php” method=“post”>
<input type=“hidden” name=“id” value="<?php echo $row_update[‘id’]; ?>">
<h1><input name=“head” type=“text” class=“form” value="<?php echo $row_update[‘head’]; ?>" size=35></h1>
<p><textarea name=“content” cols=35 rows=15 class=“form”><?php echo $row_update[‘content’]; ?></textarea></p>
<b><input name=“update” type=“submit” class=“form” value=“update”></b>

</form>

<? } ?>[/code]

ik hoop dat jullie me kunnen helpen

Het probleem dat je maar 1 row krijgt is omdat je geen loop van de database hebt in je form. Ook moet je bij het opvragen van de waarden, voordat je ze in de database opslaat, ook een loop maken om de goede waardes op te halen.

Ik vraag mij ook af hoe jij aan $row_update komt. Deze wordt nergens gedefinieerd.

Ook worden alle waardes direct in de database opgeslagen zonder enige ‘escaping’ van waardes.

Ik hoop dat je er iets aan hebt. Succes!

Hoe maak ik zo'n loop dan?

ik heb deze code uit een script en aangepast, ik ben zelf niet zo’n PHP’er maar probeer het aan de hand van doen en afkijken te leren.

Een handige site is PHP.net, en nu voor het ophalen van de rijen: [url=http://nl3.php.net/manual/nl/function.mysql-fetch-array.php]link[/url]

Succes!

Is dit:

$sql = " SELECT * FROM content_index ";
$sql = " WHERE id = $id ";

de bedoeling dat de $sql dit wordt:
SELECT * FROM content_index WHERE id = $id
dan moet het die zijn:
$sql = " SELECT * FROM content_index ";
$sql .= " WHERE id = $id "; //Puntje moest erbij, anders is $sql alleen WHERE id=$id

Hier hoe ik denk dat het moet:

[code:1:5ae92d872c]# processed when form is submitted back onto itself
if ($_SERVER[‘REQUEST_METHOD’] == “POST”) {

$id = $_POST["id"];
$head = $_POST["head"];
$content = $_POST["content"];

updaten van db

$sql=“UPDATE content_index SET head=’$head’, content=’$content’”;

mysql_query($sql);

echo "<p>Index ge-update</p>";

check for errors

if (mysql_error()) {
die ("Database Error: $sql " . mysql_error());

}

else { # display edit form (not post method)

$id = $_GET["id"]; //als je verwacht dat de id in de url staat, hoef je btw niet $_GET[""] te gebruiken kan ook zonder :wink:

setup SQL statement to retrieve link that we want to edit

$sql = " SELECT * FROM content_index ";
$sql .= " WHERE id = $id ";

retrieve values

$result= mysql_query($sql);
//dit als het voor 1 rij geldt.
$row = mysql_fetch_array($result);
$head = $row["head"];
$content = $row["content"];

?>

<form name=“update” action=“index.php” method=“post”>
<input type=“hidden” name=“id” value="<?php echo $row[‘id’]; ?>">
<h1><input name=“head” type=“text” class=“form” value="<?php echo $row[‘head’]; ?>" size=35></h1>
<p><textarea name=“content” cols=35 rows=15 class=“form”><?php echo $row[‘content’]; ?></textarea></p>
<b><input name=“update” type=“submit” class=“form” value=“update”></b>

</form>

<?
//dit voor meerdere rijen:
//while($row = mysql_fetch_array($result)){
//$head = $row[“head”];
//$content = $row[“content”];
?>
<!–
<form name=“update” action=“index.php” method=“post”>
<input type=“hidden” name=“id” value="<?php echo $row[‘id’]; ?>">
<h1><input name=“head” type=“text” class=“form” value="<?php echo $row[‘head’]; ?>" size=35></h1>
<p><textarea name=“content” cols=35 rows=15 class=“form”><?php echo $row[‘content’]; ?></textarea></p>
<b><input name=“update” type=“submit” class=“form” value=“update”></b>

</form>

<? //}

} ?>

[/code:1:5ae92d872c]

Hoop voor je dat dit werkt :wink:

thnx!... het ziet ernaar uit dat dit wel moet werken (met mijn miniem verstand van php) hij geeft alleen nog een error

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /Library/Apache2/htdocs/alleenstaandmoeder/admin/index.php on line 121

kan het zijn dat dit aan mijn versie van php ligt?

Wat staat er bij jouw regel 121 dan? (en de regel ervoor)

Overigens was het toch de bedoeling dat je meerder id’s (incl. inhoud) tegelijk kan bewerken? Dan zou je toch echt een loop moeten plaatsen. En die zie ik ook niet terug in de code van ‘Da Chicken’. (maar dat zegt hij ook al)

Tevens:

[code:1:9b1081fb63]$id = $_GET["id"]; //als je verwacht dat de id in de url staat, hoef je btw niet $_GET[""] te gebruiken kan ook zonder ;)[/code:1:9b1081fb63]
Dit is niet helemaal waar. Dit is afhankelijk van de setting van je PHP en van de versie. Ik zou wel gewoon $_REQUEST, $_POST of $_GET gebruiken.

Succes!

[code:1:8f2a31a009]$id = $_GET["id"]; //als je verwacht dat de id in de url staat, hoef je btw niet $_GET[""] te gebruiken kan ook zonder ;)[/code:1:8f2a31a009] Is inderdaad niet zomaar aan te nemen... als register globals uit staat MOEt je $_REQUEST, $_POST of $_GET gebruiken (wat sowizo wel een goed idee is om te doen).

er staat ook iets van

[code:1:8f2a31a009]# updaten van db
$sql=“UPDATE content_index SET head=’$head’, content=’$content’”;
[/code:1:8f2a31a009]

maar ik ga er even van uit dat je meerdere records in je content_index tabel hebt … dan moet je toch even aangeven welk record je wilt updaten!

[code:1:8f2a31a009]# updaten van db
$sql=“UPDATE content_index SET head=’$head’, content=’$content’ WHERE id=$id”;
[/code:1:8f2a31a009]

Wat is de code waar je meerdere rijen uit de database wil halen? die zie ik in je post niet terug!

en ja, php.net is een must om eens door te lezen…

Ja, gebruik zelf nooit GET, dus weet ook niet goed waarvoor niet het gebruikt xD, dacht dat je het gebruikte om strings uit de url te halen, niet dus...

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /Library/Apache2/htdocs/alleenstaandmoeder/admin/index.php on line 121

Ziet erna uit dat er geen rijen zijn gevonden en dan kan hij daar ook geen array van maken, volgens mij kan je dat controleren met mysql_num_rows() dacht ik zoiets:

[code:1:88a0a7ce2a]$aantal = mysql_num_rows($result);
if($aantal == 0){ //of (!$aantal)
die(‘Geen rijen gevonden’);
} else {
//code hier.[/code:1:88a0a7ce2a]