echo "<td><a href='#' onclick=javascript:updatesong('".$dsatz['song']."','".$dsatz['tid']."');>
".$dsatz['song']."</a></td>";
Es mag auf den ersten Blick kürzer scheinen, HTML-Code in PHP unterzubringen und mit echo auszugeben, aber der Vorteil von PHP ist gerade, umgekehrt PHP-Code in HTML unterzubringen. Das heißt, du startest mit diesem HTML:
<td><a href="#" onclick="updatesong('X', 'Y')">Z</a></td>
X, Y und Z mal als Platzhalter. Dort montierst du nun die Variablen hinein. Sinnvollerweise maskierst du gleich eventuelle Anführungszeichen in deren Werten.
Allerdings scheint X dasselbe wie Z zu sein, daher brauchst du dieselbe Information nicht zweimal im HTML unterbringen, sondern kannst im JavaScript auf den Textknoten im a-Element zugreifen. Dabei kommt dann heraus:
<td><a href="#" onclick="updatesong(this.firstChild.nodeValue, '<?php echo htmlspcialchars($dsatz['tid'], ENT_QUOTES); ?>')"><?php echo htmlspcialchars($dsatz['song'], ENT_QUOTES); ?></a></td>
Ein weiterer Schritt wäre, HTML- und JavaScript-Code zu trennen und dieses Event-Handling mit JavaScript anzustoßen. Vermutlich hast du viele td-Elemente mit Links. Es würde ausreichen, einem übergeordneten Element einen click-Handler zu geben, der alle a-Elemente überwacht. Da du eine Tabelle hast, könnte das übergeordnete Element ein tr- oder das table-Element sein. Dem verpasst du eine ID, um es einfacher in JavaScript ansprechen zu können.
// Nach dem Laden des Dokuments führe aus:
window.onload = function () {
// Vergebe click-Handler an das Element mit der ID tabelle:
document.getElementById("tabelle").onclick = handleSongClicks;
};
function handleSongClicks (e) {
if (!e) e = window.event;
// Prüfe Zielelement
var zielElement = e.target || e.srcElement;
if (e.nodeName != "A") return;
// Falls ein a-Element angeklickt wurde, fülle Formularfelder:
document.eingabe.song.value = this.firstChild.nodeValue;
document.eingabe.tid.value = this.title;
}
Siehe https://redaktion.selfhtml.org/selfhtml-preview/javascript/einbindung.html
Die "tid" habe ich jetzt mal im title-Attribut untergebracht, der HTML-Code müsste also einfach lauten:
<td><a href="#" title="<?php echo htmlspcialchars($dsatz['tid'], ENT_QUOTES); ?>"><?php echo htmlspcialchars($dsatz['song'], ENT_QUOTES); ?></a></td>
Mathias