swiss cow: php in php ausgabe

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

  1. 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

    --
    -------------------
    When the only tool you've got is a hammer, all problems start to look like nails.
    1. 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

      1. 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

        --
        -------------------
        Inter Arma Enim Silent Leges  --  Cicero
        1. 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

          1. 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

            --
            -------------------
            There's no such thing as a free lunch  --  Milton Friedman
            1. Hi,

              Benutzt du einen Editor mit Syntaxhighlighting?

              nein. hast du grad nen tipp/link?

              swiss cow

              1. Hello,

                nein. hast du grad nen tipp/link?

                alleine um schnell loszulegen: Notepad2

                MfG
                Rouven

                --
                -------------------
                Inter Arma Enim Silent Leges  --  Cicero
          2. 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

  2. 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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

    1. 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?

      1. 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

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

        1. 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

          1. 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

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

            1. 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

              1. 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

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
                Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

        2. 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

          1. 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

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)