dedlfix: User direkt ansprechen und abspeichern

Beitrag lesen

Tach!

Jetzt kommt ein Problem wo ich nicht weiß wie ich es lösen kann. Wenn ein User direkt mit @ angesprochen wird, soll in eine weitere Tabelle ein Insert geschrieben werden. Das Insert ist kein Problem nur wie kann ich mit PHP Herausfinden ob ein User angesprochen wird? Das zweite Problem ich weiß nicht, wie viele User in einer Nachricht angesprochen werden.

Für beide Themen überleg dir erstmal in natürlicher Sprache, was du zu erreichen versuchst. Wenn du diesen Text auf Papier hast, wie ermittelst du den Nutzernamen? Vermutlich suchst du ein Vorkommen von @ und liest dann alles nachfolgende bis ein Zeichen folgt, das kein Buchstabe oder eine Zahl ist. Das schließt aus, dass Nutzer Leerzeichen im Namen haben können. Aber dann kann man sich eine andere Lösung ausdenken. Die Liste der Namen ist ja bekannt, also kannst du die Nutzer namen mit dem Text nach dem @ vergleichen, dann natürlich mit dem restlichen Text inklusive dem Teil nach dem ersten Whitespace. Wenn du gut bist, denkst du an Dinge wie Foo und Foobar, dass die längste Übereinstimmung zuerst gefunden wird. Also Nutzernamen rückwärts sortieren.

Die Anzahl der Nutzer ergibt sich aus dem Resultat der ersten Frage. Nach jedem @ gehst du die Prozedur durch und findest entweder einen Nutzer oder keinen. Am Ende hast du eine Liste der angesprochenen Nutzer und damit auch deren Anzahl.

Noch eine letzte Frage meinen Variablen z.B.

$tID = $_GET['code'];

Ich könnte in diesem Beispiel $_GET['code'] direkt an $stmt->bind_param übergeben. Wann ist es sinnvoll dieses zu tun bzw. wann ist es sinnvoll erst eine Variable anzulegen und diese dann an $stmt->bind_param zu übergeben?

Extra Variablen sind nie eine gute Idee, wenn du dafür keine Begründung geben kannst. Die Begründung kann auch auf Wissen mit Verbesserungspotenzial basieren, aber das ist eine andere Geschichte.

Möchte denn das bind_param von mysqli mit Array-Einträgen zusammenarbeiten? Wenn ja, dann gibt es keine Grund für eine weitere Variable. Wenn nicht, wäre zu überlegen, ob man nicht auf PDO umsteigt, denn das ist verwenderfreundlicher, weil es diese starre Bindung nicht braucht. Dem kann man ganz locker ohne vorheriges Binden ein Array im Execute übergeben.

dedlfix.