PHP - MySQL-Ausgabe editieren
Hallo alle zusammen!
Ich bin gerade dabei ein Portal für meine Firma zu basteln. Hierbei sollen die User Protokolle aus Besprechungen speichern können.
Die Seite zeigt ganz oben immer zuerst die zu dieser Woche fälligen Protokollteile an. Das heißt, derzeit KW37. Nun soll man diese Ausgaben bearbeiten können.
Angenommen ich habe zu heute 5 fällige Ereignisse. Dann werden 5 Ereignisse angezeigt. Unter jedem Ereignis ist nun ein "bearbeiten" Button, jedoch ohne Funktion. Ich möchte erreichen, dass wenn man dort drauf drückt, dass man genau dieses Ereignis bearbeiten kann und mit einem klick auf "Ok" ("speichern" ist schon belegt) soll das ganze in der Datenbank aktualisiert werden.
Ich finde nichts passendes, welches ein ähnliches Verhalten herbeiführt. Viele lagern das aus in andere PHP Dateien etc.. Ist aber Aufbaubedingt nicht zu 100% möglich bei der Seite. Hier ist der Code von der Ausgabe:
Wenn ihr mehr Code braucht, kann ich noch mehr zur Verfügung stellen. Die Ausgabe funktioniert einwandfrei, jedoch das bearbeiten will nicht. Dieses Beispiel ist OHNE meine Versuche, die Bearbeitung zu implementieren.
DANKE!!
Gruß
Thoomaas
Ich bin gerade dabei ein Portal für meine Firma zu basteln. Hierbei sollen die User Protokolle aus Besprechungen speichern können.
Die Seite zeigt ganz oben immer zuerst die zu dieser Woche fälligen Protokollteile an. Das heißt, derzeit KW37. Nun soll man diese Ausgaben bearbeiten können.
Angenommen ich habe zu heute 5 fällige Ereignisse. Dann werden 5 Ereignisse angezeigt. Unter jedem Ereignis ist nun ein "bearbeiten" Button, jedoch ohne Funktion. Ich möchte erreichen, dass wenn man dort drauf drückt, dass man genau dieses Ereignis bearbeiten kann und mit einem klick auf "Ok" ("speichern" ist schon belegt) soll das ganze in der Datenbank aktualisiert werden.
Ich finde nichts passendes, welches ein ähnliches Verhalten herbeiführt. Viele lagern das aus in andere PHP Dateien etc.. Ist aber Aufbaubedingt nicht zu 100% möglich bei der Seite. Hier ist der Code von der Ausgabe:
<h2>Zu heute fällige Ereignisse</h2>
<?php
mysql_connect ('localhost', 'user', '123456');
mysql_select_db ($dbname);
$ausgabe = "SELECT * FROM protocol WHERE falligkeitsdatum LIKE '$year-W$week'";
$db_erg = mysql_query($ausgabe);
if (!$db_erg){
die(mysql_error());
}
while ($td = mysql_fetch_array($db_erg, MYSQL_ASSOC)){
echo "<div class='card'>";
echo "<div class='kategorie'><b>Kategorie</b><p>";
echo $td['kategorie'];
echo "</div>";
echo "<div class='zustandigkeit'><b>Zuständigkeit</b><p>";
echo $td['zustandigkeit'];
echo "</div>";
echo "<div class='datum'><b>Fälligkeitsdatum</b><p>";
echo $td['falligkeitsdatum'];
echo "</div>";
echo "<div class='lastprotokoll'>";
echo $td['content'];
echo "</div>";
echo "<div class='edit'>";
echo "<form action='' method='post'>";
echo "<input type='submit' class='edit-button' name='".$td['id']."' value='bearbeiten'/>";
echo "</form>";
echo "</div>";
echo "<div class='autor'>";
echo "Geschrieben von <a href='mailto:".$mail."?subject=Erinnerung&body=".$td['content']." Bitte%20klären!'>".$td['autor']."</a>";
echo "</div>";
echo "</div>";
}
?>
Wenn ihr mehr Code braucht, kann ich noch mehr zur Verfügung stellen. Die Ausgabe funktioniert einwandfrei, jedoch das bearbeiten will nicht. Dieses Beispiel ist OHNE meine Versuche, die Bearbeitung zu implementieren.
DANKE!!
Gruß
Thoomaas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 282496
Url: https://administrator.de/contentid/282496
Ausgedruckt am: 16.11.2024 um 19:11 Uhr
19 Kommentare
Neuester Kommentar
Also ich habe das, wobei das eher die unsaubere Variante so gelöst, dass ich bei der Ausgabe quasi einen Link angebe, bei der dann die DatensatzID via $_GET mitgegeben wird, und ein bestätigungsfeld wie "edit=1" o.Ä. Anschließend habe ich ein if eingebaut dass eben jede Get abfragt und dann mit den daten arbeitet
Ich setzte also einen link auf die datei selbst lizenz.php dann zwei Get Parameter uid und liz/zuord <- die dienen mir für folgendes Formular als Schlüssel zum anzeigen
und hier frage ich dann wie oben erwähnt das "zuord" ab und zeige dann entsprechend die Tabelle an. Füge dann da via MYSQL Query die Daten ein und gebe das dann an ein Verarbeitendes Script via $_POST weiter wenn ich die bearbeitet hab
echo "<td width=\"150px\">";
printf("<a id=\"loeschen\" href=\"../func/lizenz_loeschen.php?uid=$row[5]&liz=1\">Lizenz Löschen</a>");
echo "</td>";
echo "<td width=\"200px\">";
printf("<a id=\"loeschen\" href=\"../func/lizenz_loeschen.php?uid=$row[5]&zuord=1\">Zuordnung löschen</a>");
echo "</td>";
echo "<td width=\"200px\">";
printf("<a id=\"loeschen\" href=\"../content/lizenz.php?uid=$row[5]&zuord=1\">Zuordnung bearbeiten</a>");
echo "</td>";
Ich setzte also einen link auf die datei selbst lizenz.php dann zwei Get Parameter uid und liz/zuord <- die dienen mir für folgendes Formular als Schlüssel zum anzeigen
if(isset($_GET["zuord"])){
if($_GET["zuord"] == 1){
$res = $mysqli->query("Select * from Lizenztyp");
$res2 = $mysqli->query("Select * from Mitarbeiternamen");
$res3 = $mysqli->query("Select LizSum.LizenzID, Liz.Lizenznummer, LizTyp.LizenztypName, LizSum.Lizenz_sumID from Lizenz_sum as LizSum left outer join lizenzen as Liz on LizSum.LizenzID = Liz.Lizenzid left outer join Lizenztyp as LizTyp on Liz.LizenztypID = LizTyp.LizenztypID");
$row2 = $res3->fetch_assoc();
?>
<form action="../func/lizenz_eintragen.php?updt=1" method="post">
<input type="hidden" name="lizenzid" id="lizenzid" value="<?php echo $row2["Lizenz_sumID"] ?>" />
<label for="lizenz">Lizenznummer</label>
<input type="text" id="lizenz" size="24" maxlength="50" name="lizenz" value="<?php echo $row2["Lizenznummer"]; ?>" /><br />
<label for="mitarbeiter">Mitarbeiter</label>
<input list="mitarbeiter" name="mitarbeiter">
<datalist id="mitarbeiter">
<?php while($row = $res2->fetch_row()){
echo "<option value=\"$row\">$row[2] $row[1]</option>";
}
?>
</datalist>
<label for="lizenztyp">Lizenztyp</label>
<select name="lizenztyp" id="lizenztyp" >
<?php while($row = $res->fetch_row()){
echo "<option value=\"$row\">$row[1]</option>";
}
?>
</select>
<input type="submit" value="Abschicken">
</form>
und hier frage ich dann wie oben erwähnt das "zuord" ab und zeige dann entsprechend die Tabelle an. Füge dann da via MYSQL Query die Daten ein und gebe das dann an ein Verarbeitendes Script via $_POST weiter wenn ich die bearbeitet hab
Moin,
wenn ich dich richtig verstehe willst du die Daten "inline" editieren - also ohne das die anzeigende Seite neu lädt oder eine neu Seite geladen wird, richtig?
Das wirst du mit "normalen" PHP/HTML nicht hinbekommen. Dafür musst du dann eintsprechende AJAX Funbktionilität in deine Seite einbauen (z.b. über jQuery ohne ähnliche Frameworks). Das mach die Seite aber um den Faktor 5 komplizierter.
lg,
Slainte
wenn ich dich richtig verstehe willst du die Daten "inline" editieren - also ohne das die anzeigende Seite neu lädt oder eine neu Seite geladen wird, richtig?
Das wirst du mit "normalen" PHP/HTML nicht hinbekommen. Dafür musst du dann eintsprechende AJAX Funbktionilität in deine Seite einbauen (z.b. über jQuery ohne ähnliche Frameworks). Das mach die Seite aber um den Faktor 5 komplizierter.
lg,
Slainte
Hallo,
die frage ist grundstätzlich wie du dir das mal vorstellst.
Kommt dann ein neues Fenster wo du die Werte ändern kannst, denn in dem Code finde ich jetzt kein Formularfeld wo man Werte ändern kann.
Aber im Endeffekt must du per POST ein SQL Statement abgeben das die die Werte in die Datenbank schreibt mehr nicht.
die frage ist grundstätzlich wie du dir das mal vorstellst.
Kommt dann ein neues Fenster wo du die Werte ändern kannst, denn in dem Code finde ich jetzt kein Formularfeld wo man Werte ändern kann.
Aber im Endeffekt must du per POST ein SQL Statement abgeben das die die Werte in die Datenbank schreibt mehr nicht.
$zustandigkeit = $_POST['zustandigkeit'];
[...]
VALUES ('$zeileid', '$protokoll', '$datum', '$kategorie', '$zustandigkeit', '$_SESSION[username]')")
mysql_real_escape_string ist hier dein Freund
Wie ändere ich das nun geschickt um, sodass nur dieser eine Eintrag bearbeitet wird?
Das verstehe ich nicht ganz. Was genau funktioniert jetzt nicht? der INSERT?Im Anschluss die gleiche Maske die beim erstellen eines neuen Protokolls angezeigt wird als values mit den Daten aus der Datenbank füllen und bei
einem klick auf den Button "speichern" werden die Inhalte mit einem Update-Befehl (?) in die Datenbank zurückgeschrieben. Denke ich soweit richtig?
einem klick auf den Button "speichern" werden die Inhalte mit einem Update-Befehl (?) in die Datenbank zurückgeschrieben. Denke ich soweit richtig?
Ja, richtig .)
Hallo!
Wie wird der Wert derzeit an edit.php übergeben per POST oder GET?
Edit:
Mein Lösungsvorschlag wäre, bei jedem Klick auf den Edit-Button ein PHP-Script aufzurufen, welches den aktuellen Wert in eine Session-Variable schreibt.
Danach wird die aktuelle Seite neu aufgerufen und beim entsprechenden Eintrag mittels IF überprüft ob die aktuelle Session-Variable den gleichen Wert hat wie die der ID des Eintrages. Falls Ja, wird ein Include edit.php ausgeführt.
Hat den Vorteil, dass alles immer auf der selben Seite ist.
Ich hoffe ich habe mich verständlich ausgedrückt.
Gruß
Eisbein
Wie wird der Wert derzeit an edit.php übergeben per POST oder GET?
Edit:
Mein Lösungsvorschlag wäre, bei jedem Klick auf den Edit-Button ein PHP-Script aufzurufen, welches den aktuellen Wert in eine Session-Variable schreibt.
Danach wird die aktuelle Seite neu aufgerufen und beim entsprechenden Eintrag mittels IF überprüft ob die aktuelle Session-Variable den gleichen Wert hat wie die der ID des Eintrages. Falls Ja, wird ein Include edit.php ausgeführt.
Hat den Vorteil, dass alles immer auf der selben Seite ist.
Ich hoffe ich habe mich verständlich ausgedrückt.
Gruß
Eisbein
Hallo!
Nochmals, da ich den letzten Eintrag bearbeitet habe.
Mein Lösungsvorschlag wäre, bei jedem Klick auf den Edit-Button ein PHP-Script aufzurufen, welches den aktuellen Wert in eine Session-Variable schreibt.
Danach wird die aktuelle Seite neu aufgerufen und beim entsprechenden Eintrag mittels IF überprüft ob die aktuelle Session-Variable den gleichen Wert hat wie die der ID des Eintrages. Falls Ja, wird ein Include edit.php ausgeführt.
Hat den Vorteil, dass alles immer auf der selben Seite ist.
Ich hoffe ich habe mich verständlich ausgedrückt.
Gruß
Eisbein
Nochmals, da ich den letzten Eintrag bearbeitet habe.
Mein Lösungsvorschlag wäre, bei jedem Klick auf den Edit-Button ein PHP-Script aufzurufen, welches den aktuellen Wert in eine Session-Variable schreibt.
Danach wird die aktuelle Seite neu aufgerufen und beim entsprechenden Eintrag mittels IF überprüft ob die aktuelle Session-Variable den gleichen Wert hat wie die der ID des Eintrages. Falls Ja, wird ein Include edit.php ausgeführt.
Hat den Vorteil, dass alles immer auf der selben Seite ist.
Ich hoffe ich habe mich verständlich ausgedrückt.
Gruß
Eisbein
Ich bin eher an den Sessions interessiert. Diese habe ich ja bereits. Nur die Variable in Sessions übergeben...Das habe ich auch mit anderen Foren noch nicht 100%ig gerafft.
<?php
session_start();
$_SESSION['farbe'] = 'grün';
?>
Somit wird der Session-Variable "farbe" der Wert "grün" zugeordnet.
Gruß
Eisbein