Ben al dagen bezig om een storingdienstrooster online te krijgen.
Het is nu gedeeltelijk gelukt.
Nu lukt het me niet om de edit die dient om in die rij wijzigingen door te voeren werkend te krijgen.

gegevens:
online op http://gigabit.ifastnet.com/storingdienst/index.php
Wat gaat er mis? Ik krijg nu alleen de melding:

id bestaat en heeft de waarde: "19"

Je moet dus een formulier maken met de waarden van die rij als value van dat veld.

Daarna met een UPDATE SET je query uitvoeren en dan moet het werken.
deze staat nu online maar werkt niet !!
Ik heb nog weinig kennis van php.
Wil je mij helpen bij het maken van een juist formulier?
<?php

// Connect to MySQL
include 'config.php';


if(isset($_POST['submit'])) {
$updatedrows = 0;
foreach($_POST['changed'] as $id) {
$week = $_POST["week $id"];
$begindatum = $_POST["begindatum $id"];
$einddatum = $_POST["einddatum $id"];
$dienstdoende = $_POST["dienstdoende $id"];
$backup = $_POST["backup $id"];
$land = $_POST["land $id"];
$query = "UPDATE storingdienstrooster SET week='$week', "
. "begindatum ='$begindatum ', einddatum='$einddatum', dienstdoende='$dienstdoende', "
. "backup='$backup', land='$land' WHERE id=$id";
mysql_query($query);
$updatedrows += mysql_affected_rows();
}
}

//grab data from database

$result = mysql_query('SELECT * FROM storingdienstrooster WHERE id=$id');
$products = array();
while($row = mysql_fetch_assoc($result)) {
$products[$row['id']] = array(
'week '=>$row['week '],
'begindatum '=>$row['begindatum '],
'einddatum'=>$row['einddatum'],
'dienstdoende'=>$row['dienstdoende'],
'backup'=>$row['backup'],
'land'=>$row['land']);

;

}
mysql_close();

?>
<?php if(isset($updatedrows))
echo $updatedrows . " row(s) updated.<br /><br />\n";
?>
</div>
<form method="post"
action="<?php echo $_SERVER['PHP_SELF']; ?>"
name="updateform">
<table width="100%" border="0" cellspacing="0" cellpadding="5">
<tr>
<td><table border="1" align="center">
<tr>
<th><div align="center">Week</div></th>
<th><div align="center">Begindatum</div></th>
<th><div align="center">einddatum</div></th>
<th><div align="center">Dienstdoende</div></th>
<th><div align="center">Backup</div></th>
<th><div align="center">land</div></th>
</tr>
<?php foreach($products as $id=>$product) { ?>


<tr>
<td>
<div align="center">
<input name="changed[]" type="hidden" value="<?php echo $id; ?>" />
</div></td>
<td><div align="center">
<input type="text" size="10"
value="<?php echo $product['week']; ?>"
name="week_<?php echo $id; ?>" />
</div></td>
<td><div align="center">
<input type="text" size="10"
value="<?php echo $product['begindatum']; ?>"
name="begindatum_<?php echo $id; ?>" />
</div></td>
<td><div align="center">
<input type="text" size="10"
value="<?php echo $product['einddatum']; ?>"
name="einddatum_<?php echo $id; ?>" />
</div></td>
<td><div align="center">
<input type="text" size="20"
value="<?php echo $product['dienstdoende']; ?>"
name="dienstdoende_<?php echo $id; ?>" />
</div></td>
<td><div align="center">
<input type="text" size="20"
value="<?php echo $product['backup']; ?>"
name="backup_<?php echo $id; ?>" />
</div>
<td><div align="center">
<input type="text" size="30"
value="<?php echo $product['land']; ?>"
name="land_<?php echo $id; ?>" />
</div></td></td>
</tr>
<?php } //end for loop ?>
<tr>
<th><div align="center">&nbsp;</div></th>
<th><div align="center">&nbsp;</div></th>
<th><div align="center">&nbsp;</div></th>
<th><div align="center">&nbsp;</div></th>
<th><div align="center">&nbsp;</div></th>
<th><div align="center">&nbsp;</div></th>

</table>
<div align="center"><br />
<input type="submit" name="submit" value="Submit" />
</div>
</form>
</td>
</tr>

</table>
</body>
</html>
Wees eens wat duidelijker. Wat werkt er niet, hoever kom je? En ik denk dat weinig mensen zin hebben een heel script door te werken. Post eens alleen het deel waarmee je wil gaan editen.
Ok ik zal het een voor een doen.
Ik wil een rij data uit de tabel halen en weer geven.
Kan dat zo:

$result = mysql_query('SELECT * FROM storingdienstrooster WHERE id=$id');
$products = array();
while($row = mysql_fetch_assoc($result)) {
$products[$row['id']] = array(
'id'=>$row['id'],
'week '=>$row['week '],
'begindatum '=>$row['begindatum '],
'einddatum'=>$row['einddatum'],
'dienstdoende'=>$row['dienstdoende'],
'backup'=>$row['backup'],
'land'=>$row['land']);
De nette manier:
<?php
$sql = "
SELECT *
FROM storingdienstrooster
WHERE id= " . $id;
if (!$res = mysql_query ($sql)) {
echo '<pre>';
trigger_error (mysql_errno () ': ' mysql_error ());
echo htmlentities ($sql);
echo '</pre>';
}
else {
while ($row = mysql_fetch_assoc ($res)) {
foreach ($row as $key => $value) {
echo '<p>' . $key . ' heeft de waarde: ' . $value . '</p>';
}
echo '<hr>';
}
}
?>
Je eerste opzet is goed; maak in de overzichtspagina een edit link, met daarin het id van het record dat je wilt editen.

Zodra iemand op die pagina terechtkomt, ga je kijken wat er in GET staat. Je checkt ook meteen of die variabele wel een getal is met [php]ctype_digit[/php]. Gebruikers kunnen immers van alles op de adresbalk invullen.

Daarna ga je een query in elkaar sleutelen op basis van het id dat je uit de GET variabele krijgt.

Dit zijn de eerste stappen. Probeer maar eens een beginnetje te maken, dan helpen wij je wel weer verder zodra je vastloopt.
Ik heb in het overzicht een link gemaakt naar edit:
<a href=\"edit.php?id=$id\">Edit</a>

Jan moet ik nu met de code die je hiervoven hebt geplaatsts verder gaan of ..
Kun je nog een zetje geven
Ja, het beginnetje is er al, zoals ik zei. Nu het opzetje proberen uit te breiden volgens de tips uit mijn vorige post :-)
Ik kom niet verder !! (na aanwijzing in post 10074 van Jan Koehoorn)
Moet alles afstruinen gezien ik zelf nog weinig kennis heb van php. Heb wel dit gevonden over ctype_digit

// voorbeeld van gebruik ctype_digit
$strings = array('1820.20', '10002', 'wsl!12');
foreach ($strings as $testcase) {
if (ctype_digit($testcase)) {
echo "The string $testcase consists of all digits.\n";
} else {
echo "The string $testcase does not consist of all digits.\n";
}
}

Ik weet niet hoe nu eerst verder te gaan. Volgens Jan moet ik eerst gaan "kijken wat er in get staat" ik zie niet wat ik nu moet doen ?
Wie help me een handje.

Reageren