Anführungszeichen setzen

#1
Hallo Zusammen,

ich wünsche Euch noch Frohe Weihnachten und sitze hier nicht nur vor der Gans, sondern auch vor einem Problem.

Ich muss dies
PHP:
 echo "<td><button onclick='document.getElementById(delform).style.display='block'class='delbtn'>Nachricht löschen</button></td>";
so anpassen, dass dann hinterher dies:
PHP:
<button onclick="document.getElementById('delform').style.display='block'">Nachricht löschen</button>
im Dokument steht. Leider verhau ich mich mit den Anführungszeichen immer komplett. Ich weiß nicht, wie ich das 'delform' in Anführungszeichen setzen kann. Ich gebrauche eine dritte Form der Anführungszeichen.

Und dann habe ich noch die Frage, warum das Ganze überhaupt funktioniert. Das getElementById ist doch Javascript. Wieso macht das was aus dem normalen HTML heraus??

Vielen Dank im Voraus!

VG
Umbriell
 
#2
Hi

da in der Zeile außer dem echo kein PHP ist, könnte man das einfach als HTML lassen:
PHP:
<?php
code code...
?>
<button onclick="document.getElementById('delform').style.display='block'">Nachricht löschen</button>
<?php
code code...
?>
Oder mit echo mit "
PHP:
<?php
code code...

echo "<button onclick=\"document.getElementById('delform').style.display='block'\">Nachricht löschen</button>";

code code...
?>
Oder mit echo mit '
PHP:
<?php
code code...

echo '<button onclick="document.getElementById(\'delform\').style.display=\'block\'">Nachricht löschen</button>';

code code...
?>
Siehe auch http://php.net/manual/de/language.types.string.php

Zum onclick: Ja, das ist JS drin, aber das ist in Ordnung. Es gibt eine Reihe von "Eventhandlern", die bei verschiedenen HTML-Elementen gesetzt werden können, und bei bestimmten Aktionen dann den JS-Code auslösen. onclick zB. für Draufklicken.
Hier eine Liste: http://www.w3schools.com/tags/ref_eventattributes.asp
Solche Events kann man codemäßig auch anders lösen, aber das ist zumindest eine Variante.
 
Zuletzt bearbeitet:
#3
Hi sheel,

besten Dank für die Antwort. Ich habe die Variante mit den " genommen, damit ich den Code einheitlich habe. Klappt jetzt wie gewollt.
Vor dem 'block der \ mußte nur noch weg, aber das habe ich nach etwas Grübeln selbst bemerkt.

Auch vielen Dank für die Erklärungen. Ich bin im Moment froh das es läuft, aber wenn Du sagst, dass man das codemäßig anders lösen kann, meinst Du dann nur anders oder meinst Du man kann es besser lösen?

VG
Umbriell
 
#4
Sorry, stimmt, ein \ war zu viel.

Zum anders lösen: Aus einem Script-Block mit purem JS-Code den Listener erzeugen geht. Zum "besser"...
a) Wenn man Scripte macht, die für verschiedene Seiten funktionieren sollen, ist es (natürlich) meistens besser, möglichst wenig Änderungen im HTML-Teil zu verlangen.
b) Für die Übersichtlichkeit usw. kann es helfen, alle Listener zB. an einer Stelle zu machen.
c) Manche Sachen sind generell nur mit der Voll-JS-Variante möglich.
 
#5
Hi,

nochmals besten Dank für die Antwort. Punkte a und b habe ich verstanden. Punkt c nehme ich mal so hin.

Ich habe aber bei meinen Konstrukt einen Gedankenfehler gehabt. Ich lese aus einer Datenbank Nachrichten für den eingeloggten User aus und packe die per PHP in einer Schleife in eine Tabelle. Mit dem Befehl von oben wird ein Button ans Ende einer Zeile gepackt. Mein Fehler lag nun darin, dass ich den Button nicht dem Datensatz zuordnen kann. In allen Zeilen wird bei den Buttons das gleiche ausgeführt, was vom Code her ja auch richtig, aber vom Gedanken her natürlich falsch ist.
Daher die Frage: Wie kann ich den Button der Zeile (und damit dem Datensatz) zuordnen, in der er steht?

Ist es da besser das ganze über einen Link zu regeln, dem man dann z.B. die ID mit übergeben kann?

Besten Dank im Voraus!

VG
Umbriell
 
#6
Hi,

ich rufe jetzt eine Funktion auf, der ich über den Button die ID übergebe. Damit habe ich die ID dann schonmal im Javascript und muss sie jetzt noch irgendwie ins PHP rüberbekommen. Mal sehen wie ich das mache.

PHP:
echo "<td><button onclick='loeschen(" . $row['id'] . ")'>Nachricht löschen</button></td>";
Besten Dank für die Hilfe!

VG
Umbriell