Ja Mels, ik wilde inderdaad een waarde in mijn veld
hebben.
Maar eigelijk... wil ik een tabel ophalen vanuit mysql
deze gegevens weergeven in een formulier en deze gegevens kunnen aanpassen/wijzigen op basis van hun groupID.
Met de huidige DBInfo en DBConnect voorbeelden kan ik alleen gegevens opslaan en niet ophalen,wijzigen, verwijderen.
Ik heb bijvoorbeeld een tabel
tblgroups met 2 velden,
GroupID(int) GroupName(varchar(15) GroupActive(tniyint)
Hier heb ik 10 waarden instaan
Deze waarden wil ik weergegeven in kolomvorm.
De groupActive een checkbox met waarde 0 of 1.
en... kunnen wijzigen in de velden zelf met erachter een opslaan/wijzig knop ofzo, of onderaan het formulier een knop om alle gewijzigde gegevens in 1 keer op te slaan.
Ik hoop dat jullie me kunnen helpen, alvast bedankt voor het goede werk. groet marcel.
Changed at 15 February 05 / 19:24
[edit] Note: code is niet getest![/edit]
Quote: Marcel
Met de huidige DBInfo en DBConnect voorbeelden kan ik alleen gegevens opslaan en niet ophalen,wijzigen, verwijderen.
Je kunt met FormHandler zeker wel records wijzigen...
index.php?id=<record-id>
Ik snap je "probleem". Je wilt eigenlijk meerdere records tegelijk wijzigen. Dit kun je doen, alleen moet je dan zelf de gegevens in het formulier zetten en bij opslaan zelf de database vullen.
Je zult sowieso een keuze moeten maken in alles opslaan in 1 keer of elk veld appart opslaan. Het zou wel kunnen zoals jij het wilt, alleen is erg ingewikkeld om te maken.
Voorbeeld:
<?php
// include FH
include("FH3/class.FormHandler.php");
// haal de records op
$sql = mysql_query("SELECT * FROM tblgroups")
or die(mysql_error());
// wel records gevonden?
if(mysql_num_rows($sql) == 0) {
echo "Geen records gevonden!";
} else {
// maak new formhandler object
$form =& new FromHandler();
// zet een masker voor 2 velden per rij
$form->setMask(
" <tr>\n".
" <td>%title%</td>\n".
" <td>%seperator%</td>\n".
" <td>%field% %error%</td>\n".
" <td> </td>\n".
" <td>%title%</td>\n".
" <td>%seperator%</td>\n".
" <td>%field% %error%</td>\n".
" </tr>\n",
true # repeat this mask!
);
// genereer de velden
$data = array();
while($row = mysql_fetch_assoc($sql)) {
$id = $row["GroupID"];
// sla de gegevens op voor later
$data[$id] = array(
$row["GroupName"],
$row["GroupActive"]
);
// button om het formulier te submitten
$form->submitButton("Opslaan");
// zet de data handler
$form->onCorrect('doSave');
// geef het formulier weer..
$form->flush();
}
// de data handler
function doSave( $posted ) {
global $data;
// loop alle originele waarden langs
foreach( $data as $id => $inf ) {
list($name, $active) = $inf;
// kijk of de waarden veranderd zijn
if($name != $posted['name_'.$id] ||
$active != $posted['active_'.$id])
{
// update record
$sql = mysql_query("
UPDATE tblgroups SET
GroupName = '".$posted['name_'.$id]."',
GroupActive = '".$posted['active_'.$id."'
WHERE GroupID = '".$id."'"
) or die(mysql_error());
}
}
// note voor de gebruiker
echo "De gegevens zijn opgeslagen!!";
}
Changed at 16 February 05 / 13:20
aleen...
$form->submitButton("Opslaan");
moet ik boven $setmask weergeven, anders laat hij hem niet zien. Hoe krijg ik die onder mijn formulier?