auf eine variable hinweisen

Alles, was PHP betrifft, kann hier besprochen werden.

Postby Wiedmann » 15. February 2006 14:59

ich suche eine Function mit der ich einen SubString in einem anderen MainString erkennen kann… soll ja oder nein zurückliefern oder die Posi des AnfangsChars….

Das macht man mit strpos().

Aber wie schon von anderen geschrieben... Im PHP-Manual gibt es eine wunderschöne Übersicht mit allen Stringfunktionen die es gibt...
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Makconner » 15. February 2006 15:09

sagtmal das ist doch richtig oder?

Code: Select all
//$tmp_suche ist der teilstring
//$Zeile[11] da steht der Vollstring
if(eregi($tmp_suche,$Zeile[11])==1)
{
print 'checked';
}
User avatar
Makconner
 
Posts: 153
Joined: 14. February 2006 16:00

Postby KingCrunch » 15. February 2006 15:34

Wenn die Länge des Teilstrings 1 ist, dann ja, würd aber eher nen Vergleich
Code: Select all
if(eregi($tmp_suche,$Zeile[11]) !== FALSE)
{
print 'checked';
}

Machen. In der Regel reicht auch
Code: Select all
if(eregi($tmp_suche,$Zeile[11]))
{
print 'checked';
}

vollkommen aus. Soweit ich das sehe ist der Vergleich über reguläre Ausdrücke bei dir aber ein wenig überdimensioniert (siehe strpos, was Wiedmann bereits erwähnte)
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby M3g4Star » 15. February 2006 15:41

Code: Select all
if (strpos($Zeile[11], $tmp_suche)) {
print 'checked';
}


<== so wäre das mit strpos()

:D
User avatar
M3g4Star
 
Posts: 145
Joined: 25. January 2006 07:46
Location: München

Postby Wiedmann » 15. February 2006 15:48

Code: Select all
if (strpos($Zeile[11], $tmp_suche)) {
    print 'checked';
}

<== so wäre das mit strpos()

Nicht ganz... richtig wäre:
Code: Select all
if (false !== strpos($Zeile[11], $tmp_suche)) {
    print 'checked';
}


(Im PHP-Manual kannst du nachlesen warum)
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby M3g4Star » 15. February 2006 15:51

ach echt ?????

muss man das false prüfen ????????????

:? ==> *hm* na gut ... ich dachte nur das das so auch klappt.

Weil strpos() gibt ja false zurück. wäre also deiner Meinung nach "unsauber" ??

if (false != strpos($Zeile[11], $tmp_suche)) {
print 'checked';
}

wenn dann "!=" :D :wink: ... ohhhh seh gerade "!==" und "===" geht auch :D

ach so und hier :
Wie im Abschnitt über Ausdrücke beschrieben, wird ausdr auf seinen boolschen Wertinhalt ausgewertet. Wenn ausdr als TRUE ausgewertet wird, führt PHP die Anweisung aus. Falls die Auswertung FALSE ergibt, wird die Anweisung übergangen.
Last edited by M3g4Star on 15. February 2006 16:02, edited 1 time in total.
User avatar
M3g4Star
 
Posts: 145
Joined: 25. January 2006 07:46
Location: München

Postby Wiedmann » 15. February 2006 16:02

Weil strpos() gibt ja false zurück. wäre also deiner Meinung nach "unsauber" ??

Stimmt. strpos() gibt "false" zurück, wenn der Suchbegriff nicht im String enthalten ist. Andernfalls bekommt man die Startposition geliefert. Bei der Startposition fängt strpos() aber bei "0" an zu zählen.

Deshalb muss man hier expliziet auf "false" prüfen, da ein einfacher Vergleich auf "0", durch die automatische Typkonvertierung von PHP, auch zu "false" evaluieren würde.

wenn dann "!="

Eben nicht, weil da könntest du es dann auch weglassen, da bei "!=" (einfache Überprüfung) macht PHP aus "0" ein "false" was ja hier nicht gewünscht wird. Bei "!==" (expliziete Überprüfung auch auf Typ des Wertes) wird dann nur ein "false" als "false" anerkannt.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby M3g4Star » 15. February 2006 16:05

*hm* ... recht hat er ...

if(0) ist auch false ... :(

*hm* --> fein ... wieder was gelernt auf das man achten sollte

:oops: :?

und das mit "===" und "!==" ist auch nett .. :idea:
User avatar
M3g4Star
 
Posts: 145
Joined: 25. January 2006 07:46
Location: München

Postby Makconner » 15. February 2006 17:48

Und ab zu einem anderen Thema.. trau mich gar nicht einen neuen Post deswegen aufzumachen... versuche es mal so... Ihr werdet es mir sicher gleich sagen...

Wir loggen uns alle auf irgendwelchen Seiten ein.. na ok.. soweit so gut... aber wie kann ich festhalten wer alles gerade online ist? .. wir sehen hier unten auf der Seite zum Beispiel welcher User gerade auf der Seite ist... wie mach ich das... also reden wir mal nur über Logik...
User avatar
Makconner
 
Posts: 153
Joined: 14. February 2006 16:00

Postby KingCrunch » 15. February 2006 17:53

Datenbank ;)
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby M3g4Star » 16. February 2006 08:40

Einfach das Feld in der Datenbank erstellen.

Wenn eingeloggt dann true ansonsten false .. oder mit 0 & 1

Einfach den boolschen Wert je nach Status ändern.

wer online ist wäre dann ne simple SQL abfrage.
User avatar
M3g4Star
 
Posts: 145
Joined: 25. January 2006 07:46
Location: München

Postby KingCrunch » 16. February 2006 11:25

Ich dachte da etwa banaler eine eigene kleine Tabelle erstellen mit Benutzernamen und Timestamp. Bei jeden Aufruf: Timestamp abgelaufen, löschen, den Rest ausgeben. Ich denke, das geht schneller, da man nicht über die gesamte Userliste iterieren muss.

Alternativ (was eigentlich schöneres SQL wäre): Eine Tabelle mit timestamp und Benutzerid und dann per JOIN (oda sowas) direkt bei der Abfrage den entsprechenden Benutzernamen auslesen. Bei anzunehmender Größe der Online-Liste ist das aber wahrscheinlich verschenkte Performance.

Der timestamp ist übrigens dafür da, dass man eine timeout-Zeit festlegt, nachdem ein Benutzer als offline erkannt wird. Ansonsten bleibt er nämlich ewig online, auch wenn er vieleicht nach Australien ausgewandert ist. Ne andere Methode fällt mir nicht ein, weil nicht jeder sich regulär ausloggt (wäre übrigens auch ein Grund ihn aus der Liste auszutragen).
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Makconner » 16. February 2006 15:02

Ja so in etwa dachte ich auch, aber habe ich gedacht das da jemand noch was besseres hat. Aber was ist eigentlich.. eingeloggt?

Ich hab das so gelöst, das eine SESSION_Variable gefüllt wird.. sobald der User das richtige Passwort zum Namen hat... wenn das Fenster geschlossen wird ist die Session ja geschlossen.... aber auf die Art muss der sich selber ausloggen, sonst gibt es keine Feststellung in der Datenbank. Einziger Ausweg ist halt der Zeitstempel... oder?

Andere Frage... wie viele SESSION_Variablen kann ich auf ein mal verwenden? Gibt es da eine Begrenzung? Hab mal irgendwo was von 20 gelesen.. kann mich aber auch irren.
User avatar
Makconner
 
Posts: 153
Joined: 14. February 2006 16:00

Postby KingCrunch » 16. February 2006 15:12

Mir ist
a) keine Begrenzung für Session-Variablen (Probier doch ma aus!)
b) keine andere Möglichkeit für das automatische ausloggen bekannt
bekannt... ;)

Das Problem (an b)) ist, dass man, wenn der Nutzer den Browser einfach so schließt, von der Serverseite aus nicht feststellbar ist, was nun eigentlich Sache is. Man könnte alle User quasi bei jeden Durchlauf einmal kurz pingen, aber in Zeiten von flatrate wird das unnutzbar.

----

PS: Also 20000 Variablen nimmt er noch :)
Last edited by KingCrunch on 16. February 2006 15:21, edited 1 time in total.
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Makconner » 16. February 2006 15:21

Da ist das Globalsetzen von Variablen doch nun völlig hinfällig… man nehme einfach eine Session_variable und sie geht plötzlich überall.
User avatar
Makconner
 
Posts: 153
Joined: 14. February 2006 16:00

PreviousNext

Return to PHP

Who is online

Users browsing this forum: No registered users and 2 guests