Moin an alle,
ich möchte gern mehrere Buttons erstellen, die meine ins Formular eingegeben Daten folgendermaßen manipulieren / bearbeiten:
1. "Speichern" - Soll die im Formular eingegeben Werte formatieren (ü in ü umwandeln, etc.) und dann per INSERT Befehl in meine MySQL-Datenbank speichern.
2. "Aktualisieren" - Soll die im Formular eingegeben Werte formatieren (ü in ü umwandeln, etc.) und dann per UPDATE Befehl in meine MySQL-Datenbank speichern.
3. "Abbrechen" - Soll alle Formularfelder leeren (bei Neuanlage Formular) ODER Felder auf die zuletzt gespeicherten Werte zurücksetzen (Formular zum Bearbeiten eines Datensatzes).
- Ich hatte schon an den Reset Button gedacht, aber der leert die Felder ja und setzt sie nicht auf den zuletzt gespeicherten Wert zurück, richtig?
4. "Löschen" - Soll den Datensatz per DELETE aus der Tabelle entfernen.
Ich habe bereits page_php_content Extension installiert und kann mir damit als Seiteninhalt meine Datensätze ausgeben lassen. Auch habe ich bereits ein Formular.
Nun ist für mich die Frage, wie ich die Buttons einstellen kann, um oben genannte Effekte zu erzielen.
Wo kommt das PHP hin, wie spreche ich die Buttons an, wie lese ich die Formularfelder aus? 🙂
MfG
Wenduros
Ich habe nun probiert über eine externe PHP Datei die Daten dann einzulesen und in die Datenbank zu schreiben mit folgendem Code im Seiteninhalt Typ = page_php_content :
<!--neuanlage_abc.php-->
<html>
<body>
<?PHP
if ($button_save==" Speichern ") {
include("db.php");
mysql_query("INSERT INTO
tbl_abc(Begriff,Beschreibung)VALUES('$begriff','$beschreibung')");
mysql_close();
?>
Die Daten wurden eingetragen<br>
<?PHP
} else { ?>
<form method="post" action="fileadmin/templates/php/neuanlage_abc.php">
<div id="div_form">
<table cellspacing="0" >
<tr style="height:40px">
<td>
<p class="kf_text">Begriff</p>
</td>
<td>
<input name="begriff" id="begriff" size="32" maxlength="50" type="text"/>
</td>
</tr>
<tr class="kf_style">
<td>
<p class="kf_text">Beschreibung</p>
</td>
<td>
<input name="beschreibung" id="beschreibung" size="32" maxlength="500" type="text"/>
</td>
</tr>
<tr>
<td></td>
<td style="text-align: right;">
<input type="submit" name="button_save" class="button" value="Speichern" />
</td>
</tr>
</table>
</div>
</form>
<?PHP
} ?>
</body>
</html>
Das Problem ist, dass es im Browser in meiner Webseite erst angezeigt wird, wenn man dann auf Speichern klickt lädt es eine leere Seite NOCHMAL mit dem Formular (wieder leere Inhalte) und wenn ich dann ausfülle und speichern drücke kommt die Fehlermeldung, dass kein TypoScript Template vorhanden ist.
Ich habe auch schon versucht mit:
tt_content.script = CASE
tt_content.script {
key.field = select_key
test = PHP_SCRIPT_EXT
test.file = fileadmin/templates/php/neuanlage_abc.php
}
und dann als Seiteninhalt Typ = Skript und Marker = test
Dort passiert nichts (die Webseite bleibt leer und zieht keine Daten).
MfG
Wenduros
Ich bin nun soweit:
Seite A hat als Seiteninhalt ein HTML-Formular, dass per action="index.php?id=B" an Seite B per POST die Daten sendet.
Seite B hat als Seiteninhalt PHP-Code der die POST-Variablen ausliest und in die MySQL-Datenbank abspeichert.
Solange ich nur 1 Button habe im HTML Formular klappt es auch alles einwandfrei.
Nun ist nur noch die Frage, wie spreche ich unterschiedliche PHP-Codes an, je nachdem, welchen Button ich anklicke, wenn ich mehrere Buttons pro Formular habe.
Mit isset geht es leider nicht, er macht keine Unterscheidung wahrscheinlich, denn auf meiner Seite wird nichts ausgegeben wenn ich das isset setze..
Ohne die Isset-Sachen geht es, aber das ist leider nur für 1 der Buttons eine Lösung.
<?php
If (isset($button_save)) {
$con = mysql_connect("localhost","blub", "123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("$db", $con);
$sql="INSERT INTO tbl_abc (Begriff, Beschreibung)
VALUES
('$_POST[begriff]','$_POST[beschreibung]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
mysql_close($con)
?>
<form name="neu_form" method="post" action="index.php?id=124">
<div id="div_form">
<table cellspacing="0" >
<tr style="height:40px">
<td>
<p class="kf_text">Datensatz angelegt!</p>
</td>
</tr>
<tr>
<td></td>
<td style="text-align: right;">
<input type="submit" name="button_save" class="button" value="Ok" />
</td>
</tr>
</table>
</div>
</form>
<?php
}
If (isset($button_cancel)) {
?>
<a href="index.php">Back To Index</a><br>
<?php } ?>
Wäre schön, wenn jemand schon eine Lösung für dieses Problem hat. Ich möchte ungern jeweils eine Seite anlegen pro verarbeitendes Formular bzw. PHP-Skript (Das wären dann jeweils 8 Seiten pro Datenbanktabelle..) also 8 * 20 Tabellen = 160 Seiten in Typo3 nur für Daten-Bearbeitung. Das würde ich gern auf EIN Formular und EIN PHP-Skript pro Tabelle beschränken, dass ich dann nur 40 Seiten brauche statt 160. #paralyzed#
MfG
Wenduros
Hab die Lösung nun gefunden 😉
die Buttons mussten natürlich auch als $_POST[button_save] bzw. $_POST[button_cancel] übergeben werden. #angry#
Thema ist erledigt, hoffe dass es wenigstens anderen hilft, wenn ich mich da schon allein durchboxen musste und das alles hier gepostet habe. #paralyzed#
MfG
Wenduros