Möchte mein Problem nochmal detailliert schildern....
Hoffe ihr könnt mir dabei helfen.
Datensatz ändern
Meine Index-VIEW listet Termine in einer Tabelle mit jeweils einem Link und angehängter ID
<td>
<a class="btn btn-primary" href="<?= $this->getUrl(['action' => 'anzeigen', 'id' => $termin->getId()]); ?>">Anzeigen</a>
<a class="btn btn-warning" href="<?= $this->getUrl(['action' => 'bearbeiten', 'id' => $termin->getId()]); ?>">Bearbeiten</a>
<?php if ($admin == true){?>
<a class="btn btn-danger" href="<?= $this->getUrl(['action' => 'delete', 'id' => $termin->getId()]); ?>">Löschen</a>
<?php } ?>
</td>
Wenn ich nun einen Termin bearbeiten möchte, also Button bearbeiten klicke
(
http://localhost/ilch/index.php/mod1/index/bearbeiten/id/1)
Es wird meine bearbeitenAction aufgerufen und der Datensatz wird aus der Datenbank geholt und an die VIEW übergeben.
public function bearbeitenAction()
{
$TerminMapper= new TerminMapper();
if($this->getRequest()->getParam('id')) {
$id = $this->getRequest()->getParam('id');
$TerminArray = $TerminMapper->getTerminById($id);
$this->getView()->set('TerminArray', $TerminArray);
} else {
$this->redirect(['action' => 'index']);
}
}
Meine VIEW, ein Formular zeigt den Datensatz dann in den jeweiligen Inputs an.
<style>
.bg {
background-color: #fcf8e3;
}
</style>
<?php if ($this->get('TerminArray') != ''){
$daten = $this->get('TerminArray');?>
<?php
foreach ($daten as $daten):
?>
<div class="panel panel-primary">
<div class="panel-heading"><h2>Termin bearbeiten/ändern</h2></div>
<div class="panel-body">
<form class="well form-horizontal bg" action="" method="POST" >
<?=$this->getTokenField() ?>
<fieldset>
<!-- Verstecktes Feld -->
<input name="id" id="id" class="form-control" type="hidden" value="<?= $daten->getId();?>">
<!-- Feld ENDE -->
<div class="form-group">
<label class="col-md-4 control-label schrift">Matchcode</label>
<div class="col-md-4 inputGroupContainer">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-option-horizontal"></i></span>
<input name="matchcode" id="matchcode" pattern="[A-Z][A-Z][0-9]{3}$" class="form-control" type="text"
value="<?= $daten->getMatchcode();?>">
</div>
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label schrift" >Vorgang</label>
<div class="col-md-4 inputGroupContainer">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-option-horizontal"></i></span>
<input name="vorgang" id="vorgang" pattern="^[0-9]{4}$" class="form-control" type="text"
value="<?= $daten->getVorgang(); ?>">
</div>
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label schrift">Auswahl treffen:</label>
<div class="col-md-4 selectContainer">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-list"></i></span>
<select name="lieferung" id="lieferung" class="form-control selectpicker" >
<option value"bv">Zum Bauvorhaben</option>
<option value"platz">Zum Platz</option>
<option value"abholung">Abholung</option>
<option value"abruf">Abruf</option>
</select>
</div>
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label schrift">Name / Firma:</label>
<div class="col-md-4 inputGroupContainer">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
<input name="name" id="name" class="form-control" type="text"
value="<?= $daten->getName(); ?>">
</div>
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label schrift">Adresse:</label>
<div class="col-md-4 inputGroupContainer">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-list-alt"></i></span>
<input name="adresse" id="adresse" class="form-control" type="text"
value="<?= $daten->getAdresse(); ?>">
</div>
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label schrift">Hausnummer:</label>
<div class="col-md-4 inputGroupContainer">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-home"></i></span>
<input name="hausnummer" id="hausnummer" class="form-control" type="text"
value="<?= $daten->getHausnummer(); ?>">
</div>
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label schrift">Postleitzahl</label>
<div class="col-md-4 inputGroupContainer">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-home"></i></span>
<input name="plz" id="plz" pattern="^[0-9]{5}$" class="form-control" type="text "
value="<?= $daten->getPlz(); ?>">
</div>
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label schrift">Ort</label>
<div class="col-md-4 inputGroupContainer">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-home"></i></span>
<input name="ort" id="ort" class="form-control" type="text"
value="<?= $daten->getOrt(); ?>">
</div>
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label schrift">Lieferdatum</label>
<div class="col-md-4 inputGroupContainer">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-time"></i></span>
<input name="lieferdatum" id="lieferdatum" class="form-control" type="date"
value="<?= $daten->getLieferdatum(); ?>">
</div>
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label schrift">Uhrzeit (optional):</label>
<div class="col-md-4 inputGroupContainer">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-time"></i></span>
<input name="uhrzeit" id="uhrzeit" class="form-control" type="text"
value="<?= $daten->getUhrzeit(); ?>">
</div>
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label schrift">Telefon:</label>
<div class="col-md-4 inputGroupContainer">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-earphone"></i></span>
<input name="telefon" id="telefon" placeholder="Telefonnummer" class="form-control" type="text"
value="<?= $daten->getTelefon(); ?>">
</div>
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label schrift">Information</label>
<div class="col-md-4 inputGroupContainer">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-align-left"></i></span>
<textarea class="form-control" name="info" id="info" placeholder="Information zur Lieferung"
value="<?= $daten->getInfo(); ?>"></textarea>
</div>
</div>
</div>
<?php endforeach;
}?>
<a class="btn btn-primary" href="<?= $this->getUrl(['action' => 'speichern', 'id' => $daten->getId()]); ?>">Termin ändern</a>
</form>
</div>
</div>
</div>
<a href="<?= $this->getUrl(['action' => 'speichern']); ?>"><input type="submit" value="Termin ändern" /></a>
Hier kann ich dann meine Änderungen machen und mit Zeile 218 das Submit ausführen und die speichernAction aufrufen.
public function speichernAction()
{
$TerminMapper = new TerminMapper();
$Termin = new TerminModel();
if ($this->getRequest()->getPost('id')) {
$Termin->setId($this->getRequest()->getPost('id'));
}
$Termin->setId($this->getRequest()->getPost('id'))
->setMatchcode($this->getRequest()->getPost('matchcode'))
->setVorgang($this->getRequest()->getPost('vorgang'))
->setName($this->getRequest()->getPost('name'))
->setAdresse($this->getRequest()->getPost('adresse'))
->setHausnummer($this->getRequest()->getPost('hausnummer'))
->setPlz($this->getRequest()->getPost('plz'))
->setLieferdatum($this->getRequest()->getPost('lieferdatum'))
->setUhrzeit($this->getRequest()->getPost('uhrzeit'))
->setLieferung($this->getRequest()->getPost('lieferung'))
->setOrt($this->getRequest()->getPost('ort'))
->setInfo($this->getRequest()->getPost('info'));
$TerminMapper->save($Termin);
$this->redirect()
->withMessage('saveSuccess')
->to(['action' => 'index']);
if ($this->getRequest()->getPost('id')) {
$this->redirect()
->to(['action' => 'anzeigen', 'id' => $this->getRequest()->getPost('id')]);
} else {
$this->redirect()
->to(['action' => 'index']);
}
}
Bis hier läuft alles sauber durch. Bekomme sogar die Message "erfolgreich gespeichert (Zeile 31)"
Es wird aber leider
nichts gespeichert...
Hier nochmal die Mapper-Methode
public function save(TerminModel $Termin)
{
$fields = [
'id' => $Termin->getId(),
'matchcode' => $Termin->getMatchcode(),
'vorgang' => $Termin->getVorgang(),
'name' => $Termin->getName(),
'adresse' => $Termin->getAdresse(),
'hausnummer' => $Termin->getHausnummer(),
'plz' => $Termin->getPlz(),
'ort' => $Termin->getOrt(),
'lieferung' => $Termin->getLieferung(),
'lieferdatum' => $Termin->getLieferdatum(),
'uhrzeit' => $Termin->getUhrzeit(),
'info' => $Termin->getInfo(),
'telefon' => $Termin->getTelefon()
];
if ($fields['id']){
$this->db()->update('mod1')
->values($fields)
->where(['id' => $Termin->getId()])
->execute();
} else {
$this->db()->insert('mod1')
->values($fields)
->execute();
}
}
Habe jetzt schon viel probiert und versucht...komme ohne eure Hilfe aber nicht weiter....