php in php ausgabe
swiss cow
- php
Hello again!
----------------------------------
Projekt: passwortgeschützter chat
----------------------------------
Problem: Löschen der Nachricht
Bedingung: nur verfasser des eintrags soll ihn löschen können
Nach einem query
mysql_query(SELECT * FROM table....)
gebe ich alle inhalte mit einer
WHILE-schleife
in einer tabelle aus:
echo "
<table>
<tr>
<td> $user schreibt: </td>
<td> INHALT </td>
</tr>
</table>";
-----------
FRAGE
-----------
wie kann ich innerhalb dieser Tabelle jetzt PHP verwenden?
Ich versuche gerade folgenden Code einzubauen:
<?php
if($result1->user == $user)
{
echo '<a href='xy.php'>löschen</a>';
}
?>
darauf wird aber nur der Teil:
löschen'; } ?>
ausgegeben!
...wo liegt der Fehler?
Danke
Hello,
echo '<a href='xy.php'>löschen</a>';
...wo liegt der Fehler?
in der inkonsequenten Verwendung von Anführungszeichen, siehe Unterschiede zwischen einfachen bzw. doppelten Anführungszeichen und notwendige Maskierungen im PHP Manual.
MfG
Rouven
Hi,
echo '<a href='xy.php'>löschen</a>';
...wo liegt der Fehler?
Unterschiede zwischen einfachen bzw. doppelten Anführungszeichen...
bei allen anderen varianten kommt aber eine Fehlermeldung auf die zeile wo ein doppeltes Anführungszeichen steht...
wärst du vielleicht so lieb und sagst mir WELCHE anführungszeichen ich ändern muss?
liebe grüsse
swiss cow
Hello,
echo '<a href='xy.php'>löschen</a>';
du möchtest _einen_ String, der von Anfang bis Ende geht und in der Mitte etwas stehen hat, das Anführungszeichen hat. Damit bleiben dir zwei Möglichkeiten:
echo "<a href='xy.php'>löschen</a>";
echo '<a href="xy.php">löschen</a>';
und zusätzlich die Varianten mit maskierten Anführungszeichen:
echo "<a href="xy.php">löschen</a>";
echo '<a href='xy.php'>löschen</a>';
MfG
Rouven
Hello again,
bleiben dir zwei Möglichkeiten:
1. »» echo "<a href='xy.php'>löschen</a>";
2. »» echo '<a href="xy.php">löschen</a>';
und zusätzlich die Varianten mit maskierten Anführungszeichen:
3. »» echo "<a href="xy.php">löschen</a>";
4. »» echo '<a href='xy.php'>löschen</a>';
Ich habe nun alle vier Varianten ausprobiert.
leider ohne Erfolg.
bei 1. PARSE ERROR: unexpected T_STRING, expecting ',' or ';' in...
bei 2. PARSE ERROR: unexpected T_STRING, expecting ',' or ';' in...
bei 3. PARSE ERROR: unexpected T_STRING, expecting ',' or ';' in...
bei 4. erscheint die Seite - aber wieder nur mit: löschen'; } ?>
eine weitere Variante war 4. ohne backslash. diese gibt selbes resultat wie 4.
so weit war ich ja bereits als ich die frage stellte...
was kann ich noch versuchen?
liebe grüsse
swiss cow
Hello,
bei 1. PARSE ERROR: unexpected T_STRING, expecting ',' or ';' in...
bei 2. PARSE ERROR: unexpected T_STRING, expecting ',' or ';' in...
bei 3. PARSE ERROR: unexpected T_STRING, expecting ',' or ';' in...
bei 4. erscheint die Seite - aber wieder nur mit: löschen'; } ?>
dann hast du schon ein gutes Stück vorher ein Anführungszeichen, das nicht stimmt. Benutzt du einen Editor mit Syntaxhighlighting? Der sollte bei der Fehlersuche helfen.
MfG
Rouven
Hi,
Benutzt du einen Editor mit Syntaxhighlighting?
nein. hast du grad nen tipp/link?
swiss cow
Hello,
nein. hast du grad nen tipp/link?
alleine um schnell loszulegen: Notepad2
MfG
Rouven
Mahlzeit,
bei 1. PARSE ERROR: unexpected T_STRING, expecting ',' or ';' in...
bei 2. PARSE ERROR: unexpected T_STRING, expecting ',' or ';' in...
bei 3. PARSE ERROR: unexpected T_STRING, expecting ',' or ';' in...
bei 4. erscheint die Seite - aber wieder nur mit: löschen'; } ?>
Wie GENAU sieht dein Code aus? Ganz offenbar besteht er NICHT nur aus der Zeile mit "echo [...]" ...
MfG,
EKKi
Hello,
Aus der Client-Server Technik der frühen IT-Tage stammt das Schema
Eingabe
Verarbeitung
Ausgabe
Webprogrammierung ist eine solche Client-Server-technik, quasi eine Renaissance der Steinzeit-EDV
Also halte Dich immer an das Schema und es geht Dir gut. Selbstverständlich sind heute Abweichungen davon möglich mit "intelligenten Clients", die dann CSS (statische Regeln), JavaScript (dynamische Regeln und (Re-)Aktionen) usw. beherrschen.
Auftrag geben zum Anzeigen der Liste
Liste beschaffen
Liste anzigen lassen
Auftrag geben zum Löschen eines Satzes
Satz löschen
verbliebene Liste anzeigen lassen
DELETE from $tablename
where id
= $id and owner
= $userid;
## Rückbgabewerte von DELETE abfragen zur Kontolle ob es geklappt hat
## (Fehler-)Meldung generieren
SELECT $fliedlist
from $tablename
limit $offset,$range
## Ausgabe der Erfolgs- oder Fehlermeldung und der neuen Liste
Alle an die Datenbank übergebenen Werte müssen vorher überprüft (numerische und logische Werte) bzw. escaped (alle anderen Werte) werden.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Hallo Tom,
erst mal DANKE für deine geduldigen antworten. :)
Eingabe
Verarbeitung
Ausgabe
1. »» Auftrag geben zum Anzeigen der Liste
»» Liste beschaffen
»» Liste anzigen lassen
2. »» Auftrag geben zum Löschen eines Satzes
»» Satz löschen
»» verbliebene Liste anzeigen lassen
ich möchte ja nichts anderes aber um zu löschen möchte/muss ich bei jedem eintrag einen Link "löschen" anzeigen. und dafür möchte ich eben diesen code verwenden:
if($result1->user == $user)
{
echo "
<a href='chat.php?action=erase'>löschen</a>
"; } ?>
oder hast du eine andere lösung?
Hello,
ich möchte ja nichts anderes aber um zu löschen möchte/muss ich bei jedem eintrag einen Link "löschen" anzeigen. und dafür möchte ich eben diesen code verwenden:
if($result1->user == $user)
{
echo "<input type="submit"a name="btn[delete][" .$result->id. "] value="löschen" />";
}
OK, jetzt habe ich Dich verstanden.
Sowas würde ich keinesfalls mit einem Link machen, sondern mit einem Submit-Button.
Dieser könnte heißen "btn[delete][$id]"
im Script dann später
$id = 0;
if (isset($_POST['btn']['delete']) and is_array $_POST['btn']['delete'])
{
if (count($_POST['btn']['delete']) == 1) ## es kann nur einen geben, Paranoia Paranoia *g*
{
$id = intval(key(count($_POST['btn']['delete']))
}
}
Und dann das schon bekannte Delete-Statement von vorhin.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Hallo!
OK, jetzt habe ich Dich verstanden.
.... löschen eines Datensatzes ....
Sowas würde ich keinesfalls mit einem Link machen, sondern mit einem Submit-Button.
Warum?
mfg
frafu
Hello,
Sowas würde ich keinesfalls mit einem Link machen, sondern mit einem Submit-Button.
Per POST ist da gemeint, was aber aus dem folgenden Text hervorgeht!
Warum?
Weil seriöse Suchmaschinen keine Posts an Ressourcen versenden, wohl aber in regelmäßigen Abständen Links verfolgen. Und wer garantiert dafür, dass so ein Link nicht mal vagabundiert, auch wenn er hier nur für einen "eingeloggten" User generiert wird.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Hallo!
Weil seriöse Suchmaschinen keine Posts an Ressourcen versenden, wohl aber in regelmäßigen Abständen Links verfolgen. Und wer garantiert dafür, dass so ein Link nicht mal vagabundiert, auch wenn er hier nur für einen "eingeloggten" User generiert wird.
Gutes Argument. Wenns aber ums Löschen von Inhalten geht, dann gehe ich davon aus, dass das nur eingeloggte User können und dass vor dem Löschen noch mal überprüft wird, ob der User auch tatsächlich eingelogged und die Rechte zum Löschen hat.
Das ganze per Post ist dann wahrscheinlich noch das Tüpfelchen auf dem i.
mfg
frafu
Hello,
Gutes Argument. Wenns aber ums Löschen von Inhalten geht, dann gehe ich davon aus, dass das nur eingeloggte User können und dass vor dem Löschen noch mal überprüft wird, ob der User auch tatsächlich eingelogged und die Rechte zum Löschen hat.
Das ganze per Post ist dann wahrscheinlich noch das Tüpfelchen auf dem i.
Es geht ja auch um Lastvermeidung.
Wenn so ein Link erstmal in eine Suchmaschine hineingeraten ist, dann hast Du täglich 100 Besucher und mehr darauf. Und von diesen sind inzwischen eine ganze Menge "Probierer"
Die rattern dann einfach die numerischen Parameter durch. Ordinalität machts möglich.
Man könnte ja was finden.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
guten abend... mittlerweile :)
ich kriegs grad nicht hin.
aber ich wills nicht so stehen lassen!
es MUSS einfach gehen.
trotzdem fährt mein zug ohne rücksicht in zehn minuten, was mich zwingt für heute schluss zu machen... ;)
darf ich mich morgen per mail bei dir melden?
liebe grüsse
swiss cow
Hello,
darf ich mich morgen per mail bei dir melden?
Du darfst uch gerne morgen hier im Forum weiterposten.
Ich nehme an, dass der Thread dann immer noch da ist.
Sooo fleißig sind wir im Moment nicht, dass er nur einen Tag überleben würde.
Schließlich interessieren sich auch noch Andere für die Lösungen.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom